This commit is contained in:
2026-10-03 17:11:51 +07:00
parent 7d4361a315
commit fdb9729463
+6
View File
@@ -3,6 +3,7 @@ package app
import (
"context"
"errors"
"log"
"net/netip"
"strings"
@@ -215,12 +216,17 @@ func (s *server) GetPermissions(ctx context.Context, _ *proto.GetPermissionsReq)
func (s *server) ChangeUserPassword(ctx context.Context, req *proto.ChangeUserPasswordReq) (*proto.ChangeUserPasswordRsp, error) {
claims, ok := processor_jwt.ClaimsFromContext(ctx)
if !ok || claims == nil {
log.Printf("change user password failed: authentication missing, target_user_id=%d", req.GetID())
return nil, status.Error(codes.Unauthenticated, "Требуется авторизация")
}
if !roles.HasRole(claims, roles.Admin) {
log.Printf("change user password failed: admin role required, actor_user_id=%d target_user_id=%d", claims.UserID, req.GetID())
return nil, status.Error(codes.PermissionDenied, "Недостаточно прав")
}
err := s.usersService.ChangeUserPassword(ctx, claims.UserID, int(req.GetID()), req.GetNewPassword())
if err != nil {
log.Printf("change user password failed: actor_user_id=%d target_user_id=%d: %v", claims.UserID, req.GetID(), err)
}
switch {
case errors.Is(err, users_service.ErrPasswordChangeForbidden):
return nil, status.Error(codes.PermissionDenied, err.Error())