Ingresar

¡No existen páginas similares a "Yii2GestionUsuarios"!

Quitar mensaje
Yii2GestionUsuarios

Atención

Este documento está en construcción inicial, disculpe las molestias.

Gestión de usuarios en Yii2 usando yii2-admin

Introducción.

Instalando yii2-admin.

Desde dentro del directorio raíz del proyecto, como usuario, se ejecuta:

composer require mdmsoft/yii2-admin "*"

Configuración.

En el archivo ./config/web.php agregar las siguientes líneas

$config = [
    'modules' => [
        'admin' => [
            'class' => 'mdm\admin\Module',
            ...
        ]
        ...
    ],
    ...
    'components' => [
        ....
        'authManager' => [
            'class' => 'yii\rbac\DbManager', // o 'yii\rbac\PhpManager'
        ]
    ],
    'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
        // agregar acciones para permitir acceso a todos
            'site/*', 
            'admin/*', // Eliminar cuando ya se haya configurado un usuario administrador
        ]
    ],
];

En el archivo ./config/console.php agregar la siguiente línea:

    'components' => [
        ...
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
        ...
    ],

Con esto ya está configurado lo básico del módulo Yii2-admin, se puede ingresar a cada acción desde esta ruta

http://localhost/path/to/index.php?r=admin
http://localhost/path/to/index.php?r=admin/route
http://localhost/path/to/index.php?r=admin/permission
http://localhost/path/to/index.php?r=admin/menu
http://localhost/path/to/index.php?r=admin/role
http://localhost/path/to/index.php?r=admin/assignment

Sin embargo se mostrará un error indicando lo siguiente:

PHP Fatal Error – yii\base\ErrorException
Call to undefined method app\models\User::find()

Acá es dónde debemos agregar algunas cosas a Yii2-admin para que esté completamente funcional. Yii2-admin asume que se tiene una tabla de usuarios en la base de datos y un modelo en Yii2 para dicha tabla, esto no existe en una instalación de Yii2 usando el template básico, todo lo contrario pasa al usar el template avanzado por lo tanto vamos a copiar algunas cosas de la instalación avanzada a la básica.

Configurando el registro y logueo de usuarios

Al final de este documento se encuentran los archivos que necesitaremos copiar, primero vamos con el archivo que creará la tabla de usuarios, este archivo se encuentra en la siguiente ruta:

./vendor/yiisoft/yii2/rbac/migrations/m130524_201442_init.php

Lo copiaremos a la misma ruta en nuestro proyecto.

Luego copiaremos los archivos del modelo, controlador y vistas. Los archivos del modelo se encuentra en la siguiente ruta:

./models/User.php
./models/PasswordResetRequestForm.php
./models/ResetPasswordForm.php
./models/SignupForm.php

Al igual que el anterior lo copiaremos a la misma ruta en nuestro proyecto y sobrescribiremos los archivos que ya estaban.

Ahora copiamos los controladores :

./controllers/SiteController.php

Ahora copiamos las vistas:

./views/site/signup.php
./views/site/resetPassword.php
./views/site/requestPasswordResetToken.php
./views/site/login.php

Corriendo los scripts de migración

Yii2-admin pone a disposición un menú de administración ya listo para usar, para activar este menú se debe correr el siguiente comando desde el directorio raíz de nuestro proyecto:

yii migrate --migrationPath=@mdm/admin/migrations

Luego para crear la tabla de usuarios:

yii migrate --migrationPath=@yii/rbac/migrations

Personalizando el controlador

Es necesario personalizar el controlador de yii2-admin para que se acople con el modelo que estamos usando para la administración de usuarios, para esto se debe agregar el siguiente código en el archivo de configuración ./config/web.php.

    'modules' => [
        'admin' => [
            ...,
            'controllerMap' => [
                 'assignment' => [
                    'class' => 'mdm\admin\controllers\AssignmentController',
                    'userClassName' => 'app\models\User',
                    'idField' => 'id',
                ]
            ],
            ...
        ]
        ...
    ],

Personalizando el menú

Para que aparezca el menú con todas las opciones para administrar usuarios se agrega el siguiente código en el archivo de configuración ./config/web.php.

    'modules' => [
        'admin' => [
            ...,
            'layout' => 'left-menu', //otros valores 'right-menu', 'top-menu' y 'null'
        ],
        ...
    ],

Luego para personalizar el nombre de cada ítem se puede agregar:

    'modules' => [
        'admin' => [
            ...,
            'menus' => [
                'assignment' => [
                    'label' => 'Grand Access' 
                ],
                'route' => null, // deshabilitar ítem
            ],
        ],
        ...
    ],

Archivos necesarios

BaseYii2Admin.zip