added check user privilege for update quiz with gigachat
This commit is contained in:
parent
b821a546c6
commit
a0617293af
@ -1971,6 +1971,13 @@ paths:
|
||||
schema:
|
||||
type: string
|
||||
default: invalid quiz id
|
||||
'402':
|
||||
description: Payment required need gigachat privilege
|
||||
content:
|
||||
'application/json':
|
||||
schema:
|
||||
type: string
|
||||
default: payment required
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
|
2
go.mod
2
go.mod
@ -6,7 +6,7 @@ require (
|
||||
gitea.pena/PenaSide/common v0.0.0-20250421103113-7e4b3ae9e1e0
|
||||
gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9
|
||||
gitea.pena/PenaSide/trashlog v0.0.0-20250224122049-ddb4d72e9d07
|
||||
gitea.pena/SQuiz/common v0.0.0-20250531072420-f9ec7a513967
|
||||
gitea.pena/SQuiz/common v0.0.0-20250605135518-be6361f19f4c
|
||||
github.com/caarlos0/env/v8 v8.0.0
|
||||
github.com/go-redis/redis/v8 v8.11.5
|
||||
github.com/gofiber/fiber/v2 v2.52.6
|
||||
|
2
go.sum
2
go.sum
@ -11,6 +11,8 @@ gitea.pena/SQuiz/common v0.0.0-20250514124515-870e52266ca5 h1:C+iCsGMSUJonOTNNk8
|
||||
gitea.pena/SQuiz/common v0.0.0-20250514124515-870e52266ca5/go.mod h1:zCrUwDh0APpztKk6NUqTZv+zhjVbWpGBJiJ5z9dAH0U=
|
||||
gitea.pena/SQuiz/common v0.0.0-20250531072420-f9ec7a513967 h1:pS6MAVGSp/84d8TpX8g+xlcKAgkf3ordEWFtpN9Evu0=
|
||||
gitea.pena/SQuiz/common v0.0.0-20250531072420-f9ec7a513967/go.mod h1:zCrUwDh0APpztKk6NUqTZv+zhjVbWpGBJiJ5z9dAH0U=
|
||||
gitea.pena/SQuiz/common v0.0.0-20250605135518-be6361f19f4c h1:yCpGpEmugxNiIO0nNjhyDi8zmxjd1qHZqEXY5NmINrA=
|
||||
gitea.pena/SQuiz/common v0.0.0-20250605135518-be6361f19f4c/go.mod h1:zCrUwDh0APpztKk6NUqTZv+zhjVbWpGBJiJ5z9dAH0U=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
|
||||
github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
|
||||
|
@ -548,7 +548,21 @@ func (r *Quiz) TemplateCopy(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusOK).JSON(fiber.Map{"id": qizID})
|
||||
}
|
||||
|
||||
func (s *Quiz) CreateQuizAuditory(ctx *fiber.Ctx) error {
|
||||
func (r *Quiz) CreateQuizAuditory(ctx *fiber.Ctx) error {
|
||||
accountID, ok := middleware.GetAccountId(ctx)
|
||||
if !ok {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("account id is required")
|
||||
}
|
||||
|
||||
account, err := r.dal.AccountRepo.GetAccountByID(ctx.Context(), accountID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString("can`t get account by account id")
|
||||
}
|
||||
|
||||
if _, ok := account.Privileges["quizGigaChat"]; !ok {
|
||||
return ctx.Status(fiber.StatusPaymentRequired).SendString("payment required")
|
||||
}
|
||||
|
||||
var req struct {
|
||||
Sex bool `json:"sex"` // false - female, true - male
|
||||
Age string `json:"age"`
|
||||
@ -568,7 +582,7 @@ func (s *Quiz) CreateQuizAuditory(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusBadRequest).SendString("Invalid request missing required fields")
|
||||
}
|
||||
|
||||
result, err := s.dal.QuizRepo.CreateQuizAudience(ctx.Context(), quiz.DepsCreateQuizAudience{
|
||||
result, err := r.dal.QuizRepo.CreateQuizAudience(ctx.Context(), quiz.DepsCreateQuizAudience{
|
||||
QuizID: quizID,
|
||||
Age: req.Age,
|
||||
Sex: req.Sex,
|
||||
@ -578,7 +592,7 @@ func (s *Quiz) CreateQuizAuditory(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
|
||||
err = s.producerGigaChat.ToGigaChatNotify(ctx.Context(), brokers.MessageGigaChat{
|
||||
err = r.producerGigaChat.ToGigaChatNotify(ctx.Context(), brokers.MessageGigaChat{
|
||||
ID: result,
|
||||
QuizID: quizID,
|
||||
Age: req.Age,
|
||||
@ -591,7 +605,7 @@ func (s *Quiz) CreateQuizAuditory(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusOK).JSON(fiber.Map{"ID": result})
|
||||
}
|
||||
|
||||
func (s *Quiz) GetQuizAuditory(ctx *fiber.Ctx) error {
|
||||
func (r *Quiz) GetQuizAuditory(ctx *fiber.Ctx) error {
|
||||
quizIDStr := ctx.Params("quizID")
|
||||
quizID, err := strconv.ParseInt(quizIDStr, 10, 64)
|
||||
if err != nil || quizID == 0 {
|
||||
@ -603,7 +617,7 @@ func (s *Quiz) GetQuizAuditory(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("account id is required")
|
||||
}
|
||||
|
||||
isOwner, err := s.dal.QuizRepo.CheckQuizOwner(ctx.Context(), accountID, uint64(quizID))
|
||||
isOwner, err := r.dal.QuizRepo.CheckQuizOwner(ctx.Context(), accountID, uint64(quizID))
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString("failed to check ownership: " + err.Error())
|
||||
}
|
||||
@ -612,7 +626,7 @@ func (s *Quiz) GetQuizAuditory(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusForbidden).SendString("you are not the owner")
|
||||
}
|
||||
|
||||
result, err := s.dal.QuizRepo.GetQuizAudience(ctx.Context(), quizID)
|
||||
result, err := r.dal.QuizRepo.GetQuizAudience(ctx.Context(), quizID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
@ -620,7 +634,7 @@ func (s *Quiz) GetQuizAuditory(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusOK).JSON(result)
|
||||
}
|
||||
|
||||
func (s *Quiz) DeleteQuizAuditory(ctx *fiber.Ctx) error {
|
||||
func (r *Quiz) DeleteQuizAuditory(ctx *fiber.Ctx) error {
|
||||
quizIDStr := ctx.Params("quizID")
|
||||
quizID, err := strconv.ParseInt(quizIDStr, 10, 64)
|
||||
if err != nil || quizID == 0 {
|
||||
@ -638,7 +652,7 @@ func (s *Quiz) DeleteQuizAuditory(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("account id is required")
|
||||
}
|
||||
|
||||
isOwner, err := s.dal.QuizRepo.CheckIsOwnerAudience(ctx.Context(), quizID, audienceID, accountID)
|
||||
isOwner, err := r.dal.QuizRepo.CheckIsOwnerAudience(ctx.Context(), quizID, audienceID, accountID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString("failed to check ownership: " + err.Error())
|
||||
}
|
||||
@ -646,7 +660,7 @@ func (s *Quiz) DeleteQuizAuditory(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusForbidden).SendString("you are not the owner of this quiz audience")
|
||||
}
|
||||
|
||||
err = s.dal.QuizRepo.DeleteQuizAudience(ctx.Context(), quizID, audienceID)
|
||||
err = r.dal.QuizRepo.DeleteQuizAudience(ctx.Context(), quizID, audienceID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user