-
Notifications
You must be signed in to change notification settings - Fork 0
/
PageServiceProvider.php
52 lines (43 loc) · 1.45 KB
/
PageServiceProvider.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
namespace NineCells\Pages;
use App;
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Support\ServiceProvider;
use NineCells\Admin\AdminManager;
use NineCells\Admin\AdminServiceProvider;
use NineCells\Admin\PackageList;
use NineCells\Member\MemberServiceProvider;
class PageServiceProvider extends ServiceProvider
{
private function registerPolicies(GateContract $gate, AdminManager $admin)
{
$gate->before(function ($user, $ability) use ($admin) {
if ($ability === "page-admin") {
if ($user && $admin->isAdmin($user)) {
return $user;
}
} else if ($ability === "page-write") {
return $user;
}
});
}
public function boot(GateContract $gate, AdminManager $admin, PackageList $packages)
{
$this->registerPolicies($gate, $admin);
if (!$this->app->routesAreCached()) {
require __DIR__ . '/Http/routes.php';
}
$this->loadViewsFrom(__DIR__ . '/resources/views', 'ncells');
$this->publishes([
__DIR__ . '/database/migrations/' => database_path('migrations')
], 'migrations');
$packages->addPackageInfo('pages', 'Pages', function () {
return '/admin/pages';
});
}
public function register()
{
App::register(MemberServiceProvider::class);
App::register(AdminServiceProvider::class);
}
}