2015-07-03 1 views
0

Я использую laravel 5 и добавил Entrust для ролей и разрешений.Рабочий процесс фильтрации содержимого на основе прав/разрешений с использованием Entrust Laravel

Я не знаю, как использовать разрешения. Если у меня есть разрешение create-post означает, что он будет делать?

Создать опцию в постконтроллере будет разрешено? Или нам нужно назначить имя разрешения для этой страницы?

Просьба привести пример. Даже я не знаю, где проверить разрешения ...

ответ

1

рабочего процесса Entrust является следующим

Создание роли

Role::create(['name' => $role]); 

например, администратор, читатель и т.д.

Создать разрешений

Permission::create($permission); 

например can_read_post, can_edit_post, can_delete_post

назначить разрешения роли

$role = Role::where('admin)->first(); 
$role->perms()->sync($ids); //here the ids are ids of permissons which you want to assign 

например администратор имеет разрешения (can_read_post, ca_edit_post, can_delete_post) и считыватель имеет разрешений (ca_read_post)

Назначение ролей пользователям

Вы можете назначить роль для многих пользователей.

$user->roles()->attach($roleId); 

содержание фильтра на основе роли или разрешения

Базовая установка была завершена. Теперь вы можете фильтровать содержимое своего сайта различными способами. Здесь я буду обсуждать несколько

Определить фильтр в filters.php и применять на маршруте

filters.php

Route::filter('admin', function() 
{ 
    if(!Entrust::hasRole('Administrator')) 
    { 
     return Redirect::to('/'); 
    } 
}); 

routes.php

Route::group(['before' => ['admin']], function(){ 
     //add some routes which will require admin role 
     //any user which has not admin role will be redirected to home page 
    } 

В вашей возражений

@if(Entrust::can('can_edit_post')) 
//add some html which will only be visible to users who has such a role which has this permission 
@endif 

в контроллерах/модели/хранилищу

Аналогично вы можете фильтровать содержимое в модели/контроллеры/хранилищу и т.д.

Так что я думаю, вы получили основную идею.Теперь вы можете использовать функции Entrust почти в любом месте. Надеюсь это поможет.

0

Вкратце, что нам нужно сделать для реализации Доверьте пакет Laravel для разрешения на основе роли, как показано ниже.

Установите пакет в соответствии с инструкциями, приведенными в https://github.com/Zizaco/entrust

В конце концов, сделано с вышеупомянутым пакетом (GitHub), как создание таблицы базы данных, Middleware, контроллеры и все.

При входе пользователя в систему, существует массив, предоставляемый Auth, который содержит все действия, которые пользователь может (действия, зарегистрированные в журнале пользователя).

Предположим, что у нас есть контроллер, называемый CategoryController, как показано ниже.

class CategoryController extends Controller 
{ 
    public function __construct() 
    {     
     $this->middleware('permission:category_index', ['only' => ['index']]); 
     $this->middleware('permission:category_create', ['only' => ['create', 'store']]); 
     $this->middleware('permission:category_edit', ['only' => ['edit', 'update']]); 
     $this->middleware('permission:category_delete', ['only' => ['delete']]); 
     $this->middleware('permission:category_view', ['only' => ['show']]);  
    } 
} 

Мы, как правило, 5 действий в контроллере, если у нас есть один маршрут (называемый также маршрут ресурсов) в нашем файле маршрутизаторы/web.php для всех CRUD действия одного контроллера.

В этом примере предположим, что у нас есть все эти 5 методов. Таким образом, у нас есть запись в разрешении на них в таблице разрешений .. как у меня есть

Разрешение Таблица

 
id display_name name 
5 Delete Category category_delete 
4 Edit Category category_edit 
3 Create Category category_create 
2 List Category category_index 

Нам просто нужно добавить эти имена разрешений в контроллерах, как я сделал в CategoryController , Если вы используете hyphon в имени разрешения таблицы подана, а затем использовать как

$this->middleware('permission:category-create', ['only' => ['create', 'store']]); 

Записать все разрешения в конструкторе контроллера.

это 'it !!

Он автоматически проверяет введенную пользователем возможность и согласно записи базы данных в разрешении_роли (таблица отношений роли и разрешения), она либо покажет страницу, либо доступ запрещен для этого пользователя.

Надеюсь, это сработает !!

Смежные вопросы