2
respostas

Dúvida Sobre Autenticação - Convenção "users"

Bom dia, amigos! Estou com uma pequena dúvida com relação ao padrão do cake no que se refere à autenticação de usuários sem utilizar o padrão "users".

Fiz o seguinte ajuste no APP_Controller Criei um plugin chamado autenticação.

AuthComponent::ALL =>[
            'userModel' => 'Autenticacao.Usuarios',
            ],

porém me retorna o erro:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'projeto.users' doesn't exist

Também segui o indicado pela documentação:

// Pass settings in using 'all'
$this->Auth->config('authenticate', [
    AuthComponent::ALL => ['userModel' => 'Members'],
    'Basic',
    'Form'
]);

E nada...

Agradeço desde já pela colaboração!

2 respostas

Olá, O padrão do cake é sempre procurar por /users/login, para alterar isso o seu plugin deveria funciona ou antes do controller Controller::beforeFilter() ou como um componente do controller Controller::$component, não sei bem como está o seu controller pra saber se seu plugin atua como deveria.

Obrigado pela força Marcio. Ainda continuo com o mesmo problema... aqui está o trecho do código do UsuariosController e AppController. Onde posso fazer esta alteração?

<?php
namespace Acesso\Controller;

use Acesso\Controller\AppController;
use Cake\Event\Event;


/**
 * Usuarios Controller
 *
 * @property \App\Model\Table\UsuariosTable $Usuarios
 */
class UsuariosController extends AppController
{ 

        parent::beforeFilter($event);
        $this->Auth->allow('add');
    } 

    public function login() {
        $this->viewBuilder()->layout('login');
        if ($this->request->is('post')) {
            $usuario = $this->Auth->identify();
            if ($usuario) {
                $this->Auth->setUser($usuario);
                return $this->redirect($this->Auth->redirectUrl());
            }
            $this->Flash->error(__('Senha ou usuário inválido.'));
        }
    }
...

AppController.php

 public function initialize()
    {
        parent::initialize();
        $this->loadComponent('RequestHandler');
        $this->loadComponent('Flash');
        $this->loadComponent('Auth', [
            'authorize' => [
              'Acl.Actions'=>['actionPath' => 'controllers/']
        ],

        'loginAction' => [
            'controller' => 'Usuarios',
            'action' => 'login',
            'plugin' => 'acesso'
        ],
          'unauthorizedRedirect' => [
            'plugin'=> false,
            'controller'=>'Pages',
            'action'=>'index'
        ],