i'm working in cakephp 4 . i have set the model ('Representatives') for login authentication but it is using another model with name users for authentication. i have uploaded the AppController.php file as well as EmployeesController.php file where I defined the method(action).
in Controller/AppController.php
class AppController extends Controller
{
public function initialize(): void
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
"authenticate" => [
"Form" => [
"fields" => [
"username" => "email",
"password" => "password"
],
"userModel" => "Representatives"
]
],
"loginAction" => [
"controller" => "Employees",
"action" => "login"
],
"loginRedirect" => [
"controller" => "Employees",
"action" => "home"
],
"logoutRedirect" => [
"controller" => "Employees",
"action" => "login"
]
]);
}
in EmployeesController :
class EmployeesController extends AppController
{
public function initialize(): void
{
parent::initialize();
$this->loadModel("Employees");
$this->loadModel("Representatives");
$this->loadComponent('Flash');
}
public function login()
{
if ($this->request->is('post')) {
$user = $this->Auth->identify();
// echo "<pre>"; print_r($user); die;
if ($user) {
$this->Auth->setUser($user);
echo "<pre>"; print_r($user); exit();
return $this->redirect($this->Auth->redirectUrl());
} else {
$this->Flash->error(__('Username or password is incorrect'));
}
}
$this->viewBuilder()->setLayout('home');
$this->set("title", "Login");
}
in model/entity/Representative.php
<?php
namespace App\Model\Entity;
use Authentication\PasswordHasher\DefaultPasswordHasher;
use Cake\ORM\Entity;
class Representative extends Entity
{
protected $_accessible = [
'id' => false,
'name' => true,
'role' => true,
'email' => true,
'password' => true,
'phone' => true,
'slug' => false
];
protected function _setPassword(string $password) : ?string
{
if (strlen($password) > 0) {
return (new DefaultPasswordHasher())->hash($password);
}
}
}
in model/table/RepresentativesTable.php
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Utility\Text;
use Cake\Event\EventInterface;
class RepresentativesTable extends Table
{
public function initialize(array $config) :void
{
$this->setTable("newusers");
}
public function beforeSave(EventInterface $event, $entity, $options)
{
if ($entity->isNew() && !$entity->slug) {
$sluggedTitle = Text ::slug($entity->name);
$entity->slug = substr($sluggedTitle, 0, 191);
}
}
}