Adds user by username model method

This commit is contained in:
Deepak Mallubhotla 2021-01-24 19:26:47 -06:00
parent c1ae0706f9
commit 96b22a2254
Signed by: deepak
GPG Key ID: 64BF53A3369104E7
2 changed files with 26 additions and 0 deletions

View File

@ -77,6 +77,18 @@ func (m *Model) CreateUser(req *CreateUserRequest) (int, error) {
return m.InsertUser(desiredUser)
}
// UserByUsername retrieves a single username from the store, verifying the passed in userID.
func (m *Model) UserByUsername(username string, userID int) (*UserNoPassword, error) {
user, err := m.SelectUserByUsername(username)
if user == nil {
return nil, wrapNotFound(err)
}
if int(user.UserID) != userID {
return nil, &notFoundError{error: fmt.Errorf("provided userID does not match the retrieved user")}
}
return user.NoPassword(), wrapNotFound(err)
}
// hashPassword hashes a password
func hashPassword(password string) ([]byte, error) {
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 11)

View File

@ -25,6 +25,20 @@ func TestModelUsers(t *testing.T) {
str.InsertUser(user1)
m := models.New(str)
userNoPass, err := m.UserByUsername("test1", 1)
assert.Nil(err)
assert.NotNil(userNoPass)
userNoPass, err = m.UserByUsername("test1", 2)
assert.NotNil(err)
assert.True(models.IsNotFoundError(err))
assert.Nil(userNoPass)
userNoPass, err = m.UserByUsername("test2", 2)
assert.NotNil(err)
assert.True(models.IsNotFoundError(err))
assert.Nil(userNoPass)
user, err := m.VerifyUserByUsernamePassword("test1", "password")
assert.Nil(err)
assert.NotNil(user)