TP-61307 | Auth middileware and relase service changes
This commit is contained in:
34
service/AuthService.go
Normal file
34
service/AuthService.go
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user