laravel-ext-auth maintained by nachofassini
Autenticacion y permisos
El paquete agrega vistas y metodos para el login de laravel. Tambien provee
metodos para editar perfil y password, todo esta basado en la autenticacion
incluida en laravel. Ademas provee metodos para el login de dependencias.
Por otro lado mediante "zizaco/entrust" se provee un medio para usar
roles y permisos por roles, la libreria agrega ademas un middleware para
asociar permisos con rutas sin tener que agregarlos middleware en las rutas
de este modo las reglas de acceso pueden ser incorporadas tan tarde como se
desee.
Instalacion
Para laravel 5.3:
require: {
"NachoFassini/laravel-ext-auth": "~2.0.0",
"zizaco/entrust": "*"
}
Se debe requerir entrust por que este paquete no tiene una version estable.
Luego un composer install sera suficiente.
Agregar los providers y middleware
Agregar a config/app.php las siguientes lineas
<?php
'providers' => [
...
NachoFassini\Auth\AuthServiceProvider::class,
Zizaco\Entrust\EntrustServiceProvider::class,
]
Agregar a app/Http/Kernel.php las siguientes lineas
<?php
protected $middleware = [
...
\NachoFassini\Auth\Middleware\RolesRoutes::class,
];
Una vez agregados los middleware, podesmos usar los filtros para verifica que el usuarios este autenticado y logueado en una dependencia.
Ejemplo:
Route::group(['middleware' => ['auth']], function () {
//filtro de usuario
});
Configuracion
Manejo de errores
Se agregan vistas para los errores 403 y 404.
Asegurarse de completar las siguientes variables en lang/es/messages.php
'nombre' => 'Sistema sistematico',
'version' => 'v1.0.0',
Migraciones
Una vez agregados los providers agregar las migraciones
php artisan entrust:migration #Crea migracion para entrust
php artisan migrate #Migrar
Agregar a database/seeds/DatabaseSeeder.php la siguiente linea
...
$this->call(NachoFassini\Auth\Seeders\UserEstadosTableSeeder::class);
Mails
En el archivo lang/es/messages.php hay que asegurarse de que esten
definidas las siguientes variables indispensables para el envio de mails
- nombre => nombre del sistema
- url => url de origen del mensaje
- email-asunto [
new-user => Asunto del email de creacion de usuario exitoso
reset-password => Asunto del email de cambio/reset de contraseña
]
- footer => recordar al usuario sobre proteccion de datos personales, etc.
Roles Models
Los roles y permisos se deben agregar en una migracion, los roles y permisos deben acompañarse de la creacion de los siguientes modelos(extraido de https://github.com/Zizaco/entrust):
Role
Create a Role model inside app/models/Role.php using the following example:
<?php namespace App;
use Zizaco\Entrust\EntrustRole;
class Role extends EntrustRole
{
}
The Role model has three main attributes:
name— Unique name for the Role, used for looking up role information in the application layer. For example: "admin", "owner", "employee".display_name— Human readable name for the Role. Not necessarily unique and optional. For example: "User Administrator", "Project Owner", "Widget Co. Employee".description— A more detailed explanation of what the Role does. Also optional.
Both display_name and description are optional; their fields are nullable in the database.
Permission
Create a Permission model inside app/models/Permission.php using the following example:
<?php namespace App;
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission
{
}
The Permission model has the same three attributes as the Role:
name— Unique name for the permission, used for looking up permission information in the application layer. For example: "create-post", "edit-user", "post-payment", "mailing-list-subscribe".display_name— Human readable name for the permission. Not necessarily unique and optional. For example "Create Posts", "Edit Users", "Post Payments", "Subscribe to mailing list".description— A more detailed explanation of the Permission.
In general, it may be helpful to think of the last two attributes in the form of a sentence: "The permission display_name allows a user to description."
User
Next, use the EntrustUserTrait and ExtAuthTrait trait in your existing User model. For example:
<?php
use Zizaco\Entrust\Traits\EntrustUserTrait;
use NachoFassini\Auth\ExtAuthTrait;
class User extends Eloquent
{
use EntrustUserTrait, ExtAuthTrait; // add this trait to your user model
...
}
This will enable the relation with Role and add the following methods roles(), hasRole($name), can($permission), and ability($roles, $permissions, $options) within your User model.
Don't forget to dump composer autoload
composer dump-autoload
And you are ready to go.
Los datos de los roles y permisos agregarlos en una migracion que se debe correr en la migracion por defecto
Finalmente se debe agregar un archivo que indique como se
asociaran los permisos con las rutas, este archivo se debe agregar
en config/routes-rules.php con una estructura como la siguiente:
<?php
return [
['route' => 'admin*', 'permission' => 'administrador'],
['route' => 'data*', 'permission' => 'owner'],
];
Los items route definen una ruta que puede ser una string en la que se
puede usar "*" como comodin. Los permission son los nombres de los
permisos
Acceso a administracion de usuarios
Agregar los links a la administracion de usuarios y sus dependencias
<li><a href="{{ route('auth.users.index') }}">Usuarios</a></li>