package handlers import ( "os" "time" "server/internal/models" "github.com/gofiber/fiber/v2" "gorm.io/gorm" ) // GetQldtToken lấy token từ database, nếu không có sẽ lấy từ biến môi trường func GetQldtToken(db *gorm.DB) string { var setting models.SystemSetting if err := db.Where("setting_key = ?", "QLDT_TOKEN").First(&setting).Error; err == nil && setting.SettingValue != "" { return setting.SettingValue } return os.Getenv("QLDT_TOKEN") } // GetQldtTokenHandler trả về token hiện tại (chỉ hỗ trợ phuocntb@rikkeiacademy.com) func GetQldtTokenHandler(db *gorm.DB) fiber.Handler { return func(c *fiber.Ctx) error { email, _ := c.Locals("staffEmail").(string) if email != "phuocntb@rikkeiacademy.com" { return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "Bạn không có quyền truy cập thông tin này"}) } token := GetQldtToken(db) return c.JSON(fiber.Map{"token": token}) } } // SaveQldtTokenHandler lưu token mới vào database (chỉ hỗ trợ phuocntb@rikkeiacademy.com) func SaveQldtTokenHandler(db *gorm.DB) fiber.Handler { return func(c *fiber.Ctx) error { email, _ := c.Locals("staffEmail").(string) if email != "phuocntb@rikkeiacademy.com" { return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "Bạn không có quyền thực hiện thao tác này"}) } var body struct { Token string `json:"token"` } if err := c.BodyParser(&body); err != nil { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Yêu cầu không hợp lệ"}) } setting := models.SystemSetting{ SettingKey: "QLDT_TOKEN", SettingValue: body.Token, UpdatedAt: time.Now(), } if err := db.Save(&setting).Error; err != nil { return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Lỗi lưu cấu hình: " + err.Error()}) } return c.JSON(fiber.Map{"ok": true, "message": "Đã cập nhật QLDT_TOKEN thành công"}) } }