Merge branch 'master' of github.com:navi-ppl/cybertron into TP-55555/error-log-consumer
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
httpclient "cybertron/pkg/httpClient"
|
||||
"cybertron/pkg/kafka/producer"
|
||||
"cybertron/pkg/log"
|
||||
"cybertron/pkg/mjolnirClient"
|
||||
"cybertron/service"
|
||||
|
||||
"go.uber.org/zap"
|
||||
@@ -31,6 +32,7 @@ type Service struct {
|
||||
SourceMapService *service.SourceMapService
|
||||
ReleaseService *service.ReleaseService
|
||||
ExceptionService *service.ExceptionService
|
||||
AuthService *service.AuthService
|
||||
SearchService *service.SearchService
|
||||
S3Client *aws.Actions
|
||||
// Add your service here
|
||||
@@ -58,6 +60,7 @@ func InitDependencies() *Dependencies {
|
||||
s3Client := aws.NewS3client(*configs.GetAWSConfig())
|
||||
kafkaProducer := initKafkaProducer()
|
||||
elasticSearch, _ := elastic.NewElasticClient(*configs.GetElasticConfig())
|
||||
mjolnirClient := mjolnirClient.NewMjolnirClient(*configs.GetMjolnirConfig())
|
||||
|
||||
documentServiceClient := document.NewDocumentServiceHttpClient(httpClient, logger, configs.GetDocumentServiceHttpClientConfigs())
|
||||
projectServiceClient := service.NewProjectCreator(logger, dbClient, s3Client, kafkaProducer)
|
||||
@@ -65,9 +68,11 @@ func InitDependencies() *Dependencies {
|
||||
releaseServiceClient := service.NewReleaseService(logger, dbClient)
|
||||
exceptionServiceClient := service.NewExceptionService(logger, dbClient, kafkaProducer)
|
||||
searchServiceClient := service.NewSearchService(logger, elasticSearch)
|
||||
authService := service.NewAuthService(mjolnirClient)
|
||||
|
||||
services := initServices(documentServiceClient, projectServiceClient, sourceMapServiceClient, releaseServiceClient, exceptionServiceClient, searchServiceClient)
|
||||
services := initServices(documentServiceClient, projectServiceClient, sourceMapServiceClient, releaseServiceClient, exceptionServiceClient, searchServiceClient, authService)
|
||||
handlers := initHandlers(projectServiceClient, sourceMapServiceClient, releaseServiceClient, exceptionServiceClient, searchServiceClient)
|
||||
|
||||
return &Dependencies{
|
||||
Service: services,
|
||||
DBClient: dbClient,
|
||||
@@ -77,7 +82,7 @@ func InitDependencies() *Dependencies {
|
||||
}
|
||||
}
|
||||
|
||||
func initServices(documentService *document.HttpClient, projectService *service.ProjectCreator, sourceMapService *service.SourceMapService, releaseService *service.ReleaseService, exceptionService *service.ExceptionService, searchService *service.SearchService) *Service {
|
||||
func initServices(documentService *document.HttpClient, projectService *service.ProjectCreator, sourceMapService *service.SourceMapService, releaseService *service.ReleaseService, exceptionService *service.ExceptionService, searchService *service.SearchService, authService *service.AuthService) *Service {
|
||||
return &Service{
|
||||
DocumentService: documentService,
|
||||
ProjectService: projectService,
|
||||
@@ -85,6 +90,7 @@ func initServices(documentService *document.HttpClient, projectService *service.
|
||||
ReleaseService: releaseService,
|
||||
ExceptionService: exceptionService,
|
||||
SearchService: searchService,
|
||||
AuthService: authService,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
52
internal/transport/middleware/permission_middleware.go
Normal file
52
internal/transport/middleware/permission_middleware.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"cybertron/constants"
|
||||
"cybertron/service"
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type UserInfo struct {
|
||||
SessionToken string `json:"sessionToken"`
|
||||
ClientID string `json:"clientId"`
|
||||
Name string `json:"name"`
|
||||
Exp int `json:"exp"`
|
||||
EmailID string `json:"emailId"`
|
||||
AccountID string `json:"accountId"`
|
||||
PhoneNumber string `json:"phoneNumber"`
|
||||
Roles []string `json:"roles"`
|
||||
Groups []string `json:"groups"`
|
||||
Permissions []string `json:"permissions"`
|
||||
FirebaseJwtToken string `json:"firebaseJwtToken"`
|
||||
FirebaseNode string `json:"firebaseNode"`
|
||||
ProfilePictureURL string `json:"profilePictureUrl"`
|
||||
PreferredUsername string `json:"preferred_username"`
|
||||
}
|
||||
|
||||
func PermissionMiddleware(authService *service.AuthService) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
|
||||
sessionToken := c.GetHeader(constants.SESSION_HEADER_NAME)
|
||||
userEmail := c.GetHeader(constants.EMAIL_HEADER_NAME)
|
||||
|
||||
validUser, err := authService.CheckValidUser(c, sessionToken, userEmail)
|
||||
if err != nil || !validUser {
|
||||
c.JSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"})
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
func isAdmin(roles []string) bool {
|
||||
for _, role := range roles {
|
||||
if role == "Admin" {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package transport
|
||||
|
||||
import (
|
||||
"cybertron/internal/transport/middleware"
|
||||
"cybertron/internal/transport/router"
|
||||
"fmt"
|
||||
"github.com/gin-contrib/cors"
|
||||
@@ -48,6 +49,7 @@ func (s *Server) Start() {
|
||||
AllowCredentials: true,
|
||||
MaxAge: 24 * time.Hour,
|
||||
}))
|
||||
s.gin.Use(middleware.PermissionMiddleware(s.dependencies.Service.AuthService))
|
||||
s.router()
|
||||
|
||||
port := configs.GetPort()
|
||||
|
||||
Reference in New Issue
Block a user