fix ownership for result handlers
This commit is contained in:
parent
bff28a1109
commit
56e2a066ab
@ -41,7 +41,6 @@ type ReqExportResponse struct {
|
||||
Results []model.AnswerExport `json:"results"`
|
||||
}
|
||||
|
||||
// todo тут возможно такое что результат не принадлежит акаунту тк ид аккаунта не используется в запросе
|
||||
func (r *Result) GetResultsByQuizID(ctx *fiber.Ctx) error {
|
||||
payment := true // параметр для определения существования текущих привилегий юзера
|
||||
|
||||
@ -61,6 +60,15 @@ func (r *Result) GetResultsByQuizID(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusBadRequest).SendString("Invalid quiz ID format")
|
||||
}
|
||||
|
||||
isOwner, err := r.dal.QuizRepo.CheckQuizOwner(ctx.Context(), accountID, quizID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
|
||||
if !isOwner {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("not the owner")
|
||||
}
|
||||
|
||||
account, err := r.dal.AccountRepo.GetAccountByID(ctx.Context(), accountID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
@ -150,7 +158,6 @@ func (r *Result) SetStatus(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusOK).JSON(nil)
|
||||
}
|
||||
|
||||
// todo тоже не можем получить не относящиеся результаты к аккаунту так как имеем что то вроде проверки в GetQuizById
|
||||
func (r *Result) ExportResultsToCSV(ctx *fiber.Ctx) error {
|
||||
accountID, ok := middleware.GetAccountId(ctx)
|
||||
if !ok {
|
||||
@ -212,7 +219,6 @@ func (r *Result) ExportResultsToCSV(ctx *fiber.Ctx) error {
|
||||
return ctx.Send(buffer.Bytes())
|
||||
}
|
||||
|
||||
// todo возможна ситуация получения чужих результатов, нужна проверка от CheckResultOwner
|
||||
func (r *Result) GetResultAnswers(ctx *fiber.Ctx) error {
|
||||
accountID, ok := middleware.GetAccountId(ctx)
|
||||
if !ok {
|
||||
@ -224,6 +230,15 @@ func (r *Result) GetResultAnswers(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusBadRequest).SendString("invalid quiz ID")
|
||||
}
|
||||
|
||||
isOwner, err := r.dal.ResultRepo.CheckResultOwner(ctx.Context(), resultID, accountID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
|
||||
if !isOwner {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("not the owner of the result")
|
||||
}
|
||||
|
||||
account, err := r.dal.AccountRepo.GetAccountByID(ctx.Context(), accountID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
|
Loading…
Reference in New Issue
Block a user