76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| package router
 | |
| 
 | |
| 
 | |
| import (
 | |
| 	"github.com/gin-gonic/gin"
 | |
| 	_ "github.com/gin-gonic/gin"
 | |
| 	log "github.com/go-admin-team/go-admin-core/logger"
 | |
| 	"github.com/go-admin-team/go-admin-core/sdk"
 | |
| 	// "github.com/go-admin-team/go-admin-core/sdk/pkg"
 | |
| 	"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
 | |
| 	jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
 | |
| 	common "go-admin/common/middleware"
 | |
| 	"os"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	routerNoCheckRole = make([]func(*gin.RouterGroup), 0)
 | |
| 	routerCheckRole   = make([]func(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware), 0)
 | |
| )
 | |
| 
 | |
| // InitRouter 路由初始化
 | |
| func InitRouter() {
 | |
| 	var r *gin.Engine
 | |
| 	h := sdk.Runtime.GetEngine()
 | |
| 	if h == nil {
 | |
| 		h = gin.New()
 | |
| 		sdk.Runtime.SetEngine(h)
 | |
| 	}
 | |
| 	switch h.(type) {
 | |
| 	case *gin.Engine:
 | |
| 		r = h.(*gin.Engine)
 | |
| 	default:
 | |
| 		log.Fatal("not support other engine")
 | |
| 		os.Exit(-1)
 | |
| 	}
 | |
| 
 | |
| 	// the jwt middleware
 | |
| 	authMiddleware, err := common.AuthInit()
 | |
| 	if err != nil {
 | |
| 		log.Fatalf("JWT Init Error, %s", err.Error())
 | |
| 	}
 | |
| 
 | |
| 	// 注册业务路由
 | |
| 	InitBusinessRouter(r, authMiddleware)
 | |
| }
 | |
| 
 | |
| func InitBusinessRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) *gin.Engine {
 | |
| 
 | |
| 	// 无需认证的路由
 | |
| 	noCheckRoleRouter(r)
 | |
| 	// 需要认证的路由
 | |
| 	checkRoleRouter(r, authMiddleware)
 | |
| 
 | |
| 	return r
 | |
| }
 | |
| 
 | |
| // noCheckRoleRouter 无需认证的路由
 | |
| func noCheckRoleRouter(r *gin.Engine) {
 | |
| 	// 可根据业务需求来设置接口版本
 | |
| 	v := r.Group("/api/v1")
 | |
| 
 | |
| 	for _, f := range routerNoCheckRole {
 | |
| 		f(v)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // checkRoleRouter 需要认证的路由
 | |
| func checkRoleRouter(r *gin.Engine, authMiddleware *jwtauth.GinJWTMiddleware) {
 | |
| 	// 可根据业务需求来设置接口版本
 | |
| 	v := r.Group("/api/v1")
 | |
| 
 | |
| 	for _, f := range routerCheckRole {
 | |
| 		f(v, authMiddleware)
 | |
| 	}
 | |
| }
 |