TP-61307 | Auth middileware and relase service changes

This commit is contained in:
Lokesh Dugar
2024-08-27 13:40:31 +05:30
parent 5ac5f89134
commit f537e30cac
13 changed files with 237 additions and 22 deletions

34
service/AuthService.go Normal file
View File

@@ -0,0 +1,34 @@
package service
import (
"cybertron/pkg/mjolnirClient"
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
type AuthService struct {
mjolnirClient *mjolnirClient.MjolnirClient
}
func NewAuthService(mjolnirClient *mjolnirClient.MjolnirClient) *AuthService {
return &AuthService{
mjolnirClient: mjolnirClient,
}
}
type UserRoles string
func (authService *AuthService) CheckValidUser(c *gin.Context, sessionToken, userEmail string) (bool, error) {
sessionResponse, err := authService.mjolnirClient.GetSessionResponse(sessionToken)
if err != nil || sessionResponse.StatusCode == http.StatusUnauthorized {
return false, err
}
if sessionResponse.EmailId != userEmail {
return false, fmt.Errorf("user email: %v does not match the email linked to the session token", userEmail)
}
c.Set("permissions", sessionResponse.Permissions)
return true, nil
}

View File

@@ -14,9 +14,8 @@ type ReleaseService struct {
}
type ReleaseBody struct {
ProjectId string `json:"project_id" binding:"required"`
Version string `json:"version" binding:"required"`
SourceMapUrl string `json:"source_map_url" binding:"required"`
ProjectReferenceId string `json:"projectReferenceId" binding:"required"`
ReleaseVersion string `json:"releaseVersion" binding:"required"`
}
func NewReleaseService(logger *log.Logger, dbClient *gorm.DB) *ReleaseService {
@@ -26,7 +25,6 @@ func NewReleaseService(logger *log.Logger, dbClient *gorm.DB) *ReleaseService {
}
}
// FIXME: This may not be requried now, can be used in source maps services only
func (releaseService *ReleaseService) AddRelease(c *gin.Context) {
var releaseBody ReleaseBody
if err := c.BindJSON(&releaseBody); err != nil {
@@ -37,8 +35,8 @@ func (releaseService *ReleaseService) AddRelease(c *gin.Context) {
}
releaseToBeAdded := db.Release{
ProjectReferenceId: releaseBody.ProjectId,
ReleaseVersion: releaseBody.Version,
ProjectReferenceId: releaseBody.ProjectReferenceId,
ReleaseVersion: releaseBody.ReleaseVersion,
}
if result := releaseService.dbClient.Create(&releaseToBeAdded); result.Error != nil {
@@ -53,11 +51,12 @@ func (releaseService *ReleaseService) AddRelease(c *gin.Context) {
func (releaseService *ReleaseService) GetReleases(c *gin.Context) {
projectRefId := c.Query("project_reference_id")
releaseVersion := c.Query("release_version")
var releases []db.Release
releaseService.dbClient.Where("project_reference_id = ?", projectRefId).Find(&releases)
result := releaseService.dbClient.Where("project_reference_id = ? OR release_version = ?", projectRefId, releaseVersion).Find(&releases)
if result := releaseService.dbClient.Find(&releases); result.Error != nil {
if result.Error != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": result.Error.Error()})
return
}

View File

@@ -21,9 +21,9 @@ type SourceMapService struct {
}
type SourceMapAckBody struct {
ProjectId string `json:"project-id" binding:"required"`
ReleaseId string `json:"releaseId" binding:"required"`
FileName string `json:"file_name" binding:"required"`
ProjectReferenceId string `json:"projectId" binding:"required"`
ReleaseId string `json:"releaseId" binding:"required"`
FileName string `json:"fileName" binding:"required"`
}
func NewSourceMapService(dbClient *gorm.DB, s3Client *aws.Actions, config *configs.AwsConfig) *SourceMapService {
@@ -45,10 +45,11 @@ func (s *SourceMapService) GetSourceMapUploadUrl(ctx *gin.Context) {
})
return
}
//generate s3 pre-signed url
key := path.Join(projectId, releaseId, fileName)
bucket := s.awsConfig.Bucket
request, err := s.s3Client.S3PresignClient.PresignGetObject(context.TODO(), &s3.GetObjectInput{
request, err := s.s3Client.S3PresignClient.PresignPutObject(context.TODO(), &s3.PutObjectInput{
Bucket: &bucket,
Key: &key,
}, func(opts *s3.PresignOptions) {
@@ -83,9 +84,10 @@ func (s *SourceMapService) SourceMapUploadAck(c *gin.Context) {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
//find the record to update ack
var existingSourceMap db.SourceMap
existingRecordError := s.dbClient.First(&existingSourceMap, "project_reference_id = ? and release_reference_id= ? and file_name = ?", sourceMapAckBody.ProjectId, sourceMapAckBody.ReleaseId, sourceMapAckBody.FileName).Error
existingRecordError := s.dbClient.First(&existingSourceMap, "project_reference_id = ? and release_reference_id= ? and file_name = ?", sourceMapAckBody.ProjectReferenceId, sourceMapAckBody.ReleaseId, sourceMapAckBody.FileName).Error
if existingRecordError != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": existingRecordError.Error()})
return