Merge branch 'master' of github.com:navi-ppl/cybertron into TP-55555/error-log-consumer

This commit is contained in:
varnit-goyal_navi
2024-09-09 07:56:23 +05:30
13 changed files with 237 additions and 22 deletions

View File

@@ -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,
}
}

View 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
}

View File

@@ -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()