From f26a0cab5bca17b7eab57f6330e576271e17a17f Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期三, 13 十一月 2019 19:12:08 +0800
Subject: [PATCH] update ynSwagger,sync to master

---
 middlewares/auth/auth.go |   81 ++++++++++++++++++++++++----------------
 1 files changed, 48 insertions(+), 33 deletions(-)

diff --git a/middlewares/auth/auth.go b/middlewares/auth/auth.go
index 8a23438..d897b00 100644
--- a/middlewares/auth/auth.go
+++ b/middlewares/auth/auth.go
@@ -4,8 +4,9 @@
 	"github.com/gin-gonic/gin"
 	"net/http"
 	"strings"
-	"webserver/extend/config"
-	"webserver/extend/logger"
+	"sync"
+	"webserver/extend/code"
+	"webserver/extend/util"
 )
 
 const (
@@ -14,7 +15,7 @@
 
 type Auth interface {
 	Check(c *gin.Context)bool
-	User(c *gin.Context)interface{}
+	User(c *gin.Context)map[string]interface{}
 	Login(http *http.Request,w http.ResponseWriter,user map[string]interface{})interface{}
 	Logout(http *http.Request,w http.ResponseWriter) bool
 }
@@ -25,40 +26,54 @@
 	return &authDriver
 }
 
+var outUserM = make(map[string]string,0)
+var lock sync.RWMutex
+
+func SetOutUser(userId string) {
+	lock.Lock()
+	defer lock.Unlock()
+	outUserM[userId] = userId
+}
+
+func OutUser(userId string) bool {
+	lock.Lock()
+	defer lock.Unlock()
+	if _,ok := outUserM[userId];ok{
+		return true
+	}
+	return false
+}
+
+func RemoveOutUser(userId string) {
+	lock.Lock()
+	defer lock.Unlock()
+	if _,ok := outUserM[userId];ok{
+		delete(outUserM,userId)
+	}
+}
+
 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()
-			//}
+		if strings.Contains(urlPath,"/data/api-") && !strings.Contains(urlPath,"login"){
+			jwtDriver :=NewJwtAuthDriver()
+			if !jwtDriver.Check(c) {
+				util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍")
+				c.Abort()
+			}
+			userM := (*jwtDriver).User(c)
+			if userM == nil {
+				util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍")
+				c.Abort()
+				return
+			}
+			userId := userM["id"].(string)
+			if OutUser(userId) {
+				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 {//璺緞涓寘鍚湁绔彛,鍙栫鍙d互鍚庤矾寰�
-				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()
 		}
@@ -66,5 +81,5 @@
 }
 
 func GetCurUser(c *gin.Context)map[string]interface{}{
-	return (*GenerateAuthDriver()).User(c).(map[string]interface{})
+	return (*GenerateAuthDriver()).User(c)
 }
\ No newline at end of file

--
Gitblit v1.8.0