/
gnomdeployer
/
VUZPlus
Обзор
Документация
Войти
/
gnomdeployer
/
VUZPlus
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
server/internal/api/handler/admin.go
140 строк
7 KB
maximmalchevsky
ya ustal
18 апр 2025, 21:52
18 апр 2025, 21:52
88b1d0c
Код
Авторство
О чём код?
package handler import ( "fmt" "github.com/gofiber/fiber/v2" "vuzplus/internal/shared/log" ) // GetDelegatesRegistrations // @Tags Admin // @Summary Получение заявок представителей на регистрацию // @Description Возвращает список заявок представителей вуза на регистрацию // @Accept json // @Produce json // @Success 200 {array} entities.DelegateRegistration "Список заявок" // @Failure 400 {object} entities.Error "Некорректный запрос" // @Failure 401 {object} entities.Error "Ошибка аутентификации" // @Failure 403 {object} entities.Error "Недостаточно прав" // @Failure 500 {object} entities.Error "Ошибка на стороне сервера" // @Router /auth/delegates/registrations [get] // @Security ApiKeyAuth func (h *Handler) GetDelegatesRegistrations(c *fiber.Ctx) error { adminId, ok := c.Locals("id").(int) if !ok { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusBadRequest}) logEvent.Msg("error: cant get id from token") return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "cant get id from token"}) } h.logger.Debug().Msg("call h.repository.DB.DBGetRoleById") userStatus, err := h.repository.DB.DBGetRoleById(adminId) if err != nil { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusBadRequest}) logEvent.Msg(err.Error()) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()}) } if userStatus.Role == "admin" && userStatus.Status == "verified" { h.logger.Debug().Msg("call h.repository.DB.DBGetUniversityIdByUserId") universityID, err := h.repository.DB.DBGetUniversityIdByUserId(adminId) if err != nil { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusBadRequest}) logEvent.Msg(err.Error()) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()}) } h.logger.Debug().Msg("call h.repository.DB.DBGetDelegateRegistrations") delegates, err := h.repository.DB.DBGetDelegateRegistrations(universityID) if err != nil { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusBadRequest}) logEvent.Msg(err.Error()) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()}) } logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Info", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusOK}) logEvent.Msg("successful getting all delegates registrations") return c.Status(fiber.StatusOK).JSON(delegates) } else { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusOK}) logEvent.Msg("error: There are not enough rights for this action") return c.Status(fiber.StatusOK).JSON(fiber.Map{"error": "There are not enough rights for this action"}) } } // ChangeUserStatus // @Tags Admin // @Summary Изменение статуса верификации пользователя // @Description Позволяет изменить статус верификации пользователя на указанный // @Accept json // @Produce json // @Param user_id query int true "ID пользователя" // @Param status query string true "Статус (in check, verified, rejected)" // @Success 200 {string} string "Статус успешно изменён" // @Failure 400 {object} entities.Error "Некорректный запрос" // @Failure 403 {object} entities.Error "Недостаточно прав" // @Failure 500 {object} entities.Error "Ошибка на стороне сервера" // @Router /auth/users/status [put] // @Security ApiKeyAuth func (h *Handler) ChangeUserStatus(c *fiber.Ctx) error { adminId, ok := c.Locals("id").(int) if !ok { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusBadRequest}) logEvent.Msg("error: cant get id from token") return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "cant get id from token"}) } h.logger.Debug().Msg("call h.repository.DB.DBGetRoleById") userStatus, err := h.repository.DB.DBGetRoleById(adminId) if err != nil { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusBadRequest}) logEvent.Msg(err.Error()) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()}) } if (userStatus.Role == "admin" || userStatus.Role == "delegate") && userStatus.Status == "verified" { newStatus := c.Query("status") userID := c.QueryInt("user_id", 0) if userID == 0 { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusInternalServerError}) logEvent.Msg("error: invalid user id") return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "invalid user id"}) } if newStatus != "in check" && newStatus != "verified" && newStatus != "rejected" { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusInternalServerError}) logEvent.Msg("error: invalid status") return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "invalid status"}) } h.logger.Debug().Msg("call h.repository.DB.DBChangeUserStatus") err := h.repository.DB.DBChangeUserStatus(userID, newStatus) if err != nil { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusBadRequest}) logEvent.Msg(err.Error()) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()}) } logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Info", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusOK}) logEvent.Msg("successful getting all delegates applications") return c.Status(fiber.StatusOK).JSON(fmt.Sprintf("successfuly set user with id=%d status %s", userID, newStatus)) } else { logEvent := log.CreateLog(h.logger, log.LogsField{Level: "Error", Method: c.Method(), Url: c.OriginalURL(), Status: fiber.StatusForbidden}) logEvent.Msg("error: There are not enough rights for this action") return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "There are not enough rights for this action"}) } }