43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
|
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/golang-jwt/jwt/v5"
|
||
|
|
"github.com/rs/zerolog"
|
||
|
|
"strings"
|
||
|
|
"time"
|
||
|
|
"web-medols-be/app/database/entity/users"
|
||
|
|
"web-medols-be/app/module/users/repository"
|
||
|
|
)
|
||
|
|
|
||
|
|
func GetUserInfo(log zerolog.Logger, repo repository.UsersRepository, bearerToken string) *users.Users {
|
||
|
|
tokenString := strings.TrimPrefix(bearerToken, "Bearer ")
|
||
|
|
token, _, err := new(jwt.Parser).ParseUnverified(tokenString, jwt.MapClaims{})
|
||
|
|
if err != nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
claims := token.Claims.(jwt.MapClaims)
|
||
|
|
sub := claims["sub"].(string)
|
||
|
|
|
||
|
|
user, err := repo.FindByKeycloakId(sub)
|
||
|
|
if err != nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
log.Info().Str("timestamp", time.Now().
|
||
|
|
Format(time.RFC3339)).Str("Service:GetUserInfo", "UserInfo:GetUserInfo").
|
||
|
|
Interface("payload", user).Msg("")
|
||
|
|
|
||
|
|
return user
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetUserId(bearerToken string) *string {
|
||
|
|
tokenString := strings.TrimPrefix(bearerToken, "Bearer ")
|
||
|
|
token, _, err := new(jwt.Parser).ParseUnverified(tokenString, jwt.MapClaims{})
|
||
|
|
if err != nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
claims := token.Claims.(jwt.MapClaims)
|
||
|
|
sub := claims["sub"].(string)
|
||
|
|
return &sub
|
||
|
|
}
|