generated from VLADIMIR/template
202 lines
5.7 KiB
Go
202 lines
5.7 KiB
Go
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
|
|
}
|