Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6749 | Rev 6866 | 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
 
6749 efrain 6
 
1 www 7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\Log\LoggerInterface;
10
use Laminas\View\Model\JsonModel;
11
use LeadersLinked\Model\UserType;
12
use LeadersLinked\Library\Functions;
13
use LeadersLinked\Mapper\CompanyMapper;
14
use LeadersLinked\Mapper\CompanyUserMapper;
15
use LeadersLinked\Model\CompanyUser;
3639 efrain 16
use LeadersLinked\Mapper\NetworkMapper;
4398 efrain 17
use LeadersLinked\Model\CalendarEvent;
4656 efrain 18
use LeadersLinked\Mapper\PerformanceEvaluationTestMapper;
5050 efrain 19
use LeadersLinked\Mapper\RecruitmentSelectionInterviewMapper;
6849 efrain 20
;
6749 efrain 21
use LeadersLinked\Mapper\UserMapper;
1 www 22
 
23
 
24
class BackendController extends AbstractActionController
25
{
26
    /**
27
     *
28
     * @var AdapterInterface
29
     */
30
    private $adapter;
6849 efrain 31
 
1 www 32
 
33
    /**
34
     *
35
     * @var  LoggerInterface
36
     */
37
    private $logger;
38
 
39
    /**
40
     *
41
     * @var array
42
     */
43
    private $config;
44
 
6849 efrain 45
 
1 www 46
    /**
47
     *
48
     * @param AdapterInterface $adapter
49
     * @param LoggerInterface $logger
50
     * @param array $config
51
     */
6849 efrain 52
    public function __construct($adapter, $logger, $config)
1 www 53
    {
54
        $this->adapter      = $adapter;
55
        $this->logger       = $logger;
56
        $this->config       = $config;
57
    }
58
 
59
    public function signinAdminAction()
60
    {
61
 
62
        $request = $this->getRequest();
63
        if($request->isGet()) {
64
            $currentUserPlugin = $this->plugin('currentUserPlugin');
65
            $currentUser = $currentUserPlugin->getUser();
66
 
3639 efrain 67
            $networkMapper = NetworkMapper::getInstance($this->adapter);
68
            $network = $networkMapper->fetchOne($currentUser->network_id);
1 www 69
 
3639 efrain 70
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
71
            if($sandbox) {
72
                $salt = $this->config['leaderslinked.backend.sandbox_salt'];
73
            } else {
74
                $salt = $this->config['leaderslinked.backend.production_salt'];
75
            }
76
 
77
 
78
 
1 www 79
            if($currentUser && $currentUser->usertype_id == UserType::ADMIN) {
80
 
81
 
82
                if(!$currentUser->one_time_password) {
83
                    $one_time_password = Functions::generatePassword(25);
84
 
85
                    $currentUser->one_time_password = $one_time_password;
86
 
87
                    $userMapper = UserMapper::getInstance($this->adapter);
88
                    $userMapper->updateOneTimePassword($currentUser, $one_time_password);
89
                }
90
 
3639 efrain 91
 
1 www 92
 
93
 
94
                $rand = 1000 + mt_rand(1, 999);
95
                $timestamp = time();
96
                $password = md5($currentUser->one_time_password . '-' . $rand . '-' . $timestamp . '-' . $salt);
97
 
98
                $params = [
99
                    'user_uuid' => $currentUser->uuid,
100
                    'password' => $password,
101
                    'rand' => $rand,
102
                    'time' => $timestamp,
103
                ];
104
 
3639 efrain 105
                $link_admin = 'https://'. $network->admin_hostname . '/signin-admin' . '?' . http_build_query($params);
1 www 106
            } else {
107
                $link_admin = '';
108
            }
109
 
110
            $data = [
111
                'success' => true,
112
                'data' => $link_admin
113
            ];
114
 
115
            return new JsonModel($data);
116
 
117
        } else {
118
            $data = [
119
                'success' => false,
120
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
121
            ];
122
 
123
            return new JsonModel($data);
124
        }
125
 
126
        return new JsonModel($data);
127
 
128
 
129
    }
130
 
131
    public function signinCompanyAction()
132
    {
133
 
134
        $request = $this->getRequest();
135
        if($request->isGet()) {
136
 
137
 
138
            $currentUserPlugin = $this->plugin('currentUserPlugin');
139
            $currentUser = $currentUserPlugin->getUser();
3639 efrain 140
 
1 www 141
 
142
            $id = $this->params()->fromRoute('id');
4398 efrain 143
            $type = $this->params()->fromRoute('type');
144
            $relational = $this->params()->fromRoute('relational');
145
 
146
 
147
 
1 www 148
            $companyMapper = CompanyMapper::getInstance($this->adapter);
149
            $company = $companyMapper->fetchOneByUuid($id);
150
 
151
            $link_admin = '';
152
 
153
            if($company) {
154
 
3639 efrain 155
                $networkMapper = NetworkMapper::getInstance($this->adapter);
156
                $network = $networkMapper->fetchOne($currentUser->network_id);
157
 
1 www 158
                $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
159
                $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);
160
 
161
                if($companyUser && $companyUser->status == CompanyUser::STATUS_ACCEPTED && $companyUser->backend == CompanyUser::BACKEND_YES ) {
162
                    if(!$currentUser->one_time_password) {
163
                        $one_time_password = Functions::generatePassword(25);
164
 
165
                        $currentUser->one_time_password = $one_time_password;
166
 
167
                        $userMapper = UserMapper::getInstance($this->adapter);
168
                        $userMapper->updateOneTimePassword($currentUser, $one_time_password);
169
                    }
170
 
171
 
172
                    $sandbox = $this->config['leaderslinked.runmode.sandbox'];
173
                    if($sandbox) {
174
                        $salt = $this->config['leaderslinked.backend.sandbox_salt'];
175
                    } else {
176
                        $salt = $this->config['leaderslinked.backend.production_salt'];
177
                    }
4398 efrain 178
 
179
                    if($relational && $type) {
180
                        switch($type)
181
                        {
5050 efrain 182
                            case CalendarEvent::TYPE_RECRUITMENT_SELECTION_INTERVIEW :
183
                                $recruitmentSelectionInterviewMapper = RecruitmentSelectionInterviewMapper::getInstance($this->adapter);
184
                                $recruitmentSelectionInterview =  $recruitmentSelectionInterviewMapper->fetchOneByUuid($relational);
185
                                if( $recruitmentSelectionInterview) {
186
 
187
 
188
                                    if( $recruitmentSelectionInterview->interviewer_id != $currentUser->id) {
189
                                            $data = [
190
                                                'success' => false,
191
                                                'data' => 'ERROR_BACKEND_COMPANY_RELATIONAL_RECORD_UNAUTHORIZE'
192
                                            ];
193
 
194
                                            return new JsonModel($data);
195
                                        }
196
 
197
                                } else {
198
                                    $data = [
199
                                        'success' => false,
200
                                        'data' => 'ERROR_BACKEND_COMPANY_RELATIONAL_RECORD_NOT_FOUND'
201
                                    ];
202
 
203
                                    return new JsonModel($data);
204
                                }
205
 
206
                                break;
207
 
208
 
209
 
4398 efrain 210
                            case CalendarEvent::TYPE_PERFORMANCE_EVALUATION :
4656 efrain 211
                                $performanceEvaluationTestMapper = PerformanceEvaluationTestMapper::getInstance($this->adapter);
212
                                $performanceEvaluationTest = $performanceEvaluationTestMapper->fetchOneByUuid($relational);
213
                                if($performanceEvaluationTest) {
4398 efrain 214
 
215
 
4656 efrain 216
                                    if($performanceEvaluationTest->employee_id != $currentUser->id
217
                                        && $performanceEvaluationTest->supervisor_id != $currentUser->id) {
4398 efrain 218
                                            $data = [
219
                                                'success' => false,
220
                                                'data' => 'ERROR_BACKEND_COMPANY_RELATIONAL_RECORD_UNAUTHORIZE'
221
                                            ];
222
 
223
                                            return new JsonModel($data);
224
                                    }
225
 
226
                                } else {
227
                                    $data = [
228
                                        'success' => false,
229
                                        'data' => 'ERROR_BACKEND_COMPANY_RELATIONAL_RECORD_NOT_FOUND'
230
                                    ];
231
 
232
                                    return new JsonModel($data);
233
                                }
234
 
235
                                break;
236
 
237
                            default :
238
                                $data = [
239
                                    'success' => false,
240
                                    'data' => 'ERROR_BACKEND_COMPANY_RELATIONAL_TYPE_NOT_FOUND'
241
                                ];
242
 
243
                                return new JsonModel($data);
244
 
245
 
246
                        }
247
                    }
1 www 248
 
249
 
3639 efrain 250
                    $timestamp = date('Y-m-d\TH:i:s');
251
                    $rand = 1000 + rand(1, 8999);
252
 
253
 
254
 
1 www 255
                    $rand = 1000 + mt_rand(1, 999);
256
                    $timestamp = time();
257
                    $password = md5($currentUser->one_time_password . '-' . $rand . '-' . $timestamp . '-' . $salt);
258
 
3639 efrain 259
                    $params = [
260
                        'user_uuid' => $currentUser->uuid,
261
                        'password' => $password,
262
                        'rand' => $rand,
263
                        'time' => $timestamp,
264
                        'company_uuid' => $company->uuid
4398 efrain 265
 
3639 efrain 266
                    ];
1 www 267
 
4398 efrain 268
                    if($relational && $type) {
269
                        $params['relational'] = $relational;
270
                        $params['type'] = $type;
271
                    }
272
 
3639 efrain 273
                    $link_admin = 'https://'. $network->admin_hostname . '/signin-company' . '?' . http_build_query($params);
274
               }
1 www 275
 
276
 
277
 
278
            }
279
 
280
 
281
 
282
            $data = [
283
                'success' => true,
284
                'data' => $link_admin
285
            ];
286
 
287
            return new JsonModel($data);
288
 
289
        } else {
290
            $data = [
291
                'success' => false,
292
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
293
            ];
294
 
295
            return new JsonModel($data);
296
        }
297
 
298
        return new JsonModel($data);
299
 
300
 
301
    }
302
 
303
 
304
}