@@ -169,7 +169,9 @@ func (p *portalProxy) DoLoginToCNSI(c echo.Context, cnsiGUID string) (*interface
169
169
}
170
170
u .UserGUID = userID
171
171
172
- p .saveCNSIToken (cnsiGUID , * u , uaaRes .AccessToken , uaaRes .RefreshToken )
172
+ fmt .Println ("DoLoginToCNSI LOGGING IN!!!!" )
173
+
174
+ p .saveCNSIToken (cnsiGUID , * u , uaaRes .AccessToken , uaaRes .RefreshToken , false )
173
175
174
176
cfAdmin := strings .Contains (uaaRes .Scope , p .Config .CFAdminIdentifier )
175
177
@@ -259,41 +261,38 @@ func (p *portalProxy) logoutOfCNSI(c echo.Context) error {
259
261
}
260
262
261
263
userGUID , err := p .GetSessionStringValue (c , "user_id" )
262
- fmt .Println ("logoutOfCNSI: : userGUID" , userGUID )
263
264
if err != nil {
264
- return echo . NewHTTPError ( http . StatusUnauthorized , "Could not find correct session value" )
265
+ return fmt . Errorf ( "Could not find correct session value: %s" , err )
265
266
}
266
267
267
- userTokenInfo := userTokenInfo {
268
- UserGUID : userGUID ,
268
+ cnsiRecord , err := p .GetCNSIRecord (cnsiGUID )
269
+ if err != nil {
270
+ return fmt .Errorf ("Unable to load CNSI record: %s" , err )
269
271
}
270
272
271
- //TODO: CLOUD FOUNDRY SPECFICI logout (?) and conditional on if endpoint == CORE CF
272
- p .saveCNSIToken (cnsiGUID , userTokenInfo , "" , "" )
273
- //p.deleteCNSIToken(cnsiGUID, userID)
274
-
275
-
276
-
277
- //p.GetCNSITokenRecord(cnsiGUID, userID)
278
- //_, ok := p.GetCNSITokenRecord(cnsiGUID, userID)
279
- //if !ok {
280
- // return interfaces.NewHTTPShadowError(
281
- // http.StatusBadRequest,
282
- // "Missing CNSI token, unable to log out",
283
- // "Attempt to delete a cnsi token that does not exist")
284
- //}
285
- //cfTokenRecord = interfaces.TokenRecord{}
286
-
287
- //cnsiID string, u userTokenInfo, authTok string, refreshTok string
273
+ // If cnsi is cf AND cf is auto-register only clear the entry
274
+ if cnsiRecord .CNSIType == "cf" && p .GetConfig ().AutoRegisterCFUrl == cnsiRecord .APIEndpoint .String () {
275
+ log .Info ("Setting token record as disconnected" )
288
276
289
- //type userTokenInfo struct {
290
- // UserGUID string `json:"user_id"`
291
- // UserName string `json:"user_name"`
292
- // TokenExpiry int64 `json:"exp"`
293
- // Scope []string `json:"scope"`
294
- //}
277
+ cfTokenRecord , ok := p .GetCNSITokenRecord (cnsiGUID , userGUID )
278
+ if ! ok {
279
+ return fmt .Errorf ("Unable to retrieve CNSI token record: %s" , err )
280
+ }
295
281
282
+ userTokenInfo := userTokenInfo {
283
+ UserGUID : userGUID ,
284
+ TokenExpiry : cfTokenRecord .TokenExpiry ,
285
+ }
296
286
287
+ if _ , err := p .saveCNSIToken (cnsiGUID , userTokenInfo , cfTokenRecord .AuthToken , cfTokenRecord .RefreshToken , true ); err != nil {
288
+ return fmt .Errorf ("Unable to clear token: %s" , err )
289
+ }
290
+ } else {
291
+ log .Info ("Deleting Token" )
292
+ if err := p .deleteCNSIToken (cnsiGUID , userGUID ); err != nil {
293
+ return fmt .Errorf ("Unable to delete token: %s" , err )
294
+ }
295
+ }
297
296
298
297
return nil
299
298
}
@@ -431,12 +430,13 @@ func (p *portalProxy) saveUAAToken(u userTokenInfo, authTok string, refreshTok s
431
430
return tokenRecord , nil
432
431
}
433
432
434
- func (p * portalProxy ) saveCNSIToken (cnsiID string , u userTokenInfo , authTok string , refreshTok string ) (interfaces.TokenRecord , error ) {
433
+ func (p * portalProxy ) saveCNSIToken (cnsiID string , u userTokenInfo , authTok string , refreshTok string , disconnect bool ) (interfaces.TokenRecord , error ) {
435
434
log .Debug ("saveCNSIToken" )
436
435
tokenRecord := interfaces.TokenRecord {
437
436
AuthToken : authTok ,
438
437
RefreshToken : refreshTok ,
439
438
TokenExpiry : u .TokenExpiry ,
439
+ Disconnected : disconnect ,
440
440
}
441
441
442
442
err := p .setCNSITokenRecord (cnsiID , u .UserGUID , tokenRecord )
0 commit comments