Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16820 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Authentication\Result as AuthResult;
7
use Laminas\Db\Adapter\AdapterInterface;
16768 efrain 8
 
1 www 9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
11
 
12
use LeadersLinked\Authentication\AuthOneTimePasswordAdapter;
13
use Laminas\Authentication\AuthenticationService;
14
 
15
use Laminas\View\Model\JsonModel;
16
use Laminas\View\Model\ViewModel;
15444 efrain 17
use LeadersLinked\Model\CalendarEvent;
16766 efrain 18
use LeadersLinked\Library\Functions;
16768 efrain 19
use LeadersLinked\Cache\CacheInterface;
20
use LeadersLinked\Cache\CacheImpl;
1 www 21
 
22
 
23
class AuthController extends AbstractActionController
24
{
25
    /**
26
     *
16769 efrain 27
     * @var \Laminas\Db\Adapter\AdapterInterface
1 www 28
     */
29
    private $adapter;
30
 
31
    /**
32
     *
16769 efrain 33
     * @var \LeadersLinked\Cache\CacheInterface
1 www 34
     */
16769 efrain 35
    private $cache;
36
 
37
 
38
    /**
39
     *
40
     * @var \Laminas\Log\LoggerInterface
41
     */
16768 efrain 42
    private $logger;
1 www 43
 
44
    /**
45
     *
16768 efrain 46
     * @var array
1 www 47
     */
16768 efrain 48
    private $config;
49
 
16769 efrain 50
 
1 www 51
    /**
16769 efrain 52
     *
53
     * @var \Laminas\Mvc\I18n\Translator
1 www 54
     */
16769 efrain 55
    private $translator;
1 www 56
 
16769 efrain 57
 
1 www 58
    /**
16768 efrain 59
     *
16769 efrain 60
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
61
     * @param \LeadersLinked\Cache\CacheInterface $cache
62
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
1 www 63
     * @param array $config
16769 efrain 64
     * @param \Laminas\Mvc\I18n\Translator $translator
1 www 65
     */
16769 efrain 66
    public function __construct($adapter, $cache, $logger, $config, $translator)
1 www 67
    {
16769 efrain 68
        $this->adapter      = $adapter;
69
        $this->cache        = $cache;
70
        $this->logger       = $logger;
71
        $this->config       = $config;
72
        $this->translator   = $translator;
1 www 73
    }
16768 efrain 74
 
1 www 75
 
76
    public function indexAction()
77
    {
78
        $this->layout()->setTemplate('layout/auth');
79
        $viewModel = new ViewModel();
80
        $viewModel->setTemplate('leaders-linked/auth/index.phtml');
81
 
82
        return $viewModel ;
83
    }
84
 
85
    public function signoutAction()
86
    {
87
        $auth = new AuthenticationService();
88
        $auth->clearIdentity();
89
 
90
        return $this->redirect()->toRoute('home');
91
    }
92
 
93
    public function signinAdminAction()
94
    {
95
 
96
 
97
        $request = $this->getRequest();
98
        if($request->isGet()) {
16766 efrain 99
            $user_uuid  = Functions::sanitizeFilterString($this->params()->fromQuery('user_uuid'));
1 www 100
            $rand       = filter_var($this->params()->fromQuery('rand'), FILTER_SANITIZE_NUMBER_INT);
101
            $timestamp  = filter_var($this->params()->fromQuery('time'), FILTER_SANITIZE_NUMBER_INT);
16766 efrain 102
            $password   = Functions::sanitizeFilterString($this->params()->fromQuery('password'));
1 www 103
 
104
 
105
            if(!$user_uuid || !$rand || !$timestamp || !$password ) {
106
                throw new \Exception('ERROR_PARAMETERS_ARE_INVALID');
107
            }
108
 
16996 efrain 109
 
110
            session_regenerate_id(true);
1 www 111
 
112
            $authAdapter = new AuthOneTimePasswordAdapter ($this->adapter, $this->config);
113
            $authAdapter->setDataAdmin($user_uuid, $password, $timestamp, $rand);
114
 
115
            $authService = new AuthenticationService();
116
            $result = $authService->authenticate($authAdapter);
117
 
118
 
119
            if($result->getCode() == AuthResult::SUCCESS) {
120
                return $this->redirect()->toRoute('dashboard');
121
            } else {
122
                throw new \Exception($result->getMessages()[0]);
123
            }
124
        }
125
 
126
        return new JsonModel([
127
            'success' => false,
128
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
129
        ]);
130
 
131
    }
132
 
133
    public function signinCompanyAction()
134
    {
135
        $request = $this->getRequest();
136
        if($request->isGet()) {
16766 efrain 137
            $company_uuid = Functions::sanitizeFilterString($this->params()->fromQuery('company_uuid'));
138
            $user_uuid  = Functions::sanitizeFilterString($this->params()->fromQuery('user_uuid'));
139
            $timestamp   = Functions::sanitizeFilterString($this->params()->fromQuery('time'));
140
            $password   = Functions::sanitizeFilterString($this->params()->fromQuery('password'));
1 www 141
            $rand       = filter_var($this->params()->fromQuery('rand'), FILTER_SANITIZE_NUMBER_INT);
16766 efrain 142
            $relational = Functions::sanitizeFilterString($this->params()->fromQuery('relational'));
143
            $type       = Functions::sanitizeFilterString($this->params()->fromQuery('type'));
1 www 144
 
145
            if(empty($user_uuid)  || empty($company_uuid) || empty($user_uuid) || empty($timestamp)  || empty($password) || empty($rand)) {
146
                return new JsonModel([
147
                    'success' => false,
148
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
149
                ]);
150
            }
151
 
16996 efrain 152
            session_regenerate_id(true);
153
 
1 www 154
            $authAdapter = new AuthOneTimePasswordAdapter ($this->adapter, $this->config);
155
            $authAdapter->setDataCompany($user_uuid, $password, $timestamp, $rand, $company_uuid);
156
 
157
            $authService = new AuthenticationService();
158
            $result = $authService->authenticate($authAdapter);
159
 
160
 
161
            if($result->getCode() == AuthResult::SUCCESS) {
15444 efrain 162
 
163
                switch($type)
164
                {
16820 efrain 165
                    case CalendarEvent::TYPE_SURVEY_ORGANIZATIONAL_CLIMATE :
166
 
167
                        $this->cache->setItem('ACTIVITY_CENTER_RELATIONAL', $relational);
168
 
169
                        $route =  'activities-center/organizational-climate';
170
                        break;
171
 
172
 
173
                    case CalendarEvent::TYPE_SURVEY_NORMAL :
174
 
175
                        $this->cache->setItem('ACTIVITY_CENTER_RELATIONAL', $relational);
176
 
177
                        $route =  'activities-center/survey';
178
                        break;
179
 
180
 
15444 efrain 181
                    case CalendarEvent::TYPE_PERFORMANCE_EVALUATION :
182
 
183
                        $this->cache->setItem('ACTIVITY_CENTER_RELATIONAL', $relational);
184
 
185
                        $route =  'activities-center/performance-evaluation';
186
                        break;
187
 
15461 efrain 188
 
189
                    case CalendarEvent::TYPE_RECRUITMENT_SELECTION_INTERVIEW :
190
 
191
                        $this->cache->setItem('ACTIVITY_CENTER_RELATIONAL', $relational);
192
 
193
                        $route =  'activities-center/recruitment-and-selection';
194
                        break;
195
 
15444 efrain 196
                    default :
197
                        $route = 'dashboard';
198
                        break;
199
 
200
                }
201
 
202
                return $this->redirect()->toRoute($route);
203
 
204
 
205
 
1 www 206
            } else {
207
                throw new \Exception($result->getMessages()[0]);
208
            }
209
        }
210
 
211
        return new JsonModel([
212
            'success' => false,
213
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
214
        ]);
215
    }
216
}