package auth
|
|
import (
|
"github.com/gin-gonic/gin"
|
"net/http"
|
"strings"
|
"webserver/extend/code"
|
"webserver/extend/config"
|
"basic.com/valib/logger.git"
|
"webserver/extend/util"
|
)
|
|
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.Contains(urlPath,"/httpImage") {
|
domain := config.Server.PublicDomain
|
//domainReg := regexp.MustCompile(``+domain+``)
|
//if domainReg.MatchString(host) {//域名访问
|
// imgUrl = domain
|
//}
|
|
urlPath = strings.Replace(urlPath, "/httpImage", "", -1)
|
if strings.Contains(urlPath,domain) {
|
urlPath = strings.Replace(urlPath,"/"+domain,"",-1)
|
}
|
logger.Debug("urlPath:",urlPath)
|
idx := strings.LastIndex(urlPath, ":")
|
tmpPath := ""
|
if idx >-1 {//路径中包含有端口,取端口以后路径
|
tmpPath = urlPath[idx:]
|
} else {
|
tmpPath = ":6080"+tmpPath
|
}
|
c.Header("Access-Control-Allow-Origin","*")
|
logger.Debug("domain+tmpPath:",domain+tmpPath)
|
c.Redirect(http.StatusMovedPermanently, domain+tmpPath)
|
return
|
} else {
|
c.Next()
|
}
|
}
|
}
|
|
func GetCurUser(c *gin.Context)map[string]interface{}{
|
return (*GenerateAuthDriver()).User(c).(map[string]interface{})
|
}
|