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)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |