From 7fa4913f902457dadb1a4806ce194eb122dbc090 Mon Sep 17 00:00:00 2001 From: Nick Frazier Date: Thu, 19 Oct 2017 08:10:29 -0400 Subject: [PLT-7794] Add user access token enable/disable endpoints (#7630) * Add column to UserAccessTokens table * PLT-7794 Add user access token enable/disable endpoints * replaced eliminated global variable * updates to user_access_token_store and upgrade.go * style fix and cleanup --- app/session.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'app') diff --git a/app/session.go b/app/session.go index f8b931043..7492a7c37 100644 --- a/app/session.go +++ b/app/session.go @@ -268,6 +268,10 @@ func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Sessio return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, result.Err.Error(), http.StatusUnauthorized) } else { token = result.Data.(*model.UserAccessToken) + + if token.IsActive == false { + return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, "inactive_token", http.StatusUnauthorized) + } } var user *model.User @@ -320,6 +324,40 @@ func (a *App) RevokeUserAccessToken(token *model.UserAccessToken) *model.AppErro return a.RevokeSession(session) } +func (a *App) DisableUserAccessToken(token *model.UserAccessToken) *model.AppError { + var session *model.Session + if result := <-a.Srv.Store.Session().Get(token.Token); result.Err == nil { + session = result.Data.(*model.Session) + } + + if result := <-a.Srv.Store.UserAccessToken().UpdateTokenDisable(token.Id); result.Err != nil { + return result.Err + } + + if session == nil { + return nil + } + + return a.RevokeSession(session) +} + +func (a *App) EnableUserAccessToken(token *model.UserAccessToken) *model.AppError { + var session *model.Session + if result := <-a.Srv.Store.Session().Get(token.Token); result.Err == nil { + session = result.Data.(*model.Session) + } + + if result := <-a.Srv.Store.UserAccessToken().UpdateTokenEnable(token.Id); result.Err != nil { + return result.Err + } + + if session == nil { + return nil + } + + return nil +} + func (a *App) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) { if result := <-a.Srv.Store.UserAccessToken().GetByUser(userId, page*perPage, perPage); result.Err != nil { return nil, result.Err -- cgit v1.2.3-1-g7c22