AuthServiceProvider.php
2.1 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Str;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
// Product::class => ProductPolicy::class,
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
$this->registerPolicies();
Gate::guessPolicyNamesUsing(function ($class) {
// dump(app($class));
// add by Richer 于 2021年12月24日13:39:31 由于增加了子目录,需要进行特殊的处理
// 去掉 模型层的主命名空间
$class = str_replace('App\Models\\', '', $class);
// 判断是否有子目录
if (Str::contains($class, '\\')) {
$class_arr = explode('\\', $class);
$class = '\\App\\Policies\\'. Arr::first($class_arr) . '\\' .class_basename(Arr::last($class_arr)).'Policy';
} else {
$class = '\\App\\Policies\\'.class_basename($class).'Policy';
}
return $class;
// 由于使用了层级结构
$class = str_replace('\\', '', str_replace('App\Models\\', '', $class)) ;
return '\\App\\Policies\\'.class_basename($class).'Policy';
});
// $this->app->rebinding(
// 'request',
// function ($app, $request) {
// $request->setUserResolver(
// function ($guard = null) use ($app, $request) {
//// dd($request);
// if ($guard == 'agency') {
// return \Admin::user();
// } else {
// return call_user_func($app['auth']->userResolver(), $guard);
// }
// }
// );
// }
// );
}
}