Adds user by username model method
This commit is contained in:
parent
c1ae0706f9
commit
96b22a2254
@ -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, ¬FoundError{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)
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user