add change password

This commit is contained in:
2026-09-09 18:53:08 +07:00
parent 4feece62c8
commit 0fb4a6f37b
10 changed files with 1161 additions and 598 deletions
+23
View File
@@ -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
}