| | |
| | | package auth |
| | | |
| | | import ( |
| | | "github.com/gin-gonic/gin" |
| | | "net/http" |
| | | "strings" |
| | | "webserver/extend/config" |
| | | ) |
| | | |
| | | const ( |
| | | TokenKey = "abc123456789" |
| | | ) |
| | | |
| | | type Auth interface { |
| | | Check(c *gin.Context)bool |
| | | User(c *gin.Context)interface{} |
| | | Login(http *http.Request,w http.ResponseWriter,user map[string]interface{})interface{} |
| | | Logout(http *http.Request,w http.ResponseWriter) bool |
| | | } |
| | | |
| | | func GenerateAuthDriver() *Auth { |
| | | var authDriver Auth |
| | | authDriver = NewJwtAuthDriver() |
| | | return &authDriver |
| | | } |
| | | |
| | | func AuthHandler() gin.HandlerFunc { |
| | | return func(c *gin.Context) { |
| | | urlPath := c.Request.URL.Path |
| | | if strings.Contains(urlPath,"/data/api-v") && !strings.Contains(urlPath,"login"){ |
| | | //jwtDriver :=NewJwtAuthDriver() |
| | | //if !jwtDriver.Check(c) { |
| | | // util.ResponseFormat(c,code.TokenNotFound,"尚未登录,请登录") |
| | | // c.Abort() |
| | | //} |
| | | c.Next() |
| | | } else if strings.HasPrefix(urlPath,"/httpImage") { |
| | | imgUrl := config.Server.ImageUrl |
| | | c.Header("Access-Control-Allow-Origin","*") |
| | | c.Redirect(http.StatusMovedPermanently, imgUrl+urlPath[10:]) |
| | | return |
| | | } else { |
| | | c.Next() |
| | | } |
| | | } |
| | | } |
| | | |
| | | func GetCurUser(c *gin.Context)map[string]interface{}{ |
| | | return (*GenerateAuthDriver()).User(c).(map[string]interface{}) |
| | | } |