narasiahli-be/utils/service/user_utils.service.go

44 lines
1.1 KiB
Go

package service
import (
"narasi-ahli-be/app/database/entity/users"
"narasi-ahli-be/app/module/users/repository"
"strings"
"time"
"github.com/golang-jwt/jwt/v5"
"github.com/rs/zerolog"
)
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
}