github.com/kotovmak/go-admin@v1.1.1/plugins/admin/admin.go (about) 1 package admin 2 3 import ( 4 "github.com/kotovmak/go-admin/context" 5 "github.com/kotovmak/go-admin/modules/config" 6 "github.com/kotovmak/go-admin/modules/service" 7 "github.com/kotovmak/go-admin/modules/system" 8 "github.com/kotovmak/go-admin/modules/utils" 9 "github.com/kotovmak/go-admin/plugins" 10 "github.com/kotovmak/go-admin/plugins/admin/controller" 11 "github.com/kotovmak/go-admin/plugins/admin/modules/guard" 12 "github.com/kotovmak/go-admin/plugins/admin/modules/table" 13 "github.com/kotovmak/go-admin/template/types" 14 "github.com/kotovmak/go-admin/template/types/action" 15 _ "github.com/kotovmak/go-admin/template/types/display" 16 ) 17 18 // Admin is a GoAdmin plugin. 19 type Admin struct { 20 *plugins.Base 21 tableList table.GeneratorList 22 guardian *guard.Guard 23 handler *controller.Handler 24 } 25 26 // InitPlugin implements Plugin.InitPlugin. 27 // TODO: find a better way to manage the dependencies 28 func (admin *Admin) InitPlugin(services service.List) { 29 30 // DO NOT DELETE 31 admin.InitBase(services, "") 32 33 c := config.GetService(services.Get("config")) 34 st := table.NewSystemTable(admin.Conn, c) 35 genList := table.GeneratorList{ 36 "manager": st.GetManagerTable, 37 "permission": st.GetPermissionTable, 38 "roles": st.GetRolesTable, 39 "op": st.GetOpTable, 40 "menu": st.GetMenuTable, 41 "normal_manager": st.GetNormalManagerTable, 42 } 43 if c.IsAllowConfigModification() { 44 genList.Add("site", st.GetSiteTable) 45 } 46 if c.IsNotProductionEnvironment() { 47 genList.Add("generate", st.GetGenerateForm) 48 } 49 admin.tableList.Combine(genList) 50 admin.guardian = guard.New(admin.Services, admin.Conn, admin.tableList, admin.UI.NavButtons) 51 handlerCfg := controller.Config{ 52 Config: c, 53 Services: services, 54 Generators: admin.tableList, 55 Connection: admin.Conn, 56 } 57 admin.handler.UpdateCfg(handlerCfg) 58 admin.initRouter() 59 admin.handler.SetRoutes(admin.App.Routers) 60 admin.handler.AddNavButton(admin.UI.NavButtons) 61 62 table.SetServices(services) 63 64 action.InitOperationHandlerSetter(admin.GetAddOperationFn()) 65 } 66 67 func (admin *Admin) GetIndexURL() string { 68 return config.GetIndexURL() 69 } 70 71 func (admin *Admin) GetInfo() plugins.Info { 72 return plugins.Info{ 73 Title: "Basic Admin", 74 Website: "https://www.go-admin.cn", 75 Description: "A built-in plugins of GoAdmin which help you to build a crud manager platform quickly.", 76 Author: "official", 77 Version: system.Version(), 78 CreateDate: utils.ParseTime("2018-07-08 00:00:00"), 79 UpdateDate: utils.ParseTime("2020-06-28 00:00:00"), 80 } 81 } 82 83 func (admin *Admin) IsInstalled() bool { 84 return true 85 } 86 87 // NewAdmin return the global Admin plugin. 88 func NewAdmin(tableCfg ...table.GeneratorList) *Admin { 89 return &Admin{ 90 tableList: make(table.GeneratorList).CombineAll(tableCfg), 91 Base: &plugins.Base{PlugName: "admin"}, 92 handler: controller.New(), 93 } 94 } 95 96 func (admin *Admin) GetAddOperationFn() context.NodeProcessor { 97 return admin.handler.AddOperation 98 } 99 100 // SetCaptcha set captcha driver. 101 func (admin *Admin) SetCaptcha(captcha map[string]string) *Admin { 102 admin.handler.SetCaptcha(captcha) 103 return admin 104 } 105 106 // AddGenerator add table model generator. 107 func (admin *Admin) AddGenerator(key string, g table.Generator) *Admin { 108 admin.tableList.Add(key, g) 109 return admin 110 } 111 112 // AddGenerators add table model generators. 113 func (admin *Admin) AddGenerators(gen ...table.GeneratorList) *Admin { 114 admin.tableList.CombineAll(gen) 115 return admin 116 } 117 118 // AddGlobalDisplayProcessFn call types.AddGlobalDisplayProcessFn 119 func (admin *Admin) AddGlobalDisplayProcessFn(f types.FieldFilterFn) *Admin { 120 types.AddGlobalDisplayProcessFn(f) 121 return admin 122 } 123 124 // AddDisplayFilterLimit call types.AddDisplayFilterLimit 125 func (admin *Admin) AddDisplayFilterLimit(limit int) *Admin { 126 types.AddLimit(limit) 127 return admin 128 } 129 130 // AddDisplayFilterTrimSpace call types.AddDisplayFilterTrimSpace 131 func (admin *Admin) AddDisplayFilterTrimSpace() *Admin { 132 types.AddTrimSpace() 133 return admin 134 } 135 136 // AddDisplayFilterSubstr call types.AddDisplayFilterSubstr 137 func (admin *Admin) AddDisplayFilterSubstr(start int, end int) *Admin { 138 types.AddSubstr(start, end) 139 return admin 140 } 141 142 // AddDisplayFilterToTitle call types.AddDisplayFilterToTitle 143 func (admin *Admin) AddDisplayFilterToTitle() *Admin { 144 types.AddToTitle() 145 return admin 146 } 147 148 // AddDisplayFilterToUpper call types.AddDisplayFilterToUpper 149 func (admin *Admin) AddDisplayFilterToUpper() *Admin { 150 types.AddToUpper() 151 return admin 152 } 153 154 // AddDisplayFilterToLower call types.AddDisplayFilterToLower 155 func (admin *Admin) AddDisplayFilterToLower() *Admin { 156 types.AddToUpper() 157 return admin 158 } 159 160 // AddDisplayFilterXssFilter call types.AddDisplayFilterXssFilter 161 func (admin *Admin) AddDisplayFilterXssFilter() *Admin { 162 types.AddXssFilter() 163 return admin 164 } 165 166 // AddDisplayFilterXssJsFilter call types.AddDisplayFilterXssJsFilter 167 func (admin *Admin) AddDisplayFilterXssJsFilter() *Admin { 168 types.AddXssJsFilter() 169 return admin 170 }