github.com/kotovmak/go-admin@v1.1.1/plugins/admin/router.go (about)

     1  package admin
     2  
     3  import (
     4  	"github.com/kotovmak/go-admin/context"
     5  	"github.com/kotovmak/go-admin/modules/auth"
     6  	"github.com/kotovmak/go-admin/modules/config"
     7  	"github.com/kotovmak/go-admin/modules/utils"
     8  	"github.com/kotovmak/go-admin/plugins/admin/modules/response"
     9  	"github.com/kotovmak/go-admin/template"
    10  )
    11  
    12  // initRouter initialize the router and return the context.
    13  func (admin *Admin) initRouter() *Admin {
    14  	app := context.NewApp()
    15  
    16  	route := app.Group("", admin.globalErrorHandler)
    17  
    18  	// auth
    19  	route.GET(config.GetLoginUrl(), admin.handler.ShowLogin)
    20  	route.POST("/signin", admin.handler.Auth)
    21  
    22  	// auto install
    23  	route.GET("/install", admin.handler.ShowInstall)
    24  	route.POST("/install/database/check", admin.handler.CheckDatabase)
    25  
    26  	checkRepeatedPath := make([]string, 0)
    27  	for _, themeName := range template.Themes() {
    28  		for _, path := range template.Get(themeName).GetAssetList() {
    29  			if !utils.InArray(checkRepeatedPath, path) {
    30  				checkRepeatedPath = append(checkRepeatedPath, path)
    31  				route.GET("/assets"+path, admin.handler.Assets)
    32  			}
    33  		}
    34  	}
    35  
    36  	for _, path := range template.GetComponentAsset() {
    37  		route.GET("/assets"+path, admin.handler.Assets)
    38  	}
    39  
    40  	authRoute := route.Group("/", auth.Middleware(admin.Conn))
    41  
    42  	// auth
    43  	authRoute.GET("/logout", admin.handler.Logout)
    44  
    45  	authPrefixRoute := route.Group("/", auth.Middleware(admin.Conn), admin.guardian.CheckPrefix)
    46  
    47  	// menus
    48  	authRoute.POST("/menu/delete", admin.guardian.MenuDelete, admin.handler.DeleteMenu).Name("menu_delete")
    49  	authRoute.POST("/menu/new", admin.guardian.MenuNew, admin.handler.NewMenu).Name("menu_new")
    50  	authRoute.POST("/menu/edit", admin.guardian.MenuEdit, admin.handler.EditMenu).Name("menu_edit")
    51  	authRoute.POST("/menu/order", admin.handler.MenuOrder).Name("menu_order")
    52  	authRoute.GET("/menu", admin.handler.ShowMenu).Name("menu")
    53  	authRoute.GET("/menu/edit/show", admin.handler.ShowEditMenu).Name("menu_edit_show")
    54  	authRoute.GET("/menu/new", admin.handler.ShowNewMenu).Name("menu_new_show")
    55  
    56  	authRoute.GET("/plugins", admin.handler.Plugins).Name("plugins")
    57  
    58  	if config.IsNotProductionEnvironment() {
    59  		authRoute.GET("/plugins/store", admin.handler.PluginStore).Name("plugins_store")
    60  		authRoute.POST("/plugin/download", admin.handler.PluginDownload).Name("plugin_download")
    61  		authRoute.POST("/plugin/detail", admin.handler.PluginDetail).Name("plugin_detail")
    62  	}
    63  
    64  	authRoute.POST("/server/login", admin.guardian.ServerLogin, admin.handler.ServerLogin).Name("server_login")
    65  
    66  	formats := config.GetURLFormats()
    67  
    68  	// add delete modify query
    69  	authPrefixRoute.GET(formats.Detail, admin.handler.ShowDetail).Name("detail")
    70  	authPrefixRoute.GET(formats.ShowEdit, admin.guardian.ShowForm, admin.handler.ShowForm).Name("show_edit")
    71  	authPrefixRoute.GET(formats.ShowCreate, admin.guardian.ShowNewForm, admin.handler.ShowNewForm).Name("show_new")
    72  	authPrefixRoute.POST(formats.Edit, admin.guardian.EditForm, admin.handler.EditForm).Name("edit")
    73  	authPrefixRoute.POST(formats.Create, admin.guardian.NewForm, admin.handler.NewForm).Name("new")
    74  	authPrefixRoute.POST(formats.Delete, admin.guardian.Delete, admin.handler.Delete).Name("delete")
    75  	authPrefixRoute.POST(formats.Export, admin.guardian.Export, admin.handler.Export).Name("export")
    76  	authPrefixRoute.GET(formats.Info, admin.handler.ShowInfo).Name("info")
    77  
    78  	authPrefixRoute.POST(formats.Update, admin.guardian.Update, admin.handler.Update).Name("update")
    79  
    80  	authRoute.GET("/application/info", admin.handler.SystemInfo)
    81  
    82  	route.ANY("/operation/:__goadmin_op_id", auth.Middleware(admin.Conn), admin.handler.Operation)
    83  
    84  	if config.GetOpenAdminApi() {
    85  
    86  		// crud json apis
    87  		apiRoute := route.Group("/api", auth.Middleware(admin.Conn), admin.guardian.CheckPrefix)
    88  		apiRoute.GET("/list/:__prefix", admin.handler.ApiList).Name("api_info")
    89  		apiRoute.GET("/detail/:__prefix", admin.handler.ApiDetail).Name("api_detail")
    90  		apiRoute.POST("/delete/:__prefix", admin.guardian.Delete, admin.handler.Delete).Name("api_delete")
    91  		apiRoute.POST("/edit/:__prefix", admin.guardian.EditForm, admin.handler.ApiUpdate).Name("api_edit")
    92  		apiRoute.GET("/edit/form/:__prefix", admin.guardian.ShowForm, admin.handler.ApiUpdateForm).Name("api_show_edit")
    93  		apiRoute.POST("/create/:__prefix", admin.guardian.NewForm, admin.handler.ApiCreate).Name("api_new")
    94  		apiRoute.GET("/create/form/:__prefix", admin.guardian.ShowNewForm, admin.handler.ApiCreateForm).Name("api_show_new")
    95  		apiRoute.POST("/export/:__prefix", admin.guardian.Export, admin.handler.Export).Name("api_export")
    96  		apiRoute.POST("/update/:__prefix", admin.guardian.Update, admin.handler.Update).Name("api_update")
    97  	}
    98  
    99  	admin.App = app
   100  	return admin
   101  }
   102  
   103  func (admin *Admin) globalErrorHandler(ctx *context.Context) {
   104  	defer admin.handler.GlobalDeferHandler(ctx)
   105  	response.OffLineHandler(ctx)
   106  	ctx.Next()
   107  }