kolgaev / users
Registration and authorization for rest-api application. Roles and permissions users.
Requires
- jenssegers/agent: 3.0.x-dev
This package is auto-updated.
Last update: 2024-03-20 01:08:21 UTC
README
Расширение пользователей для Laravel
В данном пакете реализованы функции регистрации, авторизации и аутентификации пользователя, а также добавлены роли и разрешения пользователей
Установка
Установите пакет: composer require kolgaev/users
Настройка
Если Вам необходимо сменить наименования таблиц или переопределить модели разрешений и ролей, то выполните команду
php artisan vendor:publish --provider="Kolgaev\Users\Provider\KolgaevUsersServiceProvider"
Теперь в появившемся конфигурационной файле /config/kolgaev_users.php
можно сменить наменования таблиц и столбцов
Если Вам необходимо добавить методы в модели Role и Permission, то определите собственные модели, которые будут наследовать соответсвующие модели пакета
<?php
use Kolgaev\Users\Model\Role as ParentRole;
class Role extends ParentRole
{
// ...
}
Не забудьте указать в конфигурационном файле пути до собственных моделей
Модели и База данных
В модель пользователей необходимо добавить трейт UsersRoleAndPermission
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Kolgaev\Users\Models\UsersRoleAndPermission;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable, UsersRoleAndPermission;
}
Для создания таблиц в базе данных выполните команду php artisan migrate
Будут выполнены стандартные миграции пакета с учетом его конфигурации и созданы необходимые таблицы
Маршрутизация
В провайдере пакета уже определены стандартные маршруты, которые доступны по адресу http://example.com/api/*
Если вам необходимо сменить префикс, это можно сделать в конфигруационном файле
Таблица маршрутов:
Тип | Маршрут | Описание | Параметры |
---|---|---|---|
POST |
/api/registration |
Регистрация пользователя | email password name |
POST |
/api/login |
Авторизация пользователя | email password |
POST |
/api/logout |
Выход пользователя | |
POST |
/api/userdata |
Данные пользователя |
Методы
Для выдачи разрешений и определения роли пользователю используйте следующие методы
<?php
/** @var int $id Идентификатор роли */
$request->user()->addRole($id);
$request->user()->removeRole($id);
/** @var int $id Идентификатор разрешения */
$request->user()->addPermission($id);
$request->user()->removePermission($id);
Точно также для роли, можно выдать и отозвать разрешения
<?php
/** @var int $id Идентификатор роли */
$role = \Kolgaev\Users\Models\Role::find($id);
$role->addPermission($permission_id);
$role->removePermission($permission_id);
Контроллеры
Для выдачи ролей и разрешений реализованы соответствующие контроллеры Методы вернут ответ в формате JSON
Все что необходимо сделать - это определить свои маршруты на соответсвующие методы
<?php
Route::post('user/addPermission', '\Kolgaev\Users\Users@addPermission');
Имеются следующие методы
<?php
use Illuminate\Http\Request;
use Kolgaev\Users\Users;
Users::addPermission(Request $request);
Users::removePermission(Request $request);
Запросу необходимо передать следующие параметры
id
Идентификатор пользователяpermission_id
Идентификатор разрешения
Аналогично для роли
<?php
use Illuminate\Http\Request;
use Kolgaev\Users\Roles;
Roles::addUser(Request $request);
Roles::removeUser(Request $request);
Roles::addPermission(Request $request);
Roles::removePermission(Request $request);
Методы addUser и removeUser принимают следующие параметры
id
Идентификатор пользователяrole_id
Идентификатор роли
Методы addPermission и removePermission:
id
Идентификатор ролиpermission_id
Идентификатор разрешения