diff options
Diffstat (limited to 'weed/admin/handlers/auth_handlers.go')
| -rw-r--r-- | weed/admin/handlers/auth_handlers.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/weed/admin/handlers/auth_handlers.go b/weed/admin/handlers/auth_handlers.go new file mode 100644 index 000000000..07596b8e4 --- /dev/null +++ b/weed/admin/handlers/auth_handlers.go @@ -0,0 +1,45 @@ +package handlers + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "github.com/seaweedfs/seaweedfs/weed/admin/dash" + "github.com/seaweedfs/seaweedfs/weed/admin/view/layout" +) + +// AuthHandlers contains authentication-related HTTP handlers +type AuthHandlers struct { + adminServer *dash.AdminServer +} + +// NewAuthHandlers creates a new instance of AuthHandlers +func NewAuthHandlers(adminServer *dash.AdminServer) *AuthHandlers { + return &AuthHandlers{ + adminServer: adminServer, + } +} + +// ShowLogin displays the login page +func (a *AuthHandlers) ShowLogin(c *gin.Context) { + errorMessage := c.Query("error") + + // Render login template + c.Header("Content-Type", "text/html") + loginComponent := layout.LoginForm(c, "SeaweedFS Admin", errorMessage) + err := loginComponent.Render(c.Request.Context(), c.Writer) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to render login template: " + err.Error()}) + return + } +} + +// HandleLogin handles login form submission +func (a *AuthHandlers) HandleLogin(username, password string) gin.HandlerFunc { + return a.adminServer.HandleLogin(username, password) +} + +// HandleLogout handles user logout +func (a *AuthHandlers) HandleLogout(c *gin.Context) { + a.adminServer.HandleLogout(c) +} |
