package app import ( "context" "evening_detective_server/internal/modules/processor_jwt" "evening_detective_server/internal/modules/roles" proto "evening_detective_server/proto" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) func (s *server) AddScenarioPlace(ctx context.Context, req *proto.AddScenarioPlaceReq) (*proto.AddScenarioPlaceRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } err := s.scenarioService.AddScenarioPlace( ctx, int(req.Id), convertPlace(req.Place), claims.UserID, roles.HasRole(claims, roles.Admin), ) if err != nil { return &proto.AddScenarioPlaceRsp{ Error: err.Error(), }, nil } return &proto.AddScenarioPlaceRsp{}, nil } func (s *server) UpdateScenarioPlace(ctx context.Context, req *proto.UpdateScenarioPlaceReq) (*proto.UpdateScenarioPlaceRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } err := s.scenarioService.UpdateScenarioPlace( ctx, int(req.Id), req.Code, convertPlace(req.Place), claims.UserID, roles.HasRole(claims, roles.Admin), ) if err != nil { return &proto.UpdateScenarioPlaceRsp{ Error: err.Error(), }, nil } return &proto.UpdateScenarioPlaceRsp{}, nil } func (s *server) DeleteScenarioPlace(ctx context.Context, req *proto.DeleteScenarioPlaceReq) (*proto.DeleteScenarioPlaceRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } err := s.scenarioService.DeleteScenarioPlace( ctx, int(req.Id), req.Code, claims.UserID, roles.HasRole(claims, roles.Admin), ) if err != nil { return &proto.DeleteScenarioPlaceRsp{ Error: err.Error(), }, nil } return &proto.DeleteScenarioPlaceRsp{}, nil } func (s *server) AddScenarioQuestion(ctx context.Context, req *proto.AddScenarioQuestionReq) (*proto.AddScenarioQuestionRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } err := s.scenarioService.AddScenarioQuestion( ctx, int(req.Id), convertQuestion(req.Question), claims.UserID, roles.HasRole(claims, roles.Admin), ) if err != nil { return &proto.AddScenarioQuestionRsp{ Error: err.Error(), }, nil } return &proto.AddScenarioQuestionRsp{}, nil } func (s *server) UpdateScenarioQuestion(ctx context.Context, req *proto.UpdateScenarioQuestionReq) (*proto.UpdateScenarioQuestionRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } err := s.scenarioService.UpdateScenarioQuestion( ctx, int(req.Id), req.Code, convertQuestion(req.Question), claims.UserID, roles.HasRole(claims, roles.Admin), ) if err != nil { return &proto.UpdateScenarioQuestionRsp{ Error: err.Error(), }, nil } return &proto.UpdateScenarioQuestionRsp{}, nil } func (s *server) DeleteScenarioQuestion(ctx context.Context, req *proto.DeleteScenarioQuestionReq) (*proto.DeleteScenarioQuestionRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } err := s.scenarioService.DeleteScenarioQuestion( ctx, int(req.Id), req.Code, claims.UserID, roles.HasRole(claims, roles.Admin), ) if err != nil { return &proto.DeleteScenarioQuestionRsp{ Error: err.Error(), }, nil } return &proto.DeleteScenarioQuestionRsp{}, nil } func (s *server) UpdateScenarioBackground(ctx context.Context, req *proto.UpdateScenarioBackgroundReq) (*proto.UpdateScenarioBackgroundRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } err := s.scenarioService.UpdateScenarioBackground( ctx, int(req.Id), req.Background, claims.UserID, roles.HasRole(claims, roles.Admin), ) if err != nil { return &proto.UpdateScenarioBackgroundRsp{ Error: err.Error(), }, nil } return &proto.UpdateScenarioBackgroundRsp{}, nil } func (s *server) UpdateScenarioIntro(ctx context.Context, req *proto.UpdateScenarioIntroReq) (*proto.UpdateScenarioIntroRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } err := s.scenarioService.UpdateScenarioIntro( ctx, int(req.Id), convertIntroduction(req.Introduction), claims.UserID, roles.HasRole(claims, roles.Admin), ) if err != nil { return &proto.UpdateScenarioIntroRsp{ Error: err.Error(), }, nil } return &proto.UpdateScenarioIntroRsp{}, nil } func (s *server) UpdateScenarioConclusion(ctx context.Context, req *proto.UpdateScenarioConclusionReq) (*proto.UpdateScenarioConclusionRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } if err := s.scenarioService.UpdateScenarioConclusion(ctx, int(req.Id), convertConclusion(req.Conclusion), claims.UserID, roles.HasRole(claims, roles.Admin)); err != nil { return &proto.UpdateScenarioConclusionRsp{Error: err.Error()}, nil } return &proto.UpdateScenarioConclusionRsp{}, nil }