Права доступа



Обычно пользователям не назначаются разрешения в приложении ORCHID (Хотя такая возможность имеется), а скорее роли. Роль, связанная с набором разрешений, а не с отдельным пользователем.

Как правило, вы управляете несколькими дюжинами разрешений в типичном бизнесе процессе. Вы также можете иметь, скажем, от 10 до 100 пользователей. Хотя эти пользователи не полностью отличные друг от друга, вы можете разделить их на логические группы в соответствии с тем, что они делают с программой. Эти группы называются ролями.

Если вам нужно было управлять пользователями напрямую, назначив им разрешения, это было бы утомительным и ошибочным, из-за большого количества пользователей и разрешений.

  • Вы можете группировать одну, две или больше разрешений в роли.
  • Пользователю назначается одна или несколько ролей.
  • Набор разрешений, которыми владеет пользователь, вычисляется как объединение разрешений от каждой роли пользователя.

У пользователя есть несколько вариантов управления ролями:

// Проверяем, имеет ли пользователь права
// Проверка осуществляется как для пользователя, так и для его роли
Auth:user()->hasAccess($string);

// Получить все роли пользователя
Auth::user()->getRoles();

// Проверить имеет ли пользователь роль
Auth::user()->inRole($role)

// Добавить к пользователю роль
Auth::user()->addRole($role)

Роли

Роли также имеют процедуры для:

// Возвращает всех пользователей с этой ролью
$role->getUsers();

Создание администратора

Чтобы создать пользователя с максимальным (в момент создания) правами выполните следующую команду:

php artisan orchid:admin nickname email@email.com secretpassword

Добавление собственных разрешений

Вы можете определять ваши собственные разрешения в приложениях. Используя их, вы явно реализуете доступ к определённым функциям.

Пример добавления собственных разрешения с использованием поставщика:

use Illuminate\Support\ServiceProvider;
use Orchid\Platform\ItemPermission;
use Orchid\Platform\Dashboard;

class PermissionServiceProvider extends ServiceProvider
{
    /**
     * @param Dashboard $dashboard
     */
    public function boot(Dashboard $dashboard)
    {
        $permissions = ItemPermission::group('modules')
            ->addPermission('analytics', 'Access to data analytics')
            ->addPermission('monitor', 'Access to the system monitor');

        $dashboard->registerPermissions($permissions);
    }
}