1+ <?php namespace Darryldecode \Backend ;
2+
3+ use Darryldecode \Backend \Base \Registrar \ComponentLoader ;
4+ use Darryldecode \Backend \Base \Registrar \Registrar ;
5+ use Darryldecode \Backend \Base \Registrar \WidgetLoader ;
6+ use Illuminate \Filesystem \Filesystem ;
7+ use Illuminate \Routing \Router ;
8+ use Illuminate \Support \ServiceProvider ;
9+
10+ class BackendServiceProvider extends ServiceProvider {
11+
12+ /**
13+ * Register the service provider.
14+ * @param Router $router \Illuminate\Contracts\Http\Kernel
15+ */
16+ public function boot (Router $ router )
17+ {
18+ $ this ->loadViewsFrom (__DIR__ .'/Base/Views ' , 'backend ' );
19+ $ this ->bootBackend ();
20+
21+ $ router ->middleware (
22+ 'backend.guest ' ,
23+ 'Darryldecode\Backend\Base\Middleware\RedirectIfAuthenticated '
24+ );
25+
26+ $ router ->middleware (
27+ 'backend.authenticated ' ,
28+ 'Darryldecode\Backend\Base\Middleware\Authenticate '
29+ );
30+
31+ $ this ->publishes ([
32+ __DIR__ .'/Public/backend/cb ' => public_path ('darryldecode/backend/cb ' ),
33+ __DIR__ .'/Public/backend/vendor ' => public_path ('darryldecode/backend/vendor ' ),
34+ ], 'public ' );
35+
36+ $ this ->publishes ([
37+ __DIR__ .'/Config ' => config_path ('backend ' ),
38+ ], 'config ' );
39+
40+ $ this ->publishes ([
41+ __DIR__ .'/Database/Migrations ' => database_path ('migrations ' ),
42+ __DIR__ .'/Database/Seeders ' => database_path ('seeds ' ),
43+ ], 'migrations ' );
44+
45+ $ this ->publishes ([
46+ __DIR__ .'/Components/Auth/Views ' => base_path ('resources/views/backend/auth ' ),
47+ ], 'views ' );
48+ }
49+
50+ /**
51+ * boot backend
52+ */
53+ public function bootBackend ()
54+ {
55+ // load built-in components
56+ $ componentLoader = new ComponentLoader (__DIR__ .'/Components ' , new Filesystem ());
57+ $ builtInComponents = $ componentLoader ->getAvailableComponentInstances ();
58+
59+ // load custom components
60+ $ componentLoader = new ComponentLoader (app_path ().'/Backend/Components ' , new Filesystem ());
61+ $ customComponents = $ componentLoader ->getAvailableComponentInstances ();
62+
63+ // add those loaded components to backend registrar
64+ $ backendRegistrar = new Registrar ();
65+
66+ $ backendRegistrar ->addComponent (array (
67+ $ builtInComponents
68+ ));
69+ $ backendRegistrar ->addComponent (array (
70+ $ customComponents
71+ ));
72+
73+ // this should be in-order
74+ $ backendRegistrar ->initRoutes ();
75+ $ backendRegistrar ->initViews ();
76+ $ backendRegistrar ->initNavigation ();
77+ $ backendRegistrar ->initPermissions ();
78+ $ backendRegistrar ->initAddHeaderScripts ();
79+ $ backendRegistrar ->initAddFooterScripts ();
80+
81+ // load views
82+ foreach ($ backendRegistrar ->getViewsPaths () as $ view )
83+ {
84+ $ this ->loadViewsFrom ($ view ['dir ' ], $ view ['namespace ' ]);
85+ }
86+
87+ // load built-in widgets
88+ $ builtInWidgetsLoader = new WidgetLoader (__DIR__ .'/Widgets ' , new Filesystem ());
89+ $ customWidgetsLoader = new WidgetLoader (app_path ().'/Backend/Widgets ' , new Filesystem ());
90+
91+ // add widgets
92+ $ backendRegistrar ->addWidget ($ builtInWidgetsLoader ->getAvailableWidgetInstances ());
93+ $ backendRegistrar ->addWidget ($ customWidgetsLoader ->getAvailableWidgetInstances ());
94+
95+ $ this ->app ['backend ' ] = $ backendRegistrar ;
96+ }
97+
98+ /**
99+ * Register the service provider.
100+ *
101+ * @return void
102+ */
103+ public function register ()
104+ {
105+
106+ }
107+ }
0 commit comments