You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							45 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							45 lines
						
					
					
						
							1.2 KiB
						
					
					
				
								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)
							 | 
						|
								}
							 |