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.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							53 lines
						
					
					
						
							1.3 KiB
						
					
					
				| package dash | |
| 
 | |
| import ( | |
| 	"net/http" | |
| 
 | |
| 	"github.com/gin-contrib/sessions" | |
| 	"github.com/gin-gonic/gin" | |
| ) | |
| 
 | |
| // ShowLogin displays the login page | |
| func (s *AdminServer) ShowLogin(c *gin.Context) { | |
| 	// If authentication is not required, redirect to admin | |
| 	session := sessions.Default(c) | |
| 	if session.Get("authenticated") == true { | |
| 		c.Redirect(http.StatusSeeOther, "/admin") | |
| 		return | |
| 	} | |
| 
 | |
| 	// For now, return a simple login form as JSON | |
| 	c.HTML(http.StatusOK, "login.html", gin.H{ | |
| 		"title": "SeaweedFS Admin Login", | |
| 		"error": c.Query("error"), | |
| 	}) | |
| } | |
| 
 | |
| // HandleLogin handles login form submission | |
| func (s *AdminServer) HandleLogin(username, password string) gin.HandlerFunc { | |
| 	return func(c *gin.Context) { | |
| 		loginUsername := c.PostForm("username") | |
| 		loginPassword := c.PostForm("password") | |
| 
 | |
| 		if loginUsername == username && loginPassword == password { | |
| 			session := sessions.Default(c) | |
| 			session.Set("authenticated", true) | |
| 			session.Set("username", loginUsername) | |
| 			session.Save() | |
| 
 | |
| 			c.Redirect(http.StatusSeeOther, "/admin") | |
| 			return | |
| 		} | |
| 
 | |
| 		// Authentication failed | |
| 		c.Redirect(http.StatusSeeOther, "/login?error=Invalid credentials") | |
| 	} | |
| } | |
| 
 | |
| // HandleLogout handles user logout | |
| func (s *AdminServer) HandleLogout(c *gin.Context) { | |
| 	session := sessions.Default(c) | |
| 	session.Clear() | |
| 	session.Save() | |
| 	c.Redirect(http.StatusSeeOther, "/login") | |
| }
 |