package handlers_admin import ( "CatsOfMastodonBotGo/internal" "net/http" requestmodels "CatsOfMastodonBotGo/internal/models/requestModels" "github.com/gin-gonic/gin" ) type AdminDashboardHandler struct { AppContext *internal.AppContext } func NewAdminDashboardHandler(appContext *internal.AppContext) *AdminDashboardHandler { return &AdminDashboardHandler{ AppContext: appContext, } } func (appContext *AdminDashboardHandler) ApproveMedia(c *gin.Context) { var input requestmodels.ApproveMediaInput if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } if appContext.AppContext.PostService.ApproveMedia(input.MediaId) { c.JSON(http.StatusOK, gin.H{"message": "Media approved successfully"}) } else { c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to approve media"}) } } func (appContext *AdminDashboardHandler) RejectMedia(c *gin.Context) { var input requestmodels.RejectMediaInput if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } if appContext.AppContext.PostService.RejectMedia(input.MediaId) { c.JSON(http.StatusOK, gin.H{"message": "Media rejected successfully"}) } else { c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to reject media"}) } } func (appContext *AdminDashboardHandler) Login(c *gin.Context) { var input requestmodels.LoginInput // Validate data if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } if input.Password == appContext.AppContext.AdminPassword { // Its more than enough for this project token, err := appContext.AppContext.Jwt.GenerateToken(map[string]interface{}{"role": "admin"}) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Token generation failed"}) return } c.SetCookie("token", token, 3600, "/", "", false, true) c.JSON(http.StatusOK, gin.H{"message": "Login successful"}) } else { c.JSON(401, gin.H{ "YouAreOn": "Unauthorized", }) return } c.JSON(200, gin.H{ "YouAreOn": "Login", }) }