generated from VLADIMIR/template
add change password
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
"evening_detective_server/internal/modules/scenario_archive"
|
||||
"evening_detective_server/internal/modules/string_tools"
|
||||
"evening_detective_server/internal/repos/scenarios_repo"
|
||||
"evening_detective_server/internal/repos/users_repo"
|
||||
"evening_detective_server/internal/services/file_service"
|
||||
"evening_detective_server/internal/services/game_service"
|
||||
"evening_detective_server/internal/services/scenarios_service"
|
||||
@@ -1226,3 +1227,25 @@ func (s *server) SetTeamAnswerScore(ctx context.Context, req *proto.SetTeamAnswe
|
||||
|
||||
return &proto.SetTeamAnswerScoreRsp{}, nil
|
||||
}
|
||||
|
||||
func (s *server) ChangeUserPassword(ctx context.Context, req *proto.ChangeUserPasswordReq) (*proto.ChangeUserPasswordRsp, error) {
|
||||
claims, ok := ctx.Value("claims").(*processor_jwt.JWTClaims)
|
||||
if !ok || claims == nil {
|
||||
return nil, status.Error(codes.Unauthenticated, "Требуется авторизация")
|
||||
}
|
||||
if !roles.HasRole(claims, roles.Admin) {
|
||||
return nil, status.Error(codes.PermissionDenied, "Недостаточно прав")
|
||||
}
|
||||
err := s.usersService.ChangeUserPassword(ctx, claims.UserID, int(req.GetId()), req.GetNewPassword())
|
||||
switch {
|
||||
case errors.Is(err, users_service.ErrPasswordChangeForbidden):
|
||||
return nil, status.Error(codes.PermissionDenied, err.Error())
|
||||
case errors.Is(err, users_service.ErrInvalidPasswordChange):
|
||||
return nil, status.Error(codes.InvalidArgument, err.Error())
|
||||
case errors.Is(err, users_repo.ErrUserNotFound):
|
||||
return nil, status.Error(codes.NotFound, err.Error())
|
||||
case err != nil:
|
||||
return nil, status.Error(codes.Internal, "Не удалось изменить пароль")
|
||||
}
|
||||
return &proto.ChangeUserPasswordRsp{}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user