E
E
Evgeny Startsev2015-10-27 01:51:27
Zend Framework
Evgeny Startsev, 2015-10-27 01:51:27

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);

Thanks in advance

Answer the question

In order to leave comments, you need to log in

1 answer(s)
C
Cat Anton, 2015-10-27
@jey_val_star

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);

or even shorter:
$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 question

Ask a Question

731 491 924 answers to any question