@@ -101,7 +101,7 @@ func oauth2URL(c *gin.Context) {
101101 Redirect : redirect_uri ,
102102 }
103103
104- log .Infof ( "model.Auth = %v" , data );
104+ log .Infof ("model.Auth = %v" , data )
105105
106106 c .JSON (http .StatusOK , data )
107107}
@@ -317,17 +317,16 @@ func login(c *gin.Context) {
317317 if loginVals .Redirect == "com.nettica.agent://callback/agent" {
318318
319319 c .Redirect (http .StatusPermanentRedirect , redirect )
320- return ;
320+ return
321321 }
322322 }
323323
324324 // otherwise send a JSON body with the result to the browser. it will do the redirect.
325- loginVals .Redirect = redirect ;
325+ loginVals .Redirect = redirect
326326
327- c .JSON ( http .StatusOK , loginVals )
327+ c .JSON (http .StatusOK , loginVals )
328328}
329329
330-
331330func validate (c * gin.Context ) {
332331 var t model.OAuth2Token
333332 if err := c .ShouldBindJSON (& t ); err != nil {
@@ -453,9 +452,36 @@ func logout(c *gin.Context) {
453452
454453func user (c * gin.Context ) {
455454 cacheDb := c .MustGet ("cache" ).(* cache.Cache )
456- oauth2Token , exists := cacheDb .Get (util .GetCleanAuthToken (c ))
455+ token := util .GetCleanAuthToken (c )
456+ oauth2Token , exists := cacheDb .Get (token )
457+ id_token := c .Request .Header .Get ("X-OAUTH2-ID-TOKEN" )
457458
458- if exists && oauth2Token .(* oauth2.Token ).AccessToken == util .GetCleanAuthToken (c ) {
459+ if id_token != "" {
460+ new_token := & oauth2.Token {
461+ AccessToken : token ,
462+ TokenType : "Bearer" ,
463+ RefreshToken : "" ,
464+ Expiry : time .Now ().Add (time .Hour * 24 ),
465+ }
466+ m := make (map [string ]interface {})
467+ m ["id_token" ] = id_token
468+ new_token = new_token .WithExtra (m )
469+
470+ // check if token is valid
471+ var err error
472+ oauth2Token , err = util .ValidateToken (new_token .AccessToken )
473+ if err != nil {
474+ log .WithFields (log.Fields {
475+ "err" : err ,
476+ "token" : oauth2Token ,
477+ }).Error ("failed to get token info" )
478+ c .AbortWithStatus (http .StatusUnauthorized )
479+ return
480+ }
481+ oauth2Token = new_token
482+ }
483+
484+ if id_token != "" || (exists && oauth2Token .(* oauth2.Token ).AccessToken == util .GetCleanAuthToken (c )) {
459485 oauth2Client := c .MustGet ("oauth2Client" ).(model.Authentication )
460486
461487 user , err := oauth2Client .UserInfo (oauth2Token .(* oauth2.Token ))
0 commit comments