public function authAction(){ $form = new Application_Form_Enter(); if ($form->isValid($this->getRequest()->getPost())){ $bootstrap = $this->getInvokeArg('bootstrap'); $auth = Zend_Auth::getInstance(); $adapter = $bootstrap->getPluginResource('db')->getDbAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable( $adapter, 'user', 'login', 'password', 'MD5(?)' ); $authAdapter->setIdentity($form->login->getValue()); $authAdapter->setCredential($form->password->getValue()); $result = $auth->authenticate($authAdapter); // storage if ($result->isValid()){ $storage = $auth->getStorage(); $storage_data = $authAdapter->getResultRowObject( null, array('activate', 'password', 'enabled')); $user_model = new Application_Model_DbTable_User(); $language_model = new Application_Model_DbTable_Language(); $storage_data->status = 'user'; $storage->write($storage_data); } } }
$auth = Zend_Auth::getInstance(); // if ($auth->hasIdentity()){ // $user_data = $auth->getStorage()->read(); }
public function _initAuth(){ $auth = Zend_Auth::getInstance(); $data = $auth->getStorage()->read(); if (!isset($data->status)){ $storage_data = new stdClass(); $storage_data->status = 'guest'; $auth->getStorage()->write($storage_data); } }
class Acl extends Zend_Acl { public function __construct() { // $this->addRole('guest'); $this->addRole('user', 'guest'); $this->addRole('admin', 'user'); // // ! $this->add(new Zend_Acl_Resource('guest_allow')); $this->add(new Zend_Acl_Resource('index/index'),'guest_allow'); //... // ! $this->add(new Zend_Acl_Resource('user_allow')); $this->add(new Zend_Acl_Resource('user/index'), 'user_allow'); // ... // ! $this->add(new Zend_Acl_Resource('admin_allow')); $this->add(new Zend_Acl_Resource('admin/index'), 'admin_allow'); //... // , - $this->deny(null, null, null); $this->allow('guest', 'guest_allow', 'show'); $this->allow('user', 'user_allow', 'show'); $this->allow('admin','admin_allow', 'show'); } public function can($privilege='show'){ // $request = Zend_Controller_Front::getInstance()->getRequest(); $resource = $request->getControllerName() . '/' . $request->getActionName(); // if (!$this->has($resource)) return true; // $storage_data = Zend_Auth::getInstance()->getStorage()->read(); $role = array_key_exists('status', $storage_data)?$storage_data->status : 'guest'; return $this->isAllowed($role, $resource, $privilege); } }
can
method). class CheckAccess extends Zend_Controller_Plugin_Abstract { /** * preDispatch * controller/action * generateAccessError * * @param Zend_Controller_Request_Abstract $request */ public function preDispatch(Zend_Controller_Request_Abstract $request) { $acl = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('Acl'); if (!$acl->can()){ $this->generateAccessError(); } } /** * . * error * . * * @param string $msg */ public function generateAccessError($msg=' !'){ $request = $this->getRequest(); $request->setControllerName ('error'); $request->setActionName('error'); $request->setParam('message', $msg); } }
public function _initAcl(){ Zend_Loader::loadClass('Acl'); Zend_Loader::loadClass('CheckAccess'); Zend_Controller_Front::getInstance()->registerPlugin(new CheckAccess()); return new Acl(); }
includePaths.plugins = APPLICATION_PATH "/ plugins"
includePaths.classes = APPLICATION_PATH "/ classes"
Source: https://habr.com/ru/post/121114/
All Articles