I was trying to implement login functionality for a web application. I found that CakePHP not allowing authentication if I using field other than 'username'. Can you please explain how can I use email field instead of username field for authentication.
I am sharing Users table and authentication code below::
Users Table
CREATE TABLE `users` ( `id` binary(36) NOT NULL DEFAULT 'NOT NULL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', `password` varchar(225) NOT NULL, `firstname` varchar(50) NOT NULL, `lastname` varchar(50) NOT NULL, `email` varchar(45) NOT NULL, `phone` varchar(15) NOT NULL DEFAULT '0', `dob` date NOT NULL, `profile_for` varchar(50) DEFAULT NULL, `profile_pic` varchar(255) DEFAULT NULL, `cover_photo` varchar(100) DEFAULT NULL, `package_id` binary(36) DEFAULT NULL, `status` enum('act','dct','hid') NOT NULL DEFAULT 'act', `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mobile` (`phone`), UNIQUE KEY `email_UNIQUE` (`email`), KEY `package_id_idx` (`package_id`), CONSTRAINT `package_id` FOREIGN KEY (`package_id`) REFERENCES `packages` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Authentication Code
$this->loadComponent('Auth', [ 'loginAction'=> [ 'controller' => 'Users', 'action' => 'login' ], 'loginRedirect'=>[ 'controller' => 'Users', 'action' => 'dashboard' ], 'logoutRedirect'=>[ 'controller' => 'Users', 'action' => 'login' ], 'authError' => 'Did you really think you are allowed to see that?', 'authenticate' => [ 'Form' => ['email' => 'email', 'password' => 'password'] ], 'storage' => 'Session', 'authorize' => array('Controller') ]);