Advertisement
Guest User

Untitled

a guest
Aug 25th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Authentication\Controller;
  4.  
  5. use Employee\Model\EmployeeTable;
  6. use Main\Form\LoginForm;
  7. use Zend\Authentication\Adapter\DbTable\CredentialTreatmentAdapter;
  8. use Zend\Authentication\AuthenticationService;
  9. use Zend\Db\Sql\Select;
  10. use Zend\Mvc\Controller\AbstractActionController;
  11. use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger;
  12.  
  13. class AuthController extends AbstractActionController
  14. {
  15. /**
  16. * @var AuthenticationService
  17. */
  18. private $authService;
  19.  
  20. /**
  21. * @var EmployeeTable
  22. */
  23. private $employeeTable;
  24.  
  25. /**
  26. * AuthController constructor.
  27. *
  28. * @param AuthenticationService $authService
  29. * @param EmployeeTable $employeeTable
  30. */
  31. public function __construct(AuthenticationService $authService, EmployeeTable $employeeTable)
  32. {
  33. $this->authService = $authService;
  34. $this->employeeTable = $employeeTable;
  35. }
  36.  
  37. /**
  38. * @return ViewModel
  39. */
  40. public function loginAction()
  41. {
  42. $form = new LoginForm();
  43. $request = $this->getRequest();
  44.  
  45. if (!$request->isPost()) {
  46. return ['form' => $form];
  47. }
  48.  
  49. $form->setData($request->getPost());
  50. if (!$form->isValid()) {
  51. $this->flashMessenger()->addMessage("your error message", FlashMessenger::NAMESPACE_ERROR);
  52.  
  53. return ['form' => $form];
  54. }
  55.  
  56. /** @var Employee $employeeObject */
  57. $employeeObject = $this->employeeTable->getEmployeeByLogin($request->getPost('system_name'), $request->getPost('password'));
  58. if (!$employeeObject) {
  59. $this->flashMessenger()->addMessage("your error message", FlashMessenger::NAMESPACE_ERROR);
  60.  
  61. return ['form' => $form];
  62. }
  63.  
  64. if ($this->authenticate($employeeObject)) {
  65. return $this->redirect()->toRoute('main');
  66. }
  67.  
  68. $this->flashMessenger()->addMessage("your error message", FlashMessenger::NAMESPACE_ERROR);
  69.  
  70. return ['form' => $form];
  71. }
  72.  
  73. public function logoutAction()
  74. {
  75. $this->authService->clearIdentity();
  76.  
  77. return $this->redirect()->toRoute('login');
  78. }
  79.  
  80. /**
  81. * @param $employeeObject
  82. *
  83. * @return array
  84. */
  85. private function authenticate($employeeObject)
  86. {
  87. /** @var CredentialTreatmentAdapter $adapter */
  88. $adapter = $this->authService->getAdapter();
  89. $select = $adapter->getDbSelect();
  90. $select->join(['R' => 'role'], 'role_id = R.id', ['role' => 'description'], Select::JOIN_LEFT);
  91. $this->authService->setAdapter($adapter);
  92.  
  93. $this->authService->getAdapter()->setIdentity($employeeObject->system_name)->setCredential($employeeObject->password);
  94. $result = $this->authService->authenticate();
  95.  
  96. if ($result->isValid()) {
  97. $resultRow = $this->authService->getAdapter()->getResultRowObject();
  98.  
  99. $this->authService->getStorage()->write([
  100. 'id' => $resultRow->id,
  101. 'system_name' => $resultRow->system_name,
  102. 'role' => $resultRow->role,
  103. ]);
  104.  
  105. return true;
  106. }
  107.  
  108. return false;
  109. }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement