feat(auth): Add login, register, session_info and api creation
This commit is contained in:
49
app/services/session_info.go
Normal file
49
app/services/session_info.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"git.secnex.io/secnex/auth-api/config"
|
||||
"git.secnex.io/secnex/auth-api/repositories"
|
||||
"git.secnex.io/secnex/masterlog"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func SessionInfo(token string) (*repositories.SessionDetails, error) {
|
||||
claims, err := jwt.ParseWithClaims(token, &jwt.MapClaims{}, func(token *jwt.Token) (interface{}, error) {
|
||||
return []byte(config.CONFIG.JwtSecret), nil
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !claims.Valid {
|
||||
return nil, errors.New("invalid token")
|
||||
}
|
||||
|
||||
mapClaims := claims.Claims.(*jwt.MapClaims)
|
||||
subValue, ok := (*mapClaims)["sub"]
|
||||
if !ok {
|
||||
return nil, errors.New("sub claim not found")
|
||||
}
|
||||
|
||||
var sessionID string
|
||||
switch v := subValue.(type) {
|
||||
case string:
|
||||
sessionID = v
|
||||
case uuid.UUID:
|
||||
sessionID = v.String()
|
||||
default:
|
||||
sessionID = fmt.Sprintf("%v", v)
|
||||
}
|
||||
|
||||
masterlog.Debug("Session ID extracted from token", map[string]interface{}{"session_id": sessionID, "sub_type": fmt.Sprintf("%T", subValue)})
|
||||
sessionDetails := repositories.GetSessionCache(sessionID)
|
||||
if sessionDetails == nil {
|
||||
masterlog.Debug("Session not found in cache", map[string]interface{}{"session_id": sessionID})
|
||||
return nil, errors.New("session not found")
|
||||
}
|
||||
masterlog.Debug("Session details retrieved successfully", map[string]interface{}{"session_id": sessionID, "user_id": sessionDetails.UserID})
|
||||
return sessionDetails, nil
|
||||
}
|
||||
Reference in New Issue
Block a user