add roles routes

This commit is contained in:
2026-07-06 23:32:38 +07:00
parent 728fcc6fda
commit 82ffda5c0a
9 changed files with 1029 additions and 39 deletions
+41 -1
View File
@@ -3,6 +3,7 @@ package app
import (
"context"
"evening_detective_server/internal/modules/processor_jwt"
"evening_detective_server/internal/modules/roles"
"evening_detective_server/internal/services/users_service"
proto "evening_detective_server/proto"
@@ -80,7 +81,7 @@ func (s *server) Refresh(ctx context.Context, req *proto.RefreshReq) (*proto.Ref
func (s *server) GetUsers(ctx context.Context, req *proto.GetUsersReq) (*proto.GetUsersRsp, error) {
claims := ctx.Value("claims").(*processor_jwt.JWTClaims)
if !claims.HasRole("admin") {
if !claims.HasRole(roles.Admin) {
return nil, status.Errorf(codes.PermissionDenied, "permission denied")
}
users, err := s.usersService.GetUsers(ctx)
@@ -99,6 +100,19 @@ func (s *server) GetUsers(ctx context.Context, req *proto.GetUsersReq) (*proto.G
}, nil
}
func (s *server) GetUserById(ctx context.Context, req *proto.GetUserByIdReq) (*proto.GetUserByIdRsp, error) {
user, err := s.usersService.GetUserByID(ctx, int(req.Id))
if err != nil {
return &proto.GetUserByIdRsp{
Error: err.Error(),
}, nil
}
return &proto.GetUserByIdRsp{
User: mapUser(user),
}, nil
}
func (s *server) GetMe(ctx context.Context, req *proto.GetMeReq) (*proto.GetMeRsp, error) {
claims := ctx.Value("claims").(*processor_jwt.JWTClaims)
user, err := s.usersService.GetUserByID(ctx, claims.UserID)
@@ -112,3 +126,29 @@ func (s *server) GetMe(ctx context.Context, req *proto.GetMeReq) (*proto.GetMeRs
User: mapUser(user),
}, nil
}
func (s *server) AddUserRole(ctx context.Context, req *proto.AddUserRoleReq) (*proto.AddUserRoleRsp, error) {
claims := ctx.Value("claims").(*processor_jwt.JWTClaims)
if !claims.HasRole(roles.Admin) {
return nil, status.Errorf(codes.PermissionDenied, "permission denied")
}
if err := s.usersService.AddUserRole(ctx, int(req.Id), req.Role); err != nil {
return &proto.AddUserRoleRsp{
Error: err.Error(),
}, nil
}
return &proto.AddUserRoleRsp{}, nil
}
func (s *server) DeleteUserRole(ctx context.Context, req *proto.DeleteUserRoleReq) (*proto.DeleteUserRoleRsp, error) {
claims := ctx.Value("claims").(*processor_jwt.JWTClaims)
if !claims.HasRole(roles.Admin) {
return nil, status.Errorf(codes.PermissionDenied, "permission denied")
}
if err := s.usersService.DeleteUserRole(ctx, int(req.Id), req.Role); err != nil {
return &proto.DeleteUserRoleRsp{
Error: err.Error(),
}, nil
}
return &proto.DeleteUserRoleRsp{}, nil
}