Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16996 | | 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
 
16997 efrain 154
 
155
 
1 www 156
            $authAdapter = new AuthOneTimePasswordAdapter ($this->adapter, $this->config);
157
            $authAdapter->setDataCompany($user_uuid, $password, $timestamp, $rand, $company_uuid);
158
 
159
            $authService = new AuthenticationService();
160
            $result = $authService->authenticate($authAdapter);
161
 
162
 
163
            if($result->getCode() == AuthResult::SUCCESS) {
15444 efrain 164
 
165
                switch($type)
166
                {
16820 efrain 167
                    case CalendarEvent::TYPE_SURVEY_ORGANIZATIONAL_CLIMATE :
168
 
169
                        $this->cache->setItem('ACTIVITY_CENTER_RELATIONAL', $relational);
170
 
171
                        $route =  'activities-center/organizational-climate';
172
                        break;
173
 
174
 
175
                    case CalendarEvent::TYPE_SURVEY_NORMAL :
176
 
177
                        $this->cache->setItem('ACTIVITY_CENTER_RELATIONAL', $relational);
178
 
179
                        $route =  'activities-center/survey';
180
                        break;
181
 
182
 
15444 efrain 183
                    case CalendarEvent::TYPE_PERFORMANCE_EVALUATION :
184
 
185
                        $this->cache->setItem('ACTIVITY_CENTER_RELATIONAL', $relational);
186
 
187
                        $route =  'activities-center/performance-evaluation';
188
                        break;
189
 
15461 efrain 190
 
191
                    case CalendarEvent::TYPE_RECRUITMENT_SELECTION_INTERVIEW :
192
 
193
                        $this->cache->setItem('ACTIVITY_CENTER_RELATIONAL', $relational);
194
 
195
                        $route =  'activities-center/recruitment-and-selection';
196
                        break;
197
 
15444 efrain 198
                    default :
199
                        $route = 'dashboard';
200
                        break;
201
 
202
                }
203
 
204
                return $this->redirect()->toRoute($route);
205
 
206
 
207
 
1 www 208
            } else {
209
                throw new \Exception($result->getMessages()[0]);
210
            }
211
        }
212
 
213
        return new JsonModel([
214
            'success' => false,
215
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
216
        ]);
217
    }
218
}