Files
cybertron/service/AuthService.go
2024-08-27 13:40:31 +05:30

35 lines
862 B
Go

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
}