49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package form
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 
 | |
| 	"github.com/zhang2092/browser"
 | |
| )
 | |
| 
 | |
| type Login struct {
 | |
| 	Email     string `form:"email" binding:"required,email"`
 | |
| 	Password  string `form:"password" binding:"required,min=6"`
 | |
| 	Captcha   string `form:"captcha" binding:"required"`
 | |
| 	CaptchaID string `form:"captcha_id" binding:"required"`
 | |
| 
 | |
| 	// 平台信息
 | |
| 	Os       string
 | |
| 	Ip       string
 | |
| 	Browser  string
 | |
| 	Referrer string
 | |
| 	Url      string
 | |
| }
 | |
| 
 | |
| func (login Login) SetAttributes(r *http.Request) Login {
 | |
| 	login.Ip = r.RemoteAddr
 | |
| 	login.Referrer = r.Header.Get("Referer")
 | |
| 	login.Url = r.URL.RequestURI()
 | |
| 
 | |
| 	br, err := browser.NewBrowser(r.Header.Get("User-Agent"))
 | |
| 	if err == nil {
 | |
| 		login.Os = br.Platform().Name()
 | |
| 		login.Browser = br.Name()
 | |
| 	}
 | |
| 
 | |
| 	return login
 | |
| }
 | |
| 
 | |
| type User struct {
 | |
| 	ID             *int32 `form:"id" binding:"required"`
 | |
| 	Email          string `form:"email" binding:"required,email"`
 | |
| 	Username       string `form:"username" binding:"required"`
 | |
| 	Password       string `form:"password" binding:"required,min=6"`
 | |
| 	ChangePassword string `form:"change_password"`
 | |
| 	Avatar         string `form:"File"`
 | |
| 	Gender         int32  `form:"gender"`
 | |
| 	DepartmentID   int32  `form:"department_id"`
 | |
| 	RoleID         int32  `form:"role_id"`
 | |
| 	Status         *int32 `form:"status" binding:"required"`
 | |
| }
 |