From 662fdfec9c391b13b9af9b67009e44d394bc97c9 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期六, 30 五月 2020 17:32:54 +0800
Subject: [PATCH] fix UnTarGzByCmd
---
middlewares/auth/auth.go | 86 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 86 insertions(+), 0 deletions(-)
diff --git a/middlewares/auth/auth.go b/middlewares/auth/auth.go
index 8832b06..d2e365f 100644
--- a/middlewares/auth/auth.go
+++ b/middlewares/auth/auth.go
@@ -1 +1,87 @@
package auth
+
+import (
+ "github.com/gin-gonic/gin"
+ "net/http"
+ "strings"
+ "sync"
+ "webserver/extend/code"
+ "webserver/extend/util"
+)
+
+const (
+ TokenKey = "abc123456789"
+)
+
+type Auth interface {
+ Check(c *gin.Context)bool
+ 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
+}
+
+func GenerateAuthDriver() *Auth {
+ var authDriver Auth
+ authDriver = NewJwtAuthDriver()
+ 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-") && !strings.Contains(urlPath,"login") && !strings.Contains(urlPath, "/data/api-v/license") && !strings.Contains(urlPath, "/data/api-v/info/"){
+ jwtDriver :=NewJwtAuthDriver()
+ if !jwtDriver.Check(c) {
+ util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍")
+ c.Abort()
+ return
+ }
+ 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()
+ return
+ }
+ c.Next()
+ } else {
+ c.Next()
+ }
+ }
+}
+
+func GetCurUser(c *gin.Context)map[string]interface{}{
+ return (*GenerateAuthDriver()).User(c)
+}
--
Gitblit v1.8.0