generated from VLADIMIR/template
fix
This commit is contained in:
@@ -24,7 +24,7 @@ func TestChangeUserPassword(t *testing.T) {
|
||||
{"missing actor", "admin", "123456789012", 4, 2, ErrPasswordChangeForbidden},
|
||||
{"self", "admin", "123456789012", 1, 1, ErrInvalidPasswordChange},
|
||||
{"bad id", "admin", "123456789012", 1, -1, ErrInvalidPasswordChange},
|
||||
{"missing target", "admin", "123456789012", 1, 4, users_repo.ErrUserNotFound},
|
||||
{"missing target", "admin", "123456789012", 1, 4, ErrUserNotFound},
|
||||
{"empty", "admin", "", 1, 2, ErrInvalidPasswordChange},
|
||||
{"8 characters", "admin", "abcdefgh", 1, 2, nil},
|
||||
{"8 unicode characters", "admin", "яяббввгг", 1, 2, nil},
|
||||
|
||||
@@ -370,6 +370,8 @@ func (s *UsersService) DeleteUserRole(
|
||||
var (
|
||||
ErrPasswordChangeForbidden = errors.New("Изменять чужой пароль может только администратор")
|
||||
ErrInvalidPasswordChange = errors.New("Укажите чужой положительный ID и пароль от 8 до 16 символов")
|
||||
// ErrUserNotFound — целевой пользователь не найден.
|
||||
ErrUserNotFound = errors.New("Пользователь не найден")
|
||||
)
|
||||
|
||||
// ChangeUserPassword сохраняет только хеш; действующие сеансы не изменяются.
|
||||
@@ -390,11 +392,20 @@ func (s *UsersService) ChangeUserPassword(ctx context.Context, actorID, userID i
|
||||
}
|
||||
user, err := s.usersRepo.GetUserByID(ctx, userID)
|
||||
if err != nil {
|
||||
if errors.Is(err, users_repo.ErrUserNotFound) {
|
||||
return ErrUserNotFound
|
||||
}
|
||||
return err
|
||||
}
|
||||
hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return s.usersRepo.UpdateUserPassword(ctx, user.Email, string(hash))
|
||||
if err := s.usersRepo.UpdateUserPassword(ctx, user.Email, string(hash)); err != nil {
|
||||
if errors.Is(err, users_repo.ErrUserNotFound) {
|
||||
return ErrUserNotFound
|
||||
}
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user