Migrate 'UserAccessToken.GetByToken' to Sync by default (#11321)

This commit is contained in:
Shota Gvinepadze
2019-06-21 01:37:38 +04:00
committed by Jesús Espino
parent 66993e1fae
commit e9e65fe8bb
5 changed files with 32 additions and 28 deletions

View File

@@ -262,12 +262,10 @@ func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAc
}
func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Session, *model.AppError) {
var token *model.UserAccessToken
result := <-a.Srv.Store.UserAccessToken().GetByToken(tokenString)
if result.Err != nil {
return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, result.Err.Error(), http.StatusUnauthorized)
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 = result.Data.(*model.UserAccessToken)
if !token.IsActive {
return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, "inactive_token", http.StatusUnauthorized)

View File

@@ -172,20 +172,17 @@ func (s SqlUserAccessTokenStore) GetAll(offset, limit int) ([]*model.UserAccessT
return tokens, nil
}
func (s SqlUserAccessTokenStore) GetByToken(tokenString string) store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
token := model.UserAccessToken{}
func (s SqlUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError) {
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 {
result.Err = model.NewAppError("SqlUserAccessTokenStore.GetByToken", "store.sql_user_access_token.get_by_token.app_error", nil, err.Error(), http.StatusNotFound)
} else {
result.Err = model.NewAppError("SqlUserAccessTokenStore.GetByToken", "store.sql_user_access_token.get_by_token.app_error", nil, err.Error(), http.StatusInternalServerError)
}
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, model.NewAppError("SqlUserAccessTokenStore.GetByToken", "store.sql_user_access_token.get_by_token.app_error", nil, err.Error(), http.StatusInternalServerError)
}
result.Data = &token
})
return &token, nil
}
func (s SqlUserAccessTokenStore) GetByUser(userId string, offset, limit int) store.StoreChannel {

View File

@@ -520,7 +520,7 @@ type UserAccessTokenStore interface {
DeleteAllForUser(userId string) StoreChannel
Get(tokenId string) (*model.UserAccessToken, *model.AppError)
GetAll(offset int, limit int) ([]*model.UserAccessToken, *model.AppError)
GetByToken(tokenString string) StoreChannel
GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError)
GetByUser(userId string, page, perPage int) StoreChannel
Search(term string) StoreChannel
UpdateTokenEnable(tokenId string) StoreChannel

View File

@@ -96,19 +96,28 @@ func (_m *UserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAcce
}
// GetByToken provides a mock function with given fields: tokenString
func (_m *UserAccessTokenStore) GetByToken(tokenString string) store.StoreChannel {
func (_m *UserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, *model.AppError) {
ret := _m.Called(tokenString)
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok {
var r0 *model.UserAccessToken
if rf, ok := ret.Get(0).(func(string) *model.UserAccessToken); ok {
r0 = rf(tokenString)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).(*model.UserAccessToken)
}
}
return r0
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
r1 = rf(tokenString)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
}
// GetByUser provides a mock function with given fields: userId, page, perPage

View File

@@ -41,13 +41,13 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) {
t.Fatal("received incorrect token after save")
}
if result := <-ss.UserAccessToken().GetByToken(uat.Token); result.Err != nil {
t.Fatal(result.Err)
} else if received := result.Data.(*model.UserAccessToken); received.Token != uat.Token {
if received, err2 := ss.UserAccessToken().GetByToken(uat.Token); err2 != nil {
t.Fatal(err2)
} else if received.Token != uat.Token {
t.Fatal("received incorrect token after save")
}
if result := <-ss.UserAccessToken().GetByToken("notarealtoken"); result.Err == nil {
if _, err = ss.UserAccessToken().GetByToken("notarealtoken"); err == nil {
t.Fatal("should have failed on bad token")
}
@@ -71,7 +71,7 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) {
t.Fatal("should error - session should be deleted")
}
if err = (<-ss.UserAccessToken().GetByToken(s1.Token)).Err; err == nil {
if _, err = ss.UserAccessToken().GetByToken(s1.Token); err == nil {
t.Fatal("should error - access token should be deleted")
}
@@ -94,7 +94,7 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) {
t.Fatal("should error - session should be deleted")
}
if err := (<-ss.UserAccessToken().GetByToken(s2.Token)).Err; err == nil {
if _, err := ss.UserAccessToken().GetByToken(s2.Token); err == nil {
t.Fatal("should error - access token should be deleted")
}
}