82 lines
1.4 KiB
Go
82 lines
1.4 KiB
Go
package common
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
)
|
|
|
|
var (
|
|
publicPaths = []string{
|
|
"/user/login",
|
|
}
|
|
)
|
|
|
|
func Auth(r *ghttp.Request) {
|
|
path := r.URL.Path
|
|
for _, p := range publicPaths {
|
|
if path == p {
|
|
r.Middleware.Next()
|
|
return
|
|
}
|
|
}
|
|
|
|
auth := r.Header.Get("Authorization")
|
|
if auth == "" || !strings.HasPrefix(auth, "Bearer ") {
|
|
r.Response.WriteJson(ghttp.DefaultHandlerResponse{
|
|
Code: http.StatusUnauthorized,
|
|
Message: "未登录或登录已过期",
|
|
})
|
|
r.Exit()
|
|
return
|
|
}
|
|
|
|
claims, err := ParseToken(auth[7:])
|
|
if err != nil {
|
|
r.Response.WriteJson(ghttp.DefaultHandlerResponse{
|
|
Code: http.StatusUnauthorized,
|
|
Message: "登录已过期,请重新登录",
|
|
})
|
|
r.Exit()
|
|
return
|
|
}
|
|
|
|
r.SetCtxVar("userId", claims.UserId)
|
|
r.SetCtxVar("role", claims.Role)
|
|
r.SetCtxVar("agentId", claims.AgentId)
|
|
r.Middleware.Next()
|
|
}
|
|
|
|
func GetUserId(r *ghttp.Request) int64 {
|
|
v := r.GetCtxVar("userId")
|
|
if v == nil {
|
|
return 0
|
|
}
|
|
return v.Int64()
|
|
}
|
|
|
|
func GetRole(r *ghttp.Request) string {
|
|
v := r.GetCtxVar("role")
|
|
if v == nil {
|
|
return ""
|
|
}
|
|
return v.String()
|
|
}
|
|
|
|
func GetAgentId(r *ghttp.Request) int64 {
|
|
v := r.GetCtxVar("agentId")
|
|
if v == nil {
|
|
return 0
|
|
}
|
|
return v.Int64()
|
|
}
|
|
|
|
func CheckAdmin(r *ghttp.Request) bool {
|
|
return GetRole(r) == "admin"
|
|
}
|
|
|
|
func CheckAgent(r *ghttp.Request) bool {
|
|
return GetRole(r) == "agent"
|
|
}
|