35 lines
862 B
Go
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
|
||
|
|
}
|