bantenprov/advancetrust

Laravel包,用于处理应用程序的用户角色/访问权限

1.0.3 2017-12-14 13:23 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:08:38 UTC


README

本包受到santigarcor/laratrust的启发和扩展。

Scrutinizer Code Quality Build Status Latest Stable Version Software License Total Downloads

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文件中添加以下参数

  1. 用作角色控制器的执行器添加角色的主机
BANTENPROV_ROLEHOST=rolehost.domain.tld

此设置必须用于所有使用advantrust的站点。

  1. 用作添加角色请求者的主机
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)。请参阅许可文件获取更多信息。