From d9529183b28a1fd15a26c5204f07b6fa88f8f432 Mon Sep 17 00:00:00 2001 From: Rodrigo Villablanca Date: Thu, 23 Jul 2020 04:58:49 -0400 Subject: [PATCH] UserAccessTokenStore migration (#15029) * Migration completed * Suggestions * Fix no new var * Fix another no new var in the left side --- app/session.go | 40 ++++--- app/user.go | 2 +- i18n/en.json | 64 +++++------ store/opentracing_layer.go | 20 ++-- store/sqlstore/user_access_token_store.go | 78 +++++++------- store/store.go | 20 ++-- store/storetest/mocks/SqlSupplier.go | 14 +++ store/storetest/mocks/UserAccessTokenStore.go | 100 +++++++----------- store/storetest/user_access_token_store.go | 56 +++++----- store/timer_layer.go | 20 ++-- 10 files changed, 207 insertions(+), 207 deletions(-) diff --git a/app/session.go b/app/session.go index d621e44cfd..54a7fca821 100644 --- a/app/session.go +++ b/app/session.go @@ -382,9 +382,15 @@ func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAc token.Token = model.NewId() - token, err = a.Srv().Store.UserAccessToken().Save(token) - if err != nil { - return nil, err + token, nErr := a.Srv().Store.UserAccessToken().Save(token) + if nErr != nil { + var appErr *model.AppError + switch { + case errors.As(nErr, &appErr): + return nil, appErr + default: + return nil, model.NewAppError("CreateUserAccessToken", "app.user_access_token.save.app_error", nil, err.Error(), http.StatusInternalServerError) + } } // Don't send emails to bot users. @@ -399,9 +405,9 @@ func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAc } func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Session, *model.AppError) { - token, err := a.Srv().Store.UserAccessToken().GetByToken(tokenString) - if err != nil { - return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, err.Error(), http.StatusUnauthorized) + token, nErr := a.Srv().Store.UserAccessToken().GetByToken(tokenString) + if nErr != nil { + return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, nErr.Error(), http.StatusUnauthorized) } if !token.IsActive { @@ -440,7 +446,7 @@ func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Sessio } session.SetExpireInDays(model.SESSION_USER_ACCESS_TOKEN_EXPIRY) - session, nErr := a.Srv().Store.Session().Save(session) + session, nErr = a.Srv().Store.Session().Save(session) if nErr != nil { var invErr *store.ErrInvalidInput switch { @@ -462,7 +468,7 @@ func (a *App) RevokeUserAccessToken(token *model.UserAccessToken) *model.AppErro session, _ = a.Srv().Store.Session().Get(token.Token) if err := a.Srv().Store.UserAccessToken().Delete(token.Id); err != nil { - return err + return model.NewAppError("RevokeUserAccessToken", "app.user_access_token.delete.app_error", nil, err.Error(), http.StatusInternalServerError) } if session == nil { @@ -477,7 +483,7 @@ func (a *App) DisableUserAccessToken(token *model.UserAccessToken) *model.AppErr session, _ = a.Srv().Store.Session().Get(token.Token) if err := a.Srv().Store.UserAccessToken().UpdateTokenDisable(token.Id); err != nil { - return err + return model.NewAppError("DisableUserAccessToken", "app.user_access_token.update_token_disable.app_error", nil, err.Error(), http.StatusInternalServerError) } if session == nil { @@ -493,7 +499,7 @@ func (a *App) EnableUserAccessToken(token *model.UserAccessToken) *model.AppErro err := a.Srv().Store.UserAccessToken().UpdateTokenEnable(token.Id) if err != nil { - return err + return model.NewAppError("EnableUserAccessToken", "app.user_access_token.update_token_enable.app_error", nil, err.Error(), http.StatusInternalServerError) } if session == nil { @@ -506,7 +512,7 @@ func (a *App) EnableUserAccessToken(token *model.UserAccessToken) *model.AppErro func (a *App) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, *model.AppError) { tokens, err := a.Srv().Store.UserAccessToken().GetAll(page*perPage, perPage) if err != nil { - return nil, err + return nil, model.NewAppError("GetUserAccessTokens", "app.user_access_token.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) } for _, token := range tokens { @@ -519,7 +525,7 @@ func (a *App) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, func (a *App) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) { tokens, err := a.Srv().Store.UserAccessToken().GetByUser(userId, page*perPage, perPage) if err != nil { - return nil, err + return nil, model.NewAppError("GetUserAccessTokensForUser", "app.user_access_token.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) } for _, token := range tokens { token.Token = "" @@ -532,7 +538,13 @@ func (a *App) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*m func (a *App) GetUserAccessToken(tokenId string, sanitize bool) (*model.UserAccessToken, *model.AppError) { token, err := a.Srv().Store.UserAccessToken().Get(tokenId) if err != nil { - return nil, err + var nfErr *store.ErrNotFound + switch { + case errors.As(err, &nfErr): + return nil, model.NewAppError("GetUserAccessToken", "app.user_access_token.get_by_user.app_error", nil, nfErr.Error(), http.StatusNotFound) + default: + return nil, model.NewAppError("GetUserAccessToken", "app.user_access_token.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) + } } if sanitize { @@ -544,7 +556,7 @@ func (a *App) GetUserAccessToken(tokenId string, sanitize bool) (*model.UserAcce func (a *App) SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError) { tokens, err := a.Srv().Store.UserAccessToken().Search(term) if err != nil { - return nil, err + return nil, model.NewAppError("SearchUserAccessTokens", "app.user_access_token.search.app_error", nil, err.Error(), http.StatusInternalServerError) } for _, token := range tokens { token.Token = "" diff --git a/app/user.go b/app/user.go index 95061abfc2..f3e1e5aa7e 100644 --- a/app/user.go +++ b/app/user.go @@ -1457,7 +1457,7 @@ func (a *App) PermanentDeleteUser(user *model.User) *model.AppError { } if err := a.Srv().Store.UserAccessToken().DeleteAllForUser(user.Id); err != nil { - return err + return model.NewAppError("PermanentDeleteUser", "app.user_access_token.delete.app_error", nil, err.Error(), http.StatusInternalServerError) } if err := a.Srv().Store.OAuth().PermanentDeleteAuthDataByUser(user.Id); err != nil { diff --git a/i18n/en.json b/i18n/en.json index 3af8210b50..29d00c91cf 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -4394,14 +4394,42 @@ "id": "app.user.permanentdeleteuser.internal_error", "translation": "Unable to delete user." }, + { + "id": "app.user_access_token.delete.app_error", + "translation": "Unable to delete the personal access token." + }, { "id": "app.user_access_token.disabled", "translation": "Personal access tokens are disabled on this server. Please contact your system administrator for details." }, + { + "id": "app.user_access_token.get_all.app_error", + "translation": "Unable to get all personal access tokens." + }, + { + "id": "app.user_access_token.get_by_user.app_error", + "translation": "Unable to get the personal access tokens by user." + }, { "id": "app.user_access_token.invalid_or_missing", "translation": "Invalid or missing token." }, + { + "id": "app.user_access_token.save.app_error", + "translation": "Unable to save the personal access token." + }, + { + "id": "app.user_access_token.search.app_error", + "translation": "We encountered an error searching user access tokens." + }, + { + "id": "app.user_access_token.update_token_disable.app_error", + "translation": "Unable to disable the access token." + }, + { + "id": "app.user_access_token.update_token_enable.app_error", + "translation": "Unable to enable the access token." + }, { "id": "app.user_terms_of_service.delete.app_error", "translation": "Unable to delete terms of service." @@ -7710,42 +7738,6 @@ "id": "store.sql_user.verify_email.app_error", "translation": "Unable to update verify email field." }, - { - "id": "store.sql_user_access_token.delete.app_error", - "translation": "Unable to delete the personal access token." - }, - { - "id": "store.sql_user_access_token.get.app_error", - "translation": "Unable to get the personal access token." - }, - { - "id": "store.sql_user_access_token.get_all.app_error", - "translation": "Unable to get all personal access tokens." - }, - { - "id": "store.sql_user_access_token.get_by_token.app_error", - "translation": "Unable to get the personal access token by token." - }, - { - "id": "store.sql_user_access_token.get_by_user.app_error", - "translation": "Unable to get the personal access tokens by user." - }, - { - "id": "store.sql_user_access_token.save.app_error", - "translation": "Unable to save the personal access token." - }, - { - "id": "store.sql_user_access_token.search.app_error", - "translation": "We encountered an error searching user access tokens." - }, - { - "id": "store.sql_user_access_token.update_token_disable.app_error", - "translation": "Unable to disable the access token." - }, - { - "id": "store.sql_user_access_token.update_token_enable.app_error", - "translation": "Unable to enable the access token." - }, { "id": "store.sql_webhooks.analytics_incoming_count.app_error", "translation": "Unable to count the incoming webhooks." diff --git a/store/opentracing_layer.go b/store/opentracing_layer.go index 3fb170e10f..61a3479847 100644 --- a/store/opentracing_layer.go +++ b/store/opentracing_layer.go @@ -8729,7 +8729,7 @@ func (s *OpenTracingLayerUserStore) VerifyEmail(userId string, email string) (st return resultVar0, resultVar1 } -func (s *OpenTracingLayerUserAccessTokenStore) Delete(tokenId string) *model.AppError { +func (s *OpenTracingLayerUserAccessTokenStore) Delete(tokenId string) error { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.Delete") s.Root.Store.SetContext(newCtx) @@ -8747,7 +8747,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) Delete(tokenId string) *model.App return resultVar0 } -func (s *OpenTracingLayerUserAccessTokenStore) DeleteAllForUser(userId string) *model.AppError { +func (s *OpenTracingLayerUserAccessTokenStore) DeleteAllForUser(userId string) error { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.DeleteAllForUser") s.Root.Store.SetContext(newCtx) @@ -8765,7 +8765,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) DeleteAllForUser(userId string) * return resultVar0 } -func (s *OpenTracingLayerUserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, *model.AppError) { +func (s *OpenTracingLayerUserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, error) { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.Get") s.Root.Store.SetContext(newCtx) @@ -8783,7 +8783,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) Get(tokenId string) (*model.UserA return resultVar0, resultVar1 } -func (s *OpenTracingLayerUserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAccessToken, *model.AppError) { +func (s *OpenTracingLayerUserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAccessToken, error) { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.GetAll") s.Root.Store.SetContext(newCtx) @@ -8801,7 +8801,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) GetAll(offset int, limit int) ([] return resultVar0, resultVar1 } -func (s *OpenTracingLayerUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError) { +func (s *OpenTracingLayerUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, error) { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.GetByToken") s.Root.Store.SetContext(newCtx) @@ -8819,7 +8819,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) GetByToken(tokenString string) (* return resultVar0, resultVar1 } -func (s *OpenTracingLayerUserAccessTokenStore) GetByUser(userId string, page int, perPage int) ([]*model.UserAccessToken, *model.AppError) { +func (s *OpenTracingLayerUserAccessTokenStore) GetByUser(userId string, page int, perPage int) ([]*model.UserAccessToken, error) { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.GetByUser") s.Root.Store.SetContext(newCtx) @@ -8837,7 +8837,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) GetByUser(userId string, page int return resultVar0, resultVar1 } -func (s *OpenTracingLayerUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError) { +func (s *OpenTracingLayerUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, error) { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.Save") s.Root.Store.SetContext(newCtx) @@ -8855,7 +8855,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) Save(token *model.UserAccessToken return resultVar0, resultVar1 } -func (s *OpenTracingLayerUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, *model.AppError) { +func (s *OpenTracingLayerUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, error) { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.Search") s.Root.Store.SetContext(newCtx) @@ -8873,7 +8873,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) Search(term string) ([]*model.Use return resultVar0, resultVar1 } -func (s *OpenTracingLayerUserAccessTokenStore) UpdateTokenDisable(tokenId string) *model.AppError { +func (s *OpenTracingLayerUserAccessTokenStore) UpdateTokenDisable(tokenId string) error { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.UpdateTokenDisable") s.Root.Store.SetContext(newCtx) @@ -8891,7 +8891,7 @@ func (s *OpenTracingLayerUserAccessTokenStore) UpdateTokenDisable(tokenId string return resultVar0 } -func (s *OpenTracingLayerUserAccessTokenStore) UpdateTokenEnable(tokenId string) *model.AppError { +func (s *OpenTracingLayerUserAccessTokenStore) UpdateTokenEnable(tokenId string) error { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "UserAccessTokenStore.UpdateTokenEnable") s.Root.Store.SetContext(newCtx) diff --git a/store/sqlstore/user_access_token_store.go b/store/sqlstore/user_access_token_store.go index 4dba9b75ff..850621efaf 100644 --- a/store/sqlstore/user_access_token_store.go +++ b/store/sqlstore/user_access_token_store.go @@ -5,7 +5,9 @@ package sqlstore import ( "database/sql" - "net/http" + "fmt" + + "github.com/pkg/errors" "github.com/mattermost/gorp" "github.com/mattermost/mattermost-server/v5/model" @@ -35,7 +37,7 @@ func (s SqlUserAccessTokenStore) createIndexesIfNotExists() { s.CreateIndexIfNotExists("idx_user_access_tokens_user_id", "UserAccessTokens", "UserId") } -func (s SqlUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError) { +func (s SqlUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, error) { token.PreSave() if err := token.IsValid(); err != nil { @@ -43,15 +45,15 @@ func (s SqlUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.User } if err := s.GetMaster().Insert(token); err != nil { - return nil, model.NewAppError("SqlUserAccessTokenStore.Save", "store.sql_user_access_token.save.app_error", nil, "", http.StatusInternalServerError) + return nil, errors.Wrap(err, "failed to save UserAccessToken") } return token, nil } -func (s SqlUserAccessTokenStore) Delete(tokenId string) *model.AppError { +func (s SqlUserAccessTokenStore) Delete(tokenId string) error { transaction, err := s.GetMaster().Begin() if err != nil { - return model.NewAppError("SqlUserAccessTokenStore.Delete", "store.sql_user_access_token.delete.app_error", nil, err.Error(), http.StatusInternalServerError) + return errors.Wrap(err, "begin_transaction") } defer finalizeTransaction(transaction) @@ -59,7 +61,7 @@ func (s SqlUserAccessTokenStore) Delete(tokenId string) *model.AppError { if err := s.deleteSessionsAndTokensById(transaction, tokenId); err == nil { if err := transaction.Commit(); err != nil { // don't need to rollback here since the transaction is already closed - return model.NewAppError("SqlUserAccessTokenStore.Delete", "store.sql_user_access_token.delete.app_error", nil, err.Error(), http.StatusInternalServerError) + return errors.Wrap(err, "commit_transaction") } } @@ -67,7 +69,7 @@ func (s SqlUserAccessTokenStore) Delete(tokenId string) *model.AppError { } -func (s SqlUserAccessTokenStore) deleteSessionsAndTokensById(transaction *gorp.Transaction, tokenId string) *model.AppError { +func (s SqlUserAccessTokenStore) deleteSessionsAndTokensById(transaction *gorp.Transaction, tokenId string) error { query := "" if s.DriverName() == model.DATABASE_DRIVER_POSTGRES { @@ -77,25 +79,25 @@ func (s SqlUserAccessTokenStore) deleteSessionsAndTokensById(transaction *gorp.T } if _, err := transaction.Exec(query, map[string]interface{}{"Id": tokenId}); err != nil { - return model.NewAppError("SqlUserAccessTokenStore.deleteSessionsById", "store.sql_user_access_token.delete.app_error", nil, "id="+tokenId+", err="+err.Error(), http.StatusInternalServerError) + return errors.Wrapf(err, "failed to delete Sessions with UserAccessToken id=%s", tokenId) } return s.deleteTokensById(transaction, tokenId) } -func (s SqlUserAccessTokenStore) deleteTokensById(transaction *gorp.Transaction, tokenId string) *model.AppError { +func (s SqlUserAccessTokenStore) deleteTokensById(transaction *gorp.Transaction, tokenId string) error { if _, err := transaction.Exec("DELETE FROM UserAccessTokens WHERE Id = :Id", map[string]interface{}{"Id": tokenId}); err != nil { - return model.NewAppError("SqlUserAccessTokenStore.deleteTokensById", "store.sql_user_access_token.delete.app_error", nil, "", http.StatusInternalServerError) + return errors.Wrapf(err, "failed to delete UserAccessToken id=%s", tokenId) } return nil } -func (s SqlUserAccessTokenStore) DeleteAllForUser(userId string) *model.AppError { +func (s SqlUserAccessTokenStore) DeleteAllForUser(userId string) error { transaction, err := s.GetMaster().Begin() if err != nil { - return model.NewAppError("SqlUserAccessTokenStore.DeleteAllForUser", "store.sql_user_access_token.delete.app_error", nil, err.Error(), http.StatusInternalServerError) + return errors.Wrap(err, "begin_transaction") } defer finalizeTransaction(transaction) if err := s.deleteSessionsandTokensByUser(transaction, userId); err != nil { @@ -104,12 +106,12 @@ func (s SqlUserAccessTokenStore) DeleteAllForUser(userId string) *model.AppError if err := transaction.Commit(); err != nil { // don't need to rollback here since the transaction is already closed - return model.NewAppError("SqlUserAccessTokenStore.DeleteAllForUser", "store.sql_user_access_token.delete.app_error", nil, err.Error(), http.StatusInternalServerError) + return errors.Wrap(err, "commit_transaction") } return nil } -func (s SqlUserAccessTokenStore) deleteSessionsandTokensByUser(transaction *gorp.Transaction, userId string) *model.AppError { +func (s SqlUserAccessTokenStore) deleteSessionsandTokensByUser(transaction *gorp.Transaction, userId string) error { query := "" if s.DriverName() == model.DATABASE_DRIVER_POSTGRES { query = "DELETE FROM Sessions s USING UserAccessTokens o WHERE o.Token = s.Token AND o.UserId = :UserId" @@ -118,67 +120,67 @@ func (s SqlUserAccessTokenStore) deleteSessionsandTokensByUser(transaction *gorp } if _, err := transaction.Exec(query, map[string]interface{}{"UserId": userId}); err != nil { - return model.NewAppError("SqlUserAccessTokenStore.deleteSessionsByUser", "store.sql_user_access_token.delete.app_error", nil, "user_id="+userId+", err="+err.Error(), http.StatusInternalServerError) + return errors.Wrapf(err, "failed to delete Sessions with UserAccessToken userId=%s", userId) } return s.deleteTokensByUser(transaction, userId) } -func (s SqlUserAccessTokenStore) deleteTokensByUser(transaction *gorp.Transaction, userId string) *model.AppError { +func (s SqlUserAccessTokenStore) deleteTokensByUser(transaction *gorp.Transaction, userId string) error { if _, err := transaction.Exec("DELETE FROM UserAccessTokens WHERE UserId = :UserId", map[string]interface{}{"UserId": userId}); err != nil { - return model.NewAppError("SqlUserAccessTokenStore.deleteTokensByUser", "store.sql_user_access_token.delete.app_error", nil, "", http.StatusInternalServerError) + return errors.Wrapf(err, "failed to delete UserAccessToken userId=%s", userId) } return nil } -func (s SqlUserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, *model.AppError) { +func (s SqlUserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, error) { token := model.UserAccessToken{} if err := s.GetReplica().SelectOne(&token, "SELECT * FROM UserAccessTokens WHERE Id = :Id", map[string]interface{}{"Id": tokenId}); err != nil { if err == sql.ErrNoRows { - return nil, model.NewAppError("SqlUserAccessTokenStore.Get", "store.sql_user_access_token.get.app_error", nil, err.Error(), http.StatusNotFound) + return nil, store.NewErrNotFound("UserAccessToken", tokenId) } - return nil, model.NewAppError("SqlUserAccessTokenStore.Get", "store.sql_user_access_token.get.app_error", nil, err.Error(), http.StatusInternalServerError) + return nil, errors.Wrapf(err, "failed to get UserAccessToken with id=%s", tokenId) } return &token, nil } -func (s SqlUserAccessTokenStore) GetAll(offset, limit int) ([]*model.UserAccessToken, *model.AppError) { +func (s SqlUserAccessTokenStore) GetAll(offset, limit int) ([]*model.UserAccessToken, error) { tokens := []*model.UserAccessToken{} if _, err := s.GetReplica().Select(&tokens, "SELECT * FROM UserAccessTokens LIMIT :Limit OFFSET :Offset", map[string]interface{}{"Offset": offset, "Limit": limit}); err != nil { - return nil, model.NewAppError("SqlUserAccessTokenStore.GetAll", "store.sql_user_access_token.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) + return nil, errors.Wrap(err, "failed to find UserAccessTokens") } return tokens, nil } -func (s SqlUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError) { +func (s SqlUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, error) { token := model.UserAccessToken{} if err := s.GetReplica().SelectOne(&token, "SELECT * FROM UserAccessTokens WHERE Token = :Token", map[string]interface{}{"Token": tokenString}); err != nil { if err == sql.ErrNoRows { - return nil, model.NewAppError("SqlUserAccessTokenStore.GetByToken", "store.sql_user_access_token.get_by_token.app_error", nil, err.Error(), http.StatusNotFound) + return nil, store.NewErrNotFound("UserAccessToken", fmt.Sprintf("token=%s", tokenString)) } - return nil, model.NewAppError("SqlUserAccessTokenStore.GetByToken", "store.sql_user_access_token.get_by_token.app_error", nil, err.Error(), http.StatusInternalServerError) + return nil, errors.Wrapf(err, "failed to get UserAccessToken with token=%s", tokenString) } return &token, nil } -func (s SqlUserAccessTokenStore) GetByUser(userId string, offset, limit int) ([]*model.UserAccessToken, *model.AppError) { +func (s SqlUserAccessTokenStore) GetByUser(userId string, offset, limit int) ([]*model.UserAccessToken, error) { tokens := []*model.UserAccessToken{} if _, err := s.GetReplica().Select(&tokens, "SELECT * FROM UserAccessTokens WHERE UserId = :UserId LIMIT :Limit OFFSET :Offset", map[string]interface{}{"UserId": userId, "Offset": offset, "Limit": limit}); err != nil { - return nil, model.NewAppError("SqlUserAccessTokenStore.GetByUser", "store.sql_user_access_token.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) + return nil, errors.Wrapf(err, "failed to find UserAccessTokens with userId=%s", userId) } return tokens, nil } -func (s SqlUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, *model.AppError) { +func (s SqlUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, error) { term = sanitizeSearchTerm(term, "\\") tokens := []*model.UserAccessToken{} params := map[string]interface{}{"Term": term + "%"} @@ -191,23 +193,23 @@ func (s SqlUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, WHERE uat.Id LIKE :Term OR uat.UserId LIKE :Term OR u.Username LIKE :Term` if _, err := s.GetReplica().Select(&tokens, query, params); err != nil { - return nil, model.NewAppError("SqlUserAccessTokenStore.Search", "store.sql_user_access_token.search.app_error", nil, "term="+term+", "+err.Error(), http.StatusInternalServerError) + return nil, errors.Wrapf(err, "failed to find UserAccessTokens by term with value '%s'", term) } return tokens, nil } -func (s SqlUserAccessTokenStore) UpdateTokenEnable(tokenId string) *model.AppError { +func (s SqlUserAccessTokenStore) UpdateTokenEnable(tokenId string) error { if _, err := s.GetMaster().Exec("UPDATE UserAccessTokens SET IsActive = TRUE WHERE Id = :Id", map[string]interface{}{"Id": tokenId}); err != nil { - return model.NewAppError("SqlUserAccessTokenStore.UpdateTokenEnable", "store.sql_user_access_token.update_token_enable.app_error", nil, "id="+tokenId+", "+err.Error(), http.StatusInternalServerError) + return errors.Wrapf(err, "failed to update UserAccessTokens with id=%s", tokenId) } return nil } -func (s SqlUserAccessTokenStore) UpdateTokenDisable(tokenId string) *model.AppError { +func (s SqlUserAccessTokenStore) UpdateTokenDisable(tokenId string) error { transaction, err := s.GetMaster().Begin() if err != nil { - return model.NewAppError("SqlUserAccessTokenStore.UpdateTokenDisable", "store.sql_user_access_token.update_token_disable.app_error", nil, err.Error(), http.StatusInternalServerError) + return errors.Wrap(err, "begin_transaction") } defer finalizeTransaction(transaction) @@ -216,12 +218,12 @@ func (s SqlUserAccessTokenStore) UpdateTokenDisable(tokenId string) *model.AppEr } if err := transaction.Commit(); err != nil { // don't need to rollback here since the transaction is already closed - return model.NewAppError("SqlUserAccessTokenStore.UpdateTokenDisable", "store.sql_user_access_token.update_token_disable.app_error", nil, err.Error(), http.StatusInternalServerError) + return errors.Wrap(err, "commit_transaction") } return nil } -func (s SqlUserAccessTokenStore) deleteSessionsAndDisableToken(transaction *gorp.Transaction, tokenId string) *model.AppError { +func (s SqlUserAccessTokenStore) deleteSessionsAndDisableToken(transaction *gorp.Transaction, tokenId string) error { query := "" if s.DriverName() == model.DATABASE_DRIVER_POSTGRES { query = "DELETE FROM Sessions s USING UserAccessTokens o WHERE o.Token = s.Token AND o.Id = :Id" @@ -230,15 +232,15 @@ func (s SqlUserAccessTokenStore) deleteSessionsAndDisableToken(transaction *gorp } if _, err := transaction.Exec(query, map[string]interface{}{"Id": tokenId}); err != nil { - return model.NewAppError("SqlUserAccessTokenStore.deleteSessionsAndDisableToken", "store.sql_user_access_token.update_token_disable.app_error", nil, "id="+tokenId+", err="+err.Error(), http.StatusInternalServerError) + return errors.Wrapf(err, "failed to delete Sessions with UserAccessToken id=%s", tokenId) } return s.updateTokenDisable(transaction, tokenId) } -func (s SqlUserAccessTokenStore) updateTokenDisable(transaction *gorp.Transaction, tokenId string) *model.AppError { +func (s SqlUserAccessTokenStore) updateTokenDisable(transaction *gorp.Transaction, tokenId string) error { if _, err := transaction.Exec("UPDATE UserAccessTokens SET IsActive = FALSE WHERE Id = :Id", map[string]interface{}{"Id": tokenId}); err != nil { - return model.NewAppError("SqlUserAccessTokenStore.updateTokenDisable", "store.sql_user_access_token.update_token_disable.app_error", nil, "", http.StatusInternalServerError) + return errors.Wrapf(err, "failed to update UserAccessToken with id=%s", tokenId) } return nil diff --git a/store/store.go b/store/store.go index 63ea52d67e..32df563125 100644 --- a/store/store.go +++ b/store/store.go @@ -580,16 +580,16 @@ type JobStore interface { } type UserAccessTokenStore interface { - Save(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError) - DeleteAllForUser(userId string) *model.AppError - Delete(tokenId string) *model.AppError - Get(tokenId string) (*model.UserAccessToken, *model.AppError) - GetAll(offset int, limit int) ([]*model.UserAccessToken, *model.AppError) - GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError) - GetByUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) - Search(term string) ([]*model.UserAccessToken, *model.AppError) - UpdateTokenEnable(tokenId string) *model.AppError - UpdateTokenDisable(tokenId string) *model.AppError + Save(token *model.UserAccessToken) (*model.UserAccessToken, error) + DeleteAllForUser(userId string) error + Delete(tokenId string) error + Get(tokenId string) (*model.UserAccessToken, error) + GetAll(offset int, limit int) ([]*model.UserAccessToken, error) + GetByToken(tokenString string) (*model.UserAccessToken, error) + GetByUser(userId string, page, perPage int) ([]*model.UserAccessToken, error) + Search(term string) ([]*model.UserAccessToken, error) + UpdateTokenEnable(tokenId string) error + UpdateTokenDisable(tokenId string) error } type PluginStore interface { diff --git a/store/storetest/mocks/SqlSupplier.go b/store/storetest/mocks/SqlSupplier.go index 2b4f7c746f..a9347437a1 100644 --- a/store/storetest/mocks/SqlSupplier.go +++ b/store/storetest/mocks/SqlSupplier.go @@ -14,6 +14,20 @@ type SqlSupplier struct { mock.Mock } +// DriverName provides a mock function with given fields: +func (_m *SqlSupplier) DriverName() string { + ret := _m.Called() + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} + // GetMaster provides a mock function with given fields: func (_m *SqlSupplier) GetMaster() *gorp.DbMap { ret := _m.Called() diff --git a/store/storetest/mocks/UserAccessTokenStore.go b/store/storetest/mocks/UserAccessTokenStore.go index 2d65fd87f7..a5bd3777e6 100644 --- a/store/storetest/mocks/UserAccessTokenStore.go +++ b/store/storetest/mocks/UserAccessTokenStore.go @@ -15,39 +15,35 @@ type UserAccessTokenStore struct { } // Delete provides a mock function with given fields: tokenId -func (_m *UserAccessTokenStore) Delete(tokenId string) *model.AppError { +func (_m *UserAccessTokenStore) Delete(tokenId string) error { ret := _m.Called(tokenId) - var r0 *model.AppError - if rf, ok := ret.Get(0).(func(string) *model.AppError); ok { + var r0 error + if rf, ok := ret.Get(0).(func(string) error); ok { r0 = rf(tokenId) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*model.AppError) - } + r0 = ret.Error(0) } return r0 } // DeleteAllForUser provides a mock function with given fields: userId -func (_m *UserAccessTokenStore) DeleteAllForUser(userId string) *model.AppError { +func (_m *UserAccessTokenStore) DeleteAllForUser(userId string) error { ret := _m.Called(userId) - var r0 *model.AppError - if rf, ok := ret.Get(0).(func(string) *model.AppError); ok { + var r0 error + if rf, ok := ret.Get(0).(func(string) error); ok { r0 = rf(userId) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*model.AppError) - } + r0 = ret.Error(0) } return r0 } // Get provides a mock function with given fields: tokenId -func (_m *UserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, *model.AppError) { +func (_m *UserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, error) { ret := _m.Called(tokenId) var r0 *model.UserAccessToken @@ -59,20 +55,18 @@ func (_m *UserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, *mo } } - var r1 *model.AppError - if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { + var r1 error + if rf, ok := ret.Get(1).(func(string) error); ok { r1 = rf(tokenId) } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).(*model.AppError) - } + r1 = ret.Error(1) } return r0, r1 } // GetAll provides a mock function with given fields: offset, limit -func (_m *UserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAccessToken, *model.AppError) { +func (_m *UserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAccessToken, error) { ret := _m.Called(offset, limit) var r0 []*model.UserAccessToken @@ -84,20 +78,18 @@ func (_m *UserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAcce } } - var r1 *model.AppError - if rf, ok := ret.Get(1).(func(int, int) *model.AppError); ok { + var r1 error + if rf, ok := ret.Get(1).(func(int, int) error); ok { r1 = rf(offset, limit) } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).(*model.AppError) - } + r1 = ret.Error(1) } return r0, r1 } // GetByToken provides a mock function with given fields: tokenString -func (_m *UserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError) { +func (_m *UserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, error) { ret := _m.Called(tokenString) var r0 *model.UserAccessToken @@ -109,20 +101,18 @@ func (_m *UserAccessTokenStore) GetByToken(tokenString string) (*model.UserAcces } } - var r1 *model.AppError - if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { + var r1 error + if rf, ok := ret.Get(1).(func(string) error); ok { r1 = rf(tokenString) } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).(*model.AppError) - } + r1 = ret.Error(1) } return r0, r1 } // GetByUser provides a mock function with given fields: userId, page, perPage -func (_m *UserAccessTokenStore) GetByUser(userId string, page int, perPage int) ([]*model.UserAccessToken, *model.AppError) { +func (_m *UserAccessTokenStore) GetByUser(userId string, page int, perPage int) ([]*model.UserAccessToken, error) { ret := _m.Called(userId, page, perPage) var r0 []*model.UserAccessToken @@ -134,20 +124,18 @@ func (_m *UserAccessTokenStore) GetByUser(userId string, page int, perPage int) } } - var r1 *model.AppError - if rf, ok := ret.Get(1).(func(string, int, int) *model.AppError); ok { + var r1 error + if rf, ok := ret.Get(1).(func(string, int, int) error); ok { r1 = rf(userId, page, perPage) } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).(*model.AppError) - } + r1 = ret.Error(1) } return r0, r1 } // Save provides a mock function with given fields: token -func (_m *UserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError) { +func (_m *UserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, error) { ret := _m.Called(token) var r0 *model.UserAccessToken @@ -159,20 +147,18 @@ func (_m *UserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserA } } - var r1 *model.AppError - if rf, ok := ret.Get(1).(func(*model.UserAccessToken) *model.AppError); ok { + var r1 error + if rf, ok := ret.Get(1).(func(*model.UserAccessToken) error); ok { r1 = rf(token) } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).(*model.AppError) - } + r1 = ret.Error(1) } return r0, r1 } // Search provides a mock function with given fields: term -func (_m *UserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, *model.AppError) { +func (_m *UserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, error) { ret := _m.Called(term) var r0 []*model.UserAccessToken @@ -184,45 +170,39 @@ func (_m *UserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, * } } - var r1 *model.AppError - if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { + var r1 error + if rf, ok := ret.Get(1).(func(string) error); ok { r1 = rf(term) } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).(*model.AppError) - } + r1 = ret.Error(1) } return r0, r1 } // UpdateTokenDisable provides a mock function with given fields: tokenId -func (_m *UserAccessTokenStore) UpdateTokenDisable(tokenId string) *model.AppError { +func (_m *UserAccessTokenStore) UpdateTokenDisable(tokenId string) error { ret := _m.Called(tokenId) - var r0 *model.AppError - if rf, ok := ret.Get(0).(func(string) *model.AppError); ok { + var r0 error + if rf, ok := ret.Get(0).(func(string) error); ok { r0 = rf(tokenId) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*model.AppError) - } + r0 = ret.Error(0) } return r0 } // UpdateTokenEnable provides a mock function with given fields: tokenId -func (_m *UserAccessTokenStore) UpdateTokenEnable(tokenId string) *model.AppError { +func (_m *UserAccessTokenStore) UpdateTokenEnable(tokenId string) error { ret := _m.Called(tokenId) - var r0 *model.AppError - if rf, ok := ret.Get(0).(func(string) *model.AppError); ok { + var r0 error + if rf, ok := ret.Get(0).(func(string) error); ok { r0 = rf(tokenId) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*model.AppError) - } + r0 = ret.Error(0) } return r0 diff --git a/store/storetest/user_access_token_store.go b/store/storetest/user_access_token_store.go index f59eb55baa..a63a57b51a 100644 --- a/store/storetest/user_access_token_store.go +++ b/store/storetest/user_access_token_store.go @@ -31,8 +31,8 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { s1, err := ss.Session().Save(s1) require.Nil(t, err) - _, err = ss.UserAccessToken().Save(uat) - require.Nil(t, err) + _, nErr := ss.UserAccessToken().Save(uat) + require.Nil(t, nErr) result, terr := ss.UserAccessToken().Get(uat.Id) require.Nil(t, terr) @@ -42,8 +42,8 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { require.Nil(t, err2) require.Equal(t, received.Token, uat.Token, "received incorrect token after save") - _, err = ss.UserAccessToken().GetByToken("notarealtoken") - require.NotNil(t, err, "should have failed on bad token") + _, nErr = ss.UserAccessToken().GetByToken("notarealtoken") + require.NotNil(t, nErr, "should have failed on bad token") received2, err2 := ss.UserAccessToken().GetByUser(uat.UserId, 0, 100) require.Nil(t, err2) @@ -53,14 +53,14 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { require.Nil(t, appError) require.Equal(t, 1, len(result2), "received incorrect number of tokens after save") - err = ss.UserAccessToken().Delete(uat.Id) - require.Nil(t, err) + nErr = ss.UserAccessToken().Delete(uat.Id) + require.Nil(t, nErr) _, err = ss.Session().Get(s1.Token) require.NotNil(t, err, "should error - session should be deleted") - _, err = ss.UserAccessToken().GetByToken(s1.Token) - require.NotNil(t, err, "should error - access token should be deleted") + _, nErr = ss.UserAccessToken().GetByToken(s1.Token) + require.NotNil(t, nErr, "should error - access token should be deleted") s2 := &model.Session{} s2.UserId = uat.UserId @@ -69,17 +69,17 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { s2, err = ss.Session().Save(s2) require.Nil(t, err) - _, err = ss.UserAccessToken().Save(uat) - require.Nil(t, err) + _, nErr = ss.UserAccessToken().Save(uat) + require.Nil(t, nErr) - err = ss.UserAccessToken().DeleteAllForUser(uat.UserId) - require.Nil(t, err) + nErr = ss.UserAccessToken().DeleteAllForUser(uat.UserId) + require.Nil(t, nErr) _, err = ss.Session().Get(s2.Token) require.NotNil(t, err, "should error - session should be deleted") - _, err = ss.UserAccessToken().GetByToken(s2.Token) - require.NotNil(t, err, "should error - access token should be deleted") + _, nErr = ss.UserAccessToken().GetByToken(s2.Token) + require.NotNil(t, nErr, "should error - access token should be deleted") } func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) { @@ -96,11 +96,11 @@ func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) { s1, err := ss.Session().Save(s1) require.Nil(t, err) - _, err = ss.UserAccessToken().Save(uat) - require.Nil(t, err) + _, nErr := ss.UserAccessToken().Save(uat) + require.Nil(t, nErr) - err = ss.UserAccessToken().UpdateTokenDisable(uat.Id) - require.Nil(t, err) + nErr = ss.UserAccessToken().UpdateTokenDisable(uat.Id) + require.Nil(t, nErr) _, err = ss.Session().Get(s1.Token) require.NotNil(t, err, "should error - session should be deleted") @@ -112,8 +112,8 @@ func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) { s2, err = ss.Session().Save(s2) require.Nil(t, err) - err = ss.UserAccessToken().UpdateTokenEnable(uat.Id) - require.Nil(t, err) + nErr = ss.UserAccessToken().UpdateTokenEnable(uat.Id) + require.Nil(t, nErr) } func testUserAccessTokenSearch(t *testing.T, ss store.Store) { @@ -137,19 +137,19 @@ func testUserAccessTokenSearch(t *testing.T, ss store.Store) { s1, nErr := ss.Session().Save(s1) require.Nil(t, nErr) - _, err = ss.UserAccessToken().Save(uat) - require.Nil(t, err) + _, nErr = ss.UserAccessToken().Save(uat) + require.Nil(t, nErr) - received, err := ss.UserAccessToken().Search(uat.Id) - require.Nil(t, err) + received, nErr := ss.UserAccessToken().Search(uat.Id) + require.Nil(t, nErr) require.Equal(t, 1, len(received), "received incorrect number of tokens after search") - received, err = ss.UserAccessToken().Search(uat.UserId) - require.Nil(t, err) + received, nErr = ss.UserAccessToken().Search(uat.UserId) + require.Nil(t, nErr) require.Equal(t, 1, len(received), "received incorrect number of tokens after search") - received, err = ss.UserAccessToken().Search(u1.Username) - require.Nil(t, err) + received, nErr = ss.UserAccessToken().Search(u1.Username) + require.Nil(t, nErr) require.Equal(t, 1, len(received), "received incorrect number of tokens after search") } diff --git a/store/timer_layer.go b/store/timer_layer.go index 5aca686f77..7324016723 100644 --- a/store/timer_layer.go +++ b/store/timer_layer.go @@ -7892,7 +7892,7 @@ func (s *TimerLayerUserStore) VerifyEmail(userId string, email string) (string, return resultVar0, resultVar1 } -func (s *TimerLayerUserAccessTokenStore) Delete(tokenId string) *model.AppError { +func (s *TimerLayerUserAccessTokenStore) Delete(tokenId string) error { start := timemodule.Now() resultVar0 := s.UserAccessTokenStore.Delete(tokenId) @@ -7908,7 +7908,7 @@ func (s *TimerLayerUserAccessTokenStore) Delete(tokenId string) *model.AppError return resultVar0 } -func (s *TimerLayerUserAccessTokenStore) DeleteAllForUser(userId string) *model.AppError { +func (s *TimerLayerUserAccessTokenStore) DeleteAllForUser(userId string) error { start := timemodule.Now() resultVar0 := s.UserAccessTokenStore.DeleteAllForUser(userId) @@ -7924,7 +7924,7 @@ func (s *TimerLayerUserAccessTokenStore) DeleteAllForUser(userId string) *model. return resultVar0 } -func (s *TimerLayerUserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, *model.AppError) { +func (s *TimerLayerUserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, error) { start := timemodule.Now() resultVar0, resultVar1 := s.UserAccessTokenStore.Get(tokenId) @@ -7940,7 +7940,7 @@ func (s *TimerLayerUserAccessTokenStore) Get(tokenId string) (*model.UserAccessT return resultVar0, resultVar1 } -func (s *TimerLayerUserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAccessToken, *model.AppError) { +func (s *TimerLayerUserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAccessToken, error) { start := timemodule.Now() resultVar0, resultVar1 := s.UserAccessTokenStore.GetAll(offset, limit) @@ -7956,7 +7956,7 @@ func (s *TimerLayerUserAccessTokenStore) GetAll(offset int, limit int) ([]*model return resultVar0, resultVar1 } -func (s *TimerLayerUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError) { +func (s *TimerLayerUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, error) { start := timemodule.Now() resultVar0, resultVar1 := s.UserAccessTokenStore.GetByToken(tokenString) @@ -7972,7 +7972,7 @@ func (s *TimerLayerUserAccessTokenStore) GetByToken(tokenString string) (*model. return resultVar0, resultVar1 } -func (s *TimerLayerUserAccessTokenStore) GetByUser(userId string, page int, perPage int) ([]*model.UserAccessToken, *model.AppError) { +func (s *TimerLayerUserAccessTokenStore) GetByUser(userId string, page int, perPage int) ([]*model.UserAccessToken, error) { start := timemodule.Now() resultVar0, resultVar1 := s.UserAccessTokenStore.GetByUser(userId, page, perPage) @@ -7988,7 +7988,7 @@ func (s *TimerLayerUserAccessTokenStore) GetByUser(userId string, page int, perP return resultVar0, resultVar1 } -func (s *TimerLayerUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError) { +func (s *TimerLayerUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, error) { start := timemodule.Now() resultVar0, resultVar1 := s.UserAccessTokenStore.Save(token) @@ -8004,7 +8004,7 @@ func (s *TimerLayerUserAccessTokenStore) Save(token *model.UserAccessToken) (*mo return resultVar0, resultVar1 } -func (s *TimerLayerUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, *model.AppError) { +func (s *TimerLayerUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, error) { start := timemodule.Now() resultVar0, resultVar1 := s.UserAccessTokenStore.Search(term) @@ -8020,7 +8020,7 @@ func (s *TimerLayerUserAccessTokenStore) Search(term string) ([]*model.UserAcces return resultVar0, resultVar1 } -func (s *TimerLayerUserAccessTokenStore) UpdateTokenDisable(tokenId string) *model.AppError { +func (s *TimerLayerUserAccessTokenStore) UpdateTokenDisable(tokenId string) error { start := timemodule.Now() resultVar0 := s.UserAccessTokenStore.UpdateTokenDisable(tokenId) @@ -8036,7 +8036,7 @@ func (s *TimerLayerUserAccessTokenStore) UpdateTokenDisable(tokenId string) *mod return resultVar0 } -func (s *TimerLayerUserAccessTokenStore) UpdateTokenEnable(tokenId string) *model.AppError { +func (s *TimerLayerUserAccessTokenStore) UpdateTokenEnable(tokenId string) error { start := timemodule.Now() resultVar0 := s.UserAccessTokenStore.UpdateTokenEnable(tokenId)