@@ -36,7 +36,6 @@ func OAuthCallbackHandler() gin.HandlerFunc {
3636 log .Debug ("Invalid oauth state: " , state )
3737 c .JSON (400 , gin.H {"error" : "invalid oauth state" })
3838 }
39- memorystore .Provider .GetState (state )
4039 // contains random token, redirect url, role
4140 sessionSplit := strings .Split (state , "___" )
4241
@@ -46,6 +45,9 @@ func OAuthCallbackHandler() gin.HandlerFunc {
4645 return
4746 }
4847
48+ // remove state from store
49+ go memorystore .Provider .RemoveState (state )
50+
4951 stateValue := sessionSplit [0 ]
5052 redirectURL := sessionSplit [1 ]
5153 inputRoles := strings .Split (sessionSplit [2 ], "," )
@@ -117,9 +119,11 @@ func OAuthCallbackHandler() gin.HandlerFunc {
117119 user .EmailVerifiedAt = & now
118120 user , _ = db .Provider .AddUser (user )
119121 } else {
122+ user = existingUser
120123 if user .RevokedTimestamp != nil {
121124 log .Debug ("User access revoked at: " , user .RevokedTimestamp )
122125 c .JSON (400 , gin.H {"error" : "user access has been revoked" })
126+ return
123127 }
124128
125129 // user exists in db, check if method was google
@@ -128,7 +132,6 @@ func OAuthCallbackHandler() gin.HandlerFunc {
128132 if ! strings .Contains (signupMethod , provider ) {
129133 signupMethod = signupMethod + "," + provider
130134 }
131- user = existingUser
132135 user .SignupMethods = signupMethod
133136
134137 if user .EmailVerifiedAt == nil {
@@ -200,12 +203,12 @@ func OAuthCallbackHandler() gin.HandlerFunc {
200203 params := "access_token=" + authToken .AccessToken .Token + "&token_type=bearer&expires_in=" + strconv .FormatInt (expiresIn , 10 ) + "&state=" + stateValue + "&id_token=" + authToken .IDToken .Token
201204
202205 cookie .SetSession (c , authToken .FingerPrintHash )
203- memorystore .Provider .SetState ( authToken . FingerPrintHash , authToken . FingerPrint + "@" + user . ID )
204- memorystore .Provider .SetState ( authToken . AccessToken . Token , authToken . FingerPrint + "@" + user . ID )
206+ memorystore .Provider .SetUserSession ( user . ID , constants . TokenTypeSessionToken + "_" + authToken . FingerPrint , authToken . FingerPrintHash )
207+ memorystore .Provider .SetUserSession ( user . ID , constants . TokenTypeAccessToken + "_" + authToken . FingerPrint , authToken . AccessToken . Token )
205208
206209 if authToken .RefreshToken != nil {
207210 params = params + `&refresh_token=` + authToken .RefreshToken .Token
208- memorystore .Provider .SetState ( authToken . RefreshToken . Token , authToken . FingerPrint + "@" + user . ID )
211+ memorystore .Provider .SetUserSession ( user . ID , constants . TokenTypeRefreshToken + "_" + authToken . FingerPrint , authToken . RefreshToken . Token )
209212 }
210213
211214 go db .Provider .AddSession (models.Session {
0 commit comments