update auth app
This commit is contained in:
parent
5dc1df3e2f
commit
3422f450f1
@ -1,4 +1,4 @@
|
||||
package user
|
||||
package auth
|
||||
|
||||
type UserTokenInfo struct {
|
||||
Exp int `json:"exp"`
|
||||
@ -26,5 +26,3 @@ type UserTokenInfo struct {
|
||||
type User struct {
|
||||
Token UserTokenInfo
|
||||
}
|
||||
|
||||
const UserTokenInfoKey = "user.jwt"
|
@ -2,36 +2,15 @@ package gin
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"framework_v2/internal/app/auth"
|
||||
"framework_v2/internal/app/facades"
|
||||
"framework_v2/internal/app/helpers"
|
||||
"framework_v2/internal/app/user"
|
||||
http2 "framework_v2/internal/middleware/http"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
//func HandleRoute(method httpMethod, relativePath string, controller HandlerFunc, middlewares ...gin.HandlerFunc) {
|
||||
// access.Router.Handle(method.String(), relativePath, func(c *gin.Context) {
|
||||
// for _, middleware := range middlewares {
|
||||
// middleware(c)
|
||||
// }
|
||||
//
|
||||
// if !c.IsAborted() {
|
||||
// handleWithMetadata(c, controller)
|
||||
// }
|
||||
// })
|
||||
//}
|
||||
|
||||
//func handleWithMetadata(c *gin.Context, controller HandlerFunc) {
|
||||
// var metadata = &consts.Request{
|
||||
// Http: c,
|
||||
// User: GetAuthFromCtx(c),
|
||||
// }
|
||||
//
|
||||
// controller(metadata)
|
||||
//}
|
||||
|
||||
func GET(relativePath string, handlers ...interface{}) {
|
||||
facades.Router.GET(relativePath, func(c *gin.Context) {
|
||||
doHandler(c, handlers...)
|
||||
@ -92,7 +71,7 @@ func wrapHandler(c *gin.Context, f interface{}) {
|
||||
switch argType {
|
||||
case reflect.TypeOf((*gin.Context)(nil)):
|
||||
argValue = reflect.ValueOf(c)
|
||||
case reflect.TypeOf((*user.User)(nil)):
|
||||
case reflect.TypeOf((*auth.User)(nil)):
|
||||
userInfo := http2.DIJWTAuth(c)
|
||||
if userInfo == nil {
|
||||
helpers.ResponseError(c, http.StatusUnauthorized, http2.ErrNotValidToken)
|
@ -2,6 +2,8 @@ package gin
|
||||
|
||||
import (
|
||||
"framework_v2/internal/app/facades"
|
||||
"framework_v2/internal/http/controllers/user"
|
||||
"framework_v2/internal/middleware/http"
|
||||
ginzap "github.com/gin-contrib/zap"
|
||||
"github.com/gin-gonic/gin"
|
||||
"time"
|
||||
@ -13,4 +15,10 @@ func InitGin() {
|
||||
facades.Router = gin.New()
|
||||
|
||||
facades.Router.Use(ginzap.Ginzap(facades.Logger, time.RFC3339, true))
|
||||
|
||||
InitApiRoutes()
|
||||
}
|
||||
|
||||
func InitApiRoutes() {
|
||||
GET("/", http.MiddlewareJSONResponse, user.CurrentUser)
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ import (
|
||||
"framework_v2/internal/app/jobs"
|
||||
"framework_v2/internal/app/jwks"
|
||||
"framework_v2/internal/app/logger"
|
||||
"framework_v2/internal/routes"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@ -23,7 +22,6 @@ var httpCommand = &cobra.Command{
|
||||
jwks.InitJwksRefresh()
|
||||
jobs.InitAsynQClient()
|
||||
gin.InitGin()
|
||||
routes.InitHttp()
|
||||
|
||||
StartHttp()
|
||||
},
|
||||
|
@ -2,7 +2,7 @@ package user
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"framework_v2/internal/app/user"
|
||||
"framework_v2/internal/app/auth"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@ -13,7 +13,7 @@ import (
|
||||
//
|
||||
//}
|
||||
|
||||
func CurrentUser(c *gin.Context, user *user.User) {
|
||||
func CurrentUser(c *gin.Context, user *auth.User) {
|
||||
fmt.Println("CurrentUser", user)
|
||||
c.JSON(200, gin.H{
|
||||
"IP": c.ClientIP(),
|
||||
|
@ -2,10 +2,10 @@ package grpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
auth2 "framework_v2/internal/app/auth"
|
||||
"framework_v2/internal/app/config"
|
||||
"framework_v2/internal/app/jwks"
|
||||
"framework_v2/internal/app/logger"
|
||||
"framework_v2/internal/app/user"
|
||||
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/auth"
|
||||
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
@ -20,12 +20,10 @@ func JwtAuth(ctx context.Context) (context.Context, error) {
|
||||
}
|
||||
|
||||
sub := "anonymous"
|
||||
var jwtIdToken *user.UserTokenInfo
|
||||
var jwtIdToken *auth2.User
|
||||
|
||||
if config.Config.DebugMode.Enable {
|
||||
jwtIdToken = &user.UserTokenInfo{
|
||||
Sub: sub,
|
||||
}
|
||||
jwtIdToken.Token.Sub = sub
|
||||
} else {
|
||||
token, err := jwks.ParseJWT(tokenString)
|
||||
if err != nil {
|
||||
|
10
internal/middleware/http/json_response.go
Normal file
10
internal/middleware/http/json_response.go
Normal file
@ -0,0 +1,10 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func MiddlewareJSONResponse(c *gin.Context) {
|
||||
c.Header("Content-Type", "application/json; charset=utf-8")
|
||||
c.Next()
|
||||
}
|
@ -2,17 +2,19 @@ package http
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"framework_v2/internal/app/auth"
|
||||
"framework_v2/internal/app/config"
|
||||
"framework_v2/internal/app/facades"
|
||||
"framework_v2/internal/app/helpers"
|
||||
"framework_v2/internal/app/jwks"
|
||||
"framework_v2/internal/app/user"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const AnonymousUser = "anonymous"
|
||||
|
||||
var (
|
||||
ErrNotValidToken = errors.New("无效的 JWT 令牌。")
|
||||
ErrJWTFormatError = errors.New("JWT 格式错误。")
|
||||
@ -20,12 +22,10 @@ var (
|
||||
ErrEmptyResponse = errors.New("我们的服务器返回了空请求,可能某些环节出了问题。")
|
||||
)
|
||||
|
||||
const AnonymousUser = "anonymous"
|
||||
|
||||
// DIJWTAuth 用于注入到方法签名中。我觉得下面的代码以后可以优化。
|
||||
func DIJWTAuth(c *gin.Context) *user.User {
|
||||
func DIJWTAuth(c *gin.Context) *auth.User {
|
||||
var sub = AnonymousUser
|
||||
var jwtIdToken = &user.User{}
|
||||
var jwtIdToken = &auth.User{}
|
||||
|
||||
if config.Config.DebugMode.Enable {
|
||||
jwtIdToken.Token.Sub = sub
|
||||
@ -70,8 +70,3 @@ func DIJWTAuth(c *gin.Context) *user.User {
|
||||
|
||||
return jwtIdToken
|
||||
}
|
||||
|
||||
func MiddlewareJSONResponse(c *gin.Context) {
|
||||
c.Header("Content-Type", "application/json; charset=utf-8")
|
||||
c.Next()
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"framework_v2/internal/app/gin"
|
||||
"framework_v2/internal/http/controllers/user"
|
||||
"framework_v2/internal/middleware/http"
|
||||
)
|
||||
|
||||
func InitApiRoutes() {
|
||||
gin.GET("/", http.MiddlewareJSONResponse, user.CurrentUser)
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"framework_v2/internal/app/facades"
|
||||
)
|
||||
|
||||
func InitHttp() {
|
||||
if facades.Router == nil {
|
||||
panic("You must call InitGin() before InitHttp()")
|
||||
}
|
||||
|
||||
InitApiRoutes()
|
||||
}
|
Loading…
Reference in New Issue
Block a user