Answer the question
In order to leave comments, you need to log in
Roles in Zend Framework - how to check during authorization?
Site on zend framework. The site has an admin.
admins and users are stored in the same table
How can I check the user's role during authorization in the admin panel?
A piece of code for authorization
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
// указываем таблицу, где необходимо искать данные о пользователях
// колонку, где искать имена пользователей, а также колонку, где хранятся пароли
$authAdapter->setTableName('users')
->setIdentityColumn('email')
->setCredentialColumn('password');
// получаем введённые данные
$email = $this->getRequest()->getPost('email');
$password = $this->getRequest()->getPost('password');
// подставляем полученные данные из формы
$authAdapter->setIdentity($email)
->setCredential(md5($password));
// получаем экземпляр Zend_Auth
$auth = Zend_Auth::getInstance();
// делаем попытку авторизировать пользователя
$result = $auth->authenticate($authAdapter);
Answer the question
In order to leave comments, you need to log in
Option 1
Use Zend_Acl
Set an additional condition in the SQL authorization request:
By the way, it's better not to change the password to its MD5 hash like this:
and do it like this:
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
// указываем таблицу, где необходимо искать данные о пользователях
// колонку, где искать имена пользователей, а также колонку, где хранятся пароли
$authAdapter->setTableName('users')
->setIdentityColumn('email')
->setCredentialColumn('password')
->setCredentialTreatment('MD5(?)');
// получаем введённые данные
$email = $this->getRequest()->getPost('email');
$password = $this->getRequest()->getPost('password');
// подставляем полученные данные из формы
$authAdapter->setIdentity($email)
->setCredential($password);
// получаем экземпляр Zend_Auth
$auth = Zend_Auth::getInstance();
// делаем попытку авторизировать пользователя
$result = $auth->authenticate($authAdapter);
$authAdapter = new Zend_Auth_Adapter_DbTable(
Zend_Db_Table::getDefaultAdapter(),
'users', 'email', 'password', 'MD5(?)'
);
// получаем введённые данные
$email = $this->getRequest()->getPost('email');
$password = $this->getRequest()->getPost('password');
// подставляем полученные данные из формы
$authAdapter->setIdentity($email)
->setCredential($password);
// получаем экземпляр Zend_Auth
$auth = Zend_Auth::getInstance();
// делаем попытку авторизировать пользователя
$result = $auth->authenticate($authAdapter);
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question