bantenprov / advancetrust
Laravel包,用于处理应用程序的用户角色/访问权限
Requires
- php: ~5.6|~7.0
- bantenprov/laravel-api-manager: ^1.0
- guzzlehttp/guzzle: ^6.3
- illuminate/support: ~5.1
- laravelcollective/html: ^5.4.0
- santigarcor/laratrust: 5.0.*
- that0n3guy/transliteration: 2.0.x
Requires (Dev)
- phpunit/phpunit: >=5.4.3
- squizlabs/php_codesniffer: ^2.3
This package is not auto-updated.
Last update: 2024-09-29 04:08:38 UTC
README
DEMO
本包的演示可在此处查看 Role
版本
安装
-
为Laravel安装Advancetrust:
composer require bantenprov/advancetrust "1.0.1" -
为Laravel和Vue.js安装Advancetrust:
composer require bantenprov/advancetrust "1.0.2" -
Advancetrust可用的API请求:
composer require bantenprov/advancetrust "1.0.3"
1. 在config/app.php中添加,仅适用于laravel <= 5.4
'providers' => array( App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, ... Bantenprov\Advancetrust\advancetrustServiceProvider::class, Bantenprov\LaravelApiManager\LaravelApiManagerServiceProvider::class, Laratrust\LaratrustServiceProvider::class, Collective\Html\HtmlServiceProvider::class, 'That0n3guy\Transliteration\TransliterationServiceProvider', ),
'aliases' => [ 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, ... 'Laratrust' => Laratrust\LaratrustFacade::class, 'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class,
2. php artisan
$ php artisan vendor:publish --tag="laratrust"
$ php artisan vendor:publish
$ php artisan laratrust:setup
$ php artisan laratrust:seeder
$ php artisan laravel-api-manager:add-route
$ php artisan migrate
$ composer dump-autoload
$ php artisan db:seed --class=LaratrustSeeder
$ php artisan serve
请在安装完成后运行此可用命令
$ php artisan advancetrust:add-route $ php artisan advancetrust:create-controller $ php artisan advancetrust:create-view $ php artisan advancetrust:version
添加身份验证以使用该包
$ php artisan make:auth
编辑resources/views/home.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Dashboard</div>
<div class="panel-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
{{--
add menu content here
--}}
@yield('advancetrust_content')
</div>
</div>
</div>
</div>
</div>
@endsection
服务器配置
在.env文件中添加以下参数
- 用作角色控制器的执行器添加角色的主机
BANTENPROV_ROLEHOST=rolehost.domain.tld
此设置必须用于所有使用advantrust的站点。
- 用作添加角色请求者的主机
BANTENPROV_DRIVERHOST=driverhost.domain.tld
示例用法
使用Guzzle在客户端进行请求
使用Guzzle进行请求,首先通过以下方式安装Guzzle包:composer require guzzlehttp/guzzle
在客户端中,将BANTENPROV_ROLEHOST=https://:8000添加到.env文件中。用作角色控制器的执行器添加角色的主机
在上面的示例中,使用https://:8000作为主机
// method get Route::get('/guzzle/permission/get',function(){ $hostname = \Request::root(); $client = new GuzzleHttp\Client(['base_uri' => env('BANTENPROV_ROLEHOST').'/api/v1/advancetrust/']); $response = $client->request('GET', 'permission',[ 'headers' => [ 'secret_key' => 'QwQjR4V8VKXqvWR3l7v056VU9l2d2JKkcXvM9GQKYhn8J5gsGKNdEYj6cHaoP5HOne51TwSRk4CT0ksZjCUCEEKi6V1a34bQqXEI', 'client' => $hostname ] ]); return $response->getBody(); }); Route::get('/guzzle/role/get',function(){ $hostname = \Request::root(); $client = new GuzzleHttp\Client(['base_uri' => env('BANTENPROV_ROLEHOST').'/api/v1/advancetrust/']); $response = $client->request('GET', 'role',[ 'headers' => [ 'secret_key' => 'QwQjR4V8VKXqvWR3l7v056VU9l2d2JKkcXvM9GQKYhn8J5gsGKNdEYj6cHaoP5HOne51TwSRk4CT0ksZjCUCEEKi6V1a34bQqXEI', 'client' => $hostname ] ]); return $response->getBody(); }); //method post Route::get('/guzzle/permission/post',function(){ $hostname = \Request::root(); $client = new GuzzleHttp\Client(['base_uri' => env('BANTENPROV_ROLEHOST').'/api/v1/advancetrust/']); $response = $client->request('POST', 'permission/store',[ 'headers' => [ 'secret_key' => 'QwQjR4V8VKXqvWR3l7v056VU9l2d2JKkcXvM9GQKYhn8J5gsGKNdEYj6cHaoP5HOne51TwSRk4CT0ksZjCUCEEKi6V1a34bQqXEI', 'client' => $hostname ], 'form_params' => [ 'name' => 'example name', 'description' => 'example description', 'display_name' => 'example display name' ] ]); return $response->getBody(); }); Route::get('/guzzle/role/post',function(){ $hostname = \Request::root(); $client = new GuzzleHttp\Client(['base_uri' => env('BANTENPROV_ROLEHOST').'/api/v1/advancetrust/']); $response = $client->request('POST', 'role/store',[ 'headers' => [ 'secret_key' => 'QwQjR4V8VKXqvWR3l7v056VU9l2d2JKkcXvM9GQKYhn8J5gsGKNdEYj6cHaoP5HOne51TwSRk4CT0ksZjCUCEEKi6V1a34bQqXEI', 'client' => $hostname ], 'form_params' => [ 'name' => 'example name', 'description' => 'example description', 'display_name' => 'example display name' ] ]); return $response->getBody(); });
密钥secret_key
这是使用laravel-api-manager包创建的,通过浏览器访问:https://:8000/api_manager并添加新数据。客户端:localhost:9090 描述:客户端
添加成功后
使用api keys在header的value secret_key处进行设置:'secret_key' => 'api_keys'
在主机上,将BANTENPROV_DRIVERHOST=https://:9090添加到.env文件中。用作添加角色请求者的主机
因此,在本例中,具有添加新数据权限的主机是BANTENPROV_DRIVERHOST指定的https://:9090,而除了https://:9090之外,其他主机只具有从https://:8000请求数据的权限
在客户端运行服务器命令
$ php artisan serve --port=9090
在主机上运行服务器命令
$ php artisan serve
如果对如何使用
guzzle有疑问,请阅读其文档在这里
MIT许可(MIT)。请参阅许可文件获取更多信息。