Looking to hire Laravel developers? Try LaraJobs
This package is not available.

laravel-ext-auth maintained by nachofassini

Description
Extend laravel default authentication
Last update
2016/11/30 13:07 (dev-master)
License
Downloads
15

Comments
comments powered by Disqus

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>