@@ -15,6 +15,7 @@ import (
1515 "github.com/robertkrimen/otto"
1616
1717 "github.com/authorizerdev/authorizer/server/constants"
18+ "github.com/authorizerdev/authorizer/server/cookie"
1819 "github.com/authorizerdev/authorizer/server/crypto"
1920 "github.com/authorizerdev/authorizer/server/db/models"
2021 "github.com/authorizerdev/authorizer/server/memorystore"
@@ -480,3 +481,34 @@ func GetIDToken(gc *gin.Context) (string, error) {
480481 token := strings .TrimPrefix (auth , "Bearer " )
481482 return token , nil
482483}
484+
485+ // GetUserIDFromSessionOrAccessToken returns the user id from the session or access token
486+ func GetUserIDFromSessionOrAccessToken (gc * gin.Context ) (string , error ) {
487+ // First try to get the user id from the session
488+ isSession := true
489+ token , err := cookie .GetSession (gc )
490+ if err != nil || token == "" {
491+ log .Debug ("Failed to get session token: " , err )
492+ isSession = false
493+ token , err = GetAccessToken (gc )
494+ if err != nil || token == "" {
495+ log .Debug ("Failed to get access token: " , err )
496+ return "" , fmt .Errorf (`unauthorized` )
497+ }
498+ }
499+ if isSession {
500+ claims , err := ValidateBrowserSession (gc , token )
501+ if err != nil {
502+ log .Debug ("Failed to validate session token: " , err )
503+ return "" , fmt .Errorf (`unauthorized` )
504+ }
505+ return claims .Subject , nil
506+ }
507+ // If not session, then validate the access token
508+ claims , err := ValidateAccessToken (gc , token )
509+ if err != nil {
510+ log .Debug ("Failed to validate access token: " , err )
511+ return "" , fmt .Errorf (`unauthorized` )
512+ }
513+ return claims ["sub" ].(string ), nil
514+ }
0 commit comments