@@ -482,8 +482,15 @@ func GetIDToken(gc *gin.Context) (string, error) {
482482 return token , nil
483483}
484484
485+ // SessionOrAccessTokenData is a struct to hold session or access token data
486+ type SessionOrAccessTokenData struct {
487+ UserID string
488+ LoginMethod string
489+ Nonce string
490+ }
491+
485492// GetUserIDFromSessionOrAccessToken returns the user id from the session or access token
486- func GetUserIDFromSessionOrAccessToken (gc * gin.Context ) (string , error ) {
493+ func GetUserIDFromSessionOrAccessToken (gc * gin.Context ) (* SessionOrAccessTokenData , error ) {
487494 // First try to get the user id from the session
488495 isSession := true
489496 token , err := cookie .GetSession (gc )
@@ -493,22 +500,30 @@ func GetUserIDFromSessionOrAccessToken(gc *gin.Context) (string, error) {
493500 token , err = GetAccessToken (gc )
494501 if err != nil || token == "" {
495502 log .Debug ("Failed to get access token: " , err )
496- return "" , fmt .Errorf (`unauthorized` )
503+ return nil , fmt .Errorf (`unauthorized` )
497504 }
498505 }
499506 if isSession {
500507 claims , err := ValidateBrowserSession (gc , token )
501508 if err != nil {
502509 log .Debug ("Failed to validate session token: " , err )
503- return "" , fmt .Errorf (`unauthorized` )
510+ return nil , fmt .Errorf (`unauthorized` )
504511 }
505- return claims .Subject , nil
512+ return & SessionOrAccessTokenData {
513+ UserID : claims .Subject ,
514+ LoginMethod : claims .LoginMethod ,
515+ Nonce : claims .Nonce ,
516+ }, nil
506517 }
507518 // If not session, then validate the access token
508519 claims , err := ValidateAccessToken (gc , token )
509520 if err != nil {
510521 log .Debug ("Failed to validate access token: " , err )
511- return "" , fmt .Errorf (`unauthorized` )
522+ return nil , fmt .Errorf (`unauthorized` )
512523 }
513- return claims ["sub" ].(string ), nil
524+ return & SessionOrAccessTokenData {
525+ UserID : claims ["sub" ].(string ),
526+ LoginMethod : claims ["login_method" ].(string ),
527+ Nonce : claims ["nonce" ].(string ),
528+ }, nil
514529}
0 commit comments