$authAdapter->getDbSelect()->where('status = "admin"');
$authAdapter->setIdentity($email)->setCredential(md5($password));
$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);
Далее перебираю линки, какое-то количество вывожу, какое-то объединяю в дроп-даун.
namespace Application\Entity;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class User implements ServiceLocatorAwareInterface
{
protected $serviceLocator = null;
public function __construct(ServiceLocatorInterface $serviceLocator)
{
$this->setServiceLocator($serviceLocator);
}
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
$this->serviceLocator = $serviceLocator;
return $this;
}
public function getServiceLocator()
{
return $this->serviceLocator;
}
public function getAuthService()
{
return $this->getServiceLocator()->get('AuthService');
}
}
namespace Application\Entity;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\ServiceManager\ServiceLocatorAwareTrait;
class User implements ServiceLocatorAwareInterface
{
use ServiceLocatorAwareTrait;
public function __construct(ServiceLocatorInterface $serviceLocator)
{
$this->setServiceLocator($serviceLocator);
}
public function getAuthService()
{
return $this->getServiceLocator()->get('AuthService');
}
}
$sem = $e->getApplication()->getEventManager()->getSharedManager();
$sem->attach('Application\Controller\IndexController', '%name%', %function%);
$_GET['id']
можно писать $this->params()->fromQuery('id')
. Хотя для получения GET-параметров ничто не обязывает использовать плагин Params.В чем концептуальная разница?
GET: site.com/test?name=example
ROUTE: site.com/test/example
site.com/test?arr[]=1&arr[]=2&arr[]=3
GET+ROUTE: site.com/test/example?name=example
$this->params()->fromQuery('name');
$this->params()->fromRoute('name');
Получается из assertion-а к БД никак не обратиться?
Надо делать запросы в каком-то другом месте?
class IsUserDrunkAssertionFactory implements FactoryInterface
{
static protected $objectManager;
public function createService(ServiceLocatorInterface $serviceLocator)
{
static::$objectManager = $serviceLocator->get('doctrine.entitymanager.orm_default');
$assertion = new IsUserDrunkAssertion();
return $assertion;
}
static public function getObjectManager()
{
return static::$objectManager;
}
}
class IsUserDrunkAssertion implements AssertionInterface
{
public function assert(Acl $acl, RoleInterface $role = null, ResourceInterface $resource = null, $privilege = null)
{
$objectManager = IsUserDrunkAssertionFactory::getObjectManager();
$decision = // ... здесь бы запрос сделать
return $decision;
}
}
if ($form->isValid()) {
$data = $form->getData($form::VALUES_AS_ARRAY);
$authService = $this->getServiceLocator()->get('AuthenticationService');
$authService->getAdapter()->setIdentity($data['identity'])->setCredential($data['password']);
$result = $authService->authenticate();
if (!$result->isValid()) {
switch ($result->getCode()) {
case $result::FAILURE_IDENTITY_NOT_FOUND :
$form->get('identity')->setMessages(['Неверный логин']);
break;
case $result::FAILURE_CREDENTIAL_INVALID :
$form->get('password')->setMessages(['Неверный пароль']);
break;
default :
$form->get('identity')->setMessages(['Ошибка авторизации']);
break;
}
}
}
public function sendAction()
{
$page_id = $this->_getParam('page_id');
$topic_id = $this->_getParam('topic_id');
$subject = $this->_getParam('subject');
$message = $this->_getParam('message');
$senderName = $this->_getParam('sender_name');
$senderEmail = $this->_getParam('sender_email');
$birthDate = $this->_getParam('birthdate'); //
$address = $this->_getParam('address'); //
$country = $this->_getParam('country'); //
$postal = $this->_getParam('postal'); //
$pagesTbl = Engine_Api::_()->getDbTable('pages', 'page');
$select = $pagesTbl->select()
->from(array($pagesTbl->info('name')), array('displayname'))
->where('page_id = ?', $page_id);
$query = $select->query();
$result = $query->fetchAll();
$pageName = $result[0]['displayname'];
$viewer = $this->_helper->api()->user()->getViewer();
$user_id = $viewer->getIdentity();
$topicsTbl = Engine_Api::_()->getDbTable('topics', 'pagecontact');
$emails = $topicsTbl->getEmails($page_id, $topic_id);
$i = 0;
$emails = explode(',',$emails);
foreach($emails as $email) {
$emails[$i] = trim($email);
$i++;
}
if ($user_id != 0) {
$senderName = $viewer['displayname'];
$senderEmail = $viewer['email'];
}
$message .= "\r\nBirthdate: " . $birthDate
. "\r\nAddress: " . $address
. "\r\nCountry: " . $country
. "\r\nPostal: " . $postal;
foreach($emails as $email) {
// Make params
$mail_settings = array(
'date' => time(),
'page_name' => $pageName,
'sender_name' => $senderName,
'sender_email' => $senderEmail,
'subject' => $subject,
'message' => $message,
);
// send email
Engine_Api::_()->getApi('mail', 'core')->sendSystem(
$email,
'pagecontact_template',
$mail_settings
);
}
}
namespace Application\View\Model;
use Zend\View\Model\JsonModel as ZendJsonModel;
class JsonModel extends ZendJsonModel
{
/**
* {@inheritDoc}
*/
public function serialize()
{
return (parent::serialize() . "\r\n");
}
}
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
use Zend\Form\View\Helper\FormTextarea;
use Zend\Form\ElementInterface;
use HTMLPurifier;
use HTMLPurifier_Config;
use HTMLPurifier_ConfigSchema;
use Soflomo\Purifier\View\Helper\Purifier;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorAwareTrait;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\ServiceManager\AbstractPluginManager;
class PurefierFormTextarea extends FormTextarea implements ServiceLocatorAwareInterface
{
protected $serviceLocator = null;
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
$this->serviceLocator = $serviceLocator;
return $this;
}
public function getServiceLocator()
{
return $this->serviceLocator;
}
public function getMainServiceLocator()
{
if ($this->serviceLocator instanceof AbstractPluginManager) {
return $this->serviceLocator->getServiceLocator();
}
return $this->serviceLocator;
}
public function render(ElementInterface $element)
{
// ...
$this->getMainServiceLocator()->get('HTMLPurifier');
// ...
}
}
$filterManager = $this->getServiceLocator()->get('FilterManager');
$factory = new Zend\Form\Factory();
$factory->getInputFilterFactory()
->getDefaultFilterChain()
->setPluginManager($filterManager);
class Module implements Zend\ModuleManager\Feature\FilterProviderInterface
{
// ...
/**
* {@inheritDoc}
*/
public function getFilterConfig()
{
return [
'invokables' => [
'myfilter' => \Application\Filter\MyFilter::class,
],
];
}
}