1: | <?php
|
2: | namespace Opencart\Admin\Controller\User;
|
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | class User extends \Opencart\System\Engine\Controller {
|
9: | |
10: | |
11: | |
12: | |
13: |
|
14: | public function index(): void {
|
15: | $this->load->language('user/user');
|
16: |
|
17: | $this->document->setTitle($this->language->get('heading_title'));
|
18: |
|
19: | if (isset($this->request->get['filter_username'])) {
|
20: | $filter_username = (string)$this->request->get['filter_username'];
|
21: | } else {
|
22: | $filter_username = '';
|
23: | }
|
24: |
|
25: | if (isset($this->request->get['filter_name'])) {
|
26: | $filter_name = (string)$this->request->get['filter_name'];
|
27: | } else {
|
28: | $filter_name = '';
|
29: | }
|
30: |
|
31: | if (isset($this->request->get['filter_email'])) {
|
32: | $filter_email = (string)$this->request->get['filter_email'];
|
33: | } else {
|
34: | $filter_email = '';
|
35: | }
|
36: |
|
37: | if (isset($this->request->get['filter_user_group_id'])) {
|
38: | $filter_user_group_id = (int)$this->request->get['filter_user_group_id'];
|
39: | } else {
|
40: | $filter_user_group_id = '';
|
41: | }
|
42: |
|
43: | if (isset($this->request->get['filter_status'])) {
|
44: | $filter_status = (bool)$this->request->get['filter_status'];
|
45: | } else {
|
46: | $filter_status = '';
|
47: | }
|
48: |
|
49: | if (isset($this->request->get['filter_ip'])) {
|
50: | $filter_ip = (string)$this->request->get['filter_ip'];
|
51: | } else {
|
52: | $filter_ip = '';
|
53: | }
|
54: |
|
55: | $url = '';
|
56: |
|
57: | if (isset($this->request->get['filter_username'])) {
|
58: | $url .= '&filter_username=' . urlencode(html_entity_decode($this->request->get['filter_username'], ENT_QUOTES, 'UTF-8'));
|
59: | }
|
60: |
|
61: | if (isset($this->request->get['filter_name'])) {
|
62: | $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
|
63: | }
|
64: |
|
65: | if (isset($this->request->get['filter_email'])) {
|
66: | $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8'));
|
67: | }
|
68: |
|
69: | if (isset($this->request->get['filter_user_group_id'])) {
|
70: | $url .= '&filter_user_group_id=' . $this->request->get['filter_user_group_id'];
|
71: | }
|
72: |
|
73: | if (isset($this->request->get['filter_status'])) {
|
74: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
75: | }
|
76: |
|
77: | if (isset($this->request->get['filter_ip'])) {
|
78: | $url .= '&filter_ip=' . $this->request->get['filter_ip'];
|
79: | }
|
80: |
|
81: | if (isset($this->request->get['sort'])) {
|
82: | $url .= '&sort=' . $this->request->get['sort'];
|
83: | }
|
84: |
|
85: | if (isset($this->request->get['order'])) {
|
86: | $url .= '&order=' . $this->request->get['order'];
|
87: | }
|
88: |
|
89: | if (isset($this->request->get['page'])) {
|
90: | $url .= '&page=' . $this->request->get['page'];
|
91: | }
|
92: |
|
93: | $data['breadcrumbs'] = [];
|
94: |
|
95: | $data['breadcrumbs'][] = [
|
96: | 'text' => $this->language->get('text_home'),
|
97: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
98: | ];
|
99: |
|
100: | $data['breadcrumbs'][] = [
|
101: | 'text' => $this->language->get('heading_title'),
|
102: | 'href' => $this->url->link('user/user', 'user_token=' . $this->session->data['user_token'] . $url)
|
103: | ];
|
104: |
|
105: | $data['add'] = $this->url->link('user/user.form', 'user_token=' . $this->session->data['user_token'] . $url);
|
106: | $data['delete'] = $this->url->link('user/user.delete', 'user_token=' . $this->session->data['user_token']);
|
107: |
|
108: | $data['list'] = $this->getList();
|
109: |
|
110: | $this->load->model('user/user_group');
|
111: |
|
112: | $data['user_groups'] = $this->model_user_user_group->getUserGroups();
|
113: |
|
114: | $data['filter_username'] = $filter_name;
|
115: | $data['filter_name'] = $filter_name;
|
116: | $data['filter_email'] = $filter_email;
|
117: | $data['filter_user_group_id'] = $filter_user_group_id;
|
118: | $data['filter_status'] = $filter_status;
|
119: | $data['filter_ip'] = $filter_ip;
|
120: |
|
121: | $data['user_token'] = $this->session->data['user_token'];
|
122: |
|
123: | $data['header'] = $this->load->controller('common/header');
|
124: | $data['column_left'] = $this->load->controller('common/column_left');
|
125: | $data['footer'] = $this->load->controller('common/footer');
|
126: |
|
127: | $this->response->setOutput($this->load->view('user/user', $data));
|
128: | }
|
129: |
|
130: | |
131: | |
132: | |
133: | |
134: |
|
135: | public function list(): void {
|
136: | $this->load->language('user/user');
|
137: |
|
138: | $this->response->setOutput($this->getList());
|
139: | }
|
140: |
|
141: | |
142: | |
143: | |
144: | |
145: |
|
146: | protected function getList(): string {
|
147: | if (isset($this->request->get['filter_username'])) {
|
148: | $filter_username = $this->request->get['filter_username'];
|
149: | } else {
|
150: | $filter_username = '';
|
151: | }
|
152: |
|
153: | if (isset($this->request->get['filter_name'])) {
|
154: | $filter_name = $this->request->get['filter_name'];
|
155: | } else {
|
156: | $filter_name = '';
|
157: | }
|
158: |
|
159: | if (isset($this->request->get['filter_email'])) {
|
160: | $filter_email = $this->request->get['filter_email'];
|
161: | } else {
|
162: | $filter_email = '';
|
163: | }
|
164: |
|
165: | if (isset($this->request->get['filter_user_group_id'])) {
|
166: | $filter_user_group_id = (int)$this->request->get['filter_user_group_id'];
|
167: | } else {
|
168: | $filter_user_group_id = '';
|
169: | }
|
170: |
|
171: | if (isset($this->request->get['filter_status'])) {
|
172: | $filter_status = (bool)$this->request->get['filter_status'];
|
173: | } else {
|
174: | $filter_status = '';
|
175: | }
|
176: |
|
177: | if (isset($this->request->get['filter_ip'])) {
|
178: | $filter_ip = (string)$this->request->get['filter_ip'];
|
179: | } else {
|
180: | $filter_ip = '';
|
181: | }
|
182: |
|
183: | if (isset($this->request->get['sort'])) {
|
184: | $sort = (string)$this->request->get['sort'];
|
185: | } else {
|
186: | $sort = 'username';
|
187: | }
|
188: |
|
189: | if (isset($this->request->get['order'])) {
|
190: | $order = (string)$this->request->get['order'];
|
191: | } else {
|
192: | $order = 'ASC';
|
193: | }
|
194: |
|
195: | if (isset($this->request->get['page'])) {
|
196: | $page = (int)$this->request->get['page'];
|
197: | } else {
|
198: | $page = 1;
|
199: | }
|
200: |
|
201: | $url = '';
|
202: |
|
203: | if (isset($this->request->get['filter_username'])) {
|
204: | $url .= '&filter_username=' . urlencode(html_entity_decode($this->request->get['filter_username'], ENT_QUOTES, 'UTF-8'));
|
205: | }
|
206: |
|
207: | if (isset($this->request->get['filter_name'])) {
|
208: | $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
|
209: | }
|
210: |
|
211: | if (isset($this->request->get['filter_email'])) {
|
212: | $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8'));
|
213: | }
|
214: |
|
215: | if (isset($this->request->get['filter_user_group_id'])) {
|
216: | $url .= '&filter_user_group_id=' . $this->request->get['filter_user_group_id'];
|
217: | }
|
218: |
|
219: | if (isset($this->request->get['filter_status'])) {
|
220: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
221: | }
|
222: |
|
223: | if (isset($this->request->get['filter_ip'])) {
|
224: | $url .= '&filter_ip=' . $this->request->get['filter_ip'];
|
225: | }
|
226: |
|
227: | if (isset($this->request->get['sort'])) {
|
228: | $url .= '&sort=' . $this->request->get['sort'];
|
229: | }
|
230: |
|
231: | if (isset($this->request->get['order'])) {
|
232: | $url .= '&order=' . $this->request->get['order'];
|
233: | }
|
234: |
|
235: | if (isset($this->request->get['page'])) {
|
236: | $url .= '&page=' . $this->request->get['page'];
|
237: | }
|
238: |
|
239: | $data['action'] = $this->url->link('user/user.list', 'user_token=' . $this->session->data['user_token'] . $url);
|
240: |
|
241: | $data['users'] = [];
|
242: |
|
243: | $filter_data = [
|
244: | 'filter_username' => $filter_username,
|
245: | 'filter_name' => $filter_name,
|
246: | 'filter_email' => $filter_email,
|
247: | 'filter_user_group_id' => $filter_user_group_id,
|
248: | 'filter_status' => $filter_status,
|
249: | 'filter_ip' => $filter_ip,
|
250: | 'sort' => $sort,
|
251: | 'order' => $order,
|
252: | 'start' => ($page - 1) * $this->config->get('config_pagination_admin'),
|
253: | 'limit' => $this->config->get('config_pagination_admin')
|
254: | ];
|
255: |
|
256: | $this->load->model('user/user');
|
257: |
|
258: | $results = $this->model_user_user->getUsers($filter_data);
|
259: |
|
260: | foreach ($results as $result) {
|
261: | $data['users'][] = [
|
262: | 'user_id' => $result['user_id'],
|
263: | 'username' => $result['username'],
|
264: | 'name' => $result['name'],
|
265: | 'email' => $result['email'],
|
266: | 'user_group' => $result['user_group'],
|
267: | 'status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')),
|
268: | 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
|
269: | 'edit' => $this->url->link('user/user.form', 'user_token=' . $this->session->data['user_token'] . '&user_id=' . $result['user_id'] . $url)
|
270: | ];
|
271: | }
|
272: |
|
273: | $url = '';
|
274: |
|
275: | if (isset($this->request->get['filter_username'])) {
|
276: | $url .= '&filter_username=' . urlencode(html_entity_decode($this->request->get['filter_username'], ENT_QUOTES, 'UTF-8'));
|
277: | }
|
278: |
|
279: | if (isset($this->request->get['filter_name'])) {
|
280: | $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
|
281: | }
|
282: |
|
283: | if (isset($this->request->get['filter_email'])) {
|
284: | $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8'));
|
285: | }
|
286: |
|
287: | if (isset($this->request->get['filter_user_group_id'])) {
|
288: | $url .= '&filter_user_group_id=' . $this->request->get['filter_user_group_id'];
|
289: | }
|
290: |
|
291: | if (isset($this->request->get['filter_status'])) {
|
292: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
293: | }
|
294: |
|
295: | if (isset($this->request->get['filter_ip'])) {
|
296: | $url .= '&filter_ip=' . $this->request->get['filter_ip'];
|
297: | }
|
298: |
|
299: | if ($order == 'ASC') {
|
300: | $url .= '&order=DESC';
|
301: | } else {
|
302: | $url .= '&order=ASC';
|
303: | }
|
304: |
|
305: | $data['sort_username'] = $this->url->link('user/user.list', 'user_token=' . $this->session->data['user_token'] . '&sort=username' . $url);
|
306: | $data['sort_name'] = $this->url->link('user/user.list', 'user_token=' . $this->session->data['user_token'] . '&sort=name' . $url);
|
307: | $data['sort_email'] = $this->url->link('user/user.list', 'user_token=' . $this->session->data['user_token'] . '&sort=u.email' . $url);
|
308: | $data['sort_user_group'] = $this->url->link('user/user.list', 'user_token=' . $this->session->data['user_token'] . '&sort=user_group' . $url);
|
309: | $data['sort_status'] = $this->url->link('user/user.list', 'user_token=' . $this->session->data['user_token'] . '&sort=u.status' . $url);
|
310: | $data['sort_date_added'] = $this->url->link('user/user.list', 'user_token=' . $this->session->data['user_token'] . '&sort=u.date_added' . $url);
|
311: |
|
312: | $url = '';
|
313: |
|
314: | if (isset($this->request->get['filter_username'])) {
|
315: | $url .= '&filter_username=' . urlencode(html_entity_decode($this->request->get['filter_username'], ENT_QUOTES, 'UTF-8'));
|
316: | }
|
317: |
|
318: | if (isset($this->request->get['filter_name'])) {
|
319: | $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
|
320: | }
|
321: |
|
322: | if (isset($this->request->get['filter_email'])) {
|
323: | $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8'));
|
324: | }
|
325: |
|
326: | if (isset($this->request->get['filter_user_group_id'])) {
|
327: | $url .= '&filter_user_group_id=' . $this->request->get['filter_user_group_id'];
|
328: | }
|
329: |
|
330: | if (isset($this->request->get['filter_status'])) {
|
331: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
332: | }
|
333: |
|
334: | if (isset($this->request->get['filter_ip'])) {
|
335: | $url .= '&filter_ip=' . $this->request->get['filter_ip'];
|
336: | }
|
337: |
|
338: | if (isset($this->request->get['sort'])) {
|
339: | $url .= '&sort=' . $this->request->get['sort'];
|
340: | }
|
341: |
|
342: | if (isset($this->request->get['order'])) {
|
343: | $url .= '&order=' . $this->request->get['order'];
|
344: | }
|
345: |
|
346: | $user_total = $this->model_user_user->getTotalUsers();
|
347: |
|
348: | $data['pagination'] = $this->load->controller('common/pagination', [
|
349: | 'total' => $user_total,
|
350: | 'page' => $page,
|
351: | 'limit' => $this->config->get('config_pagination_admin'),
|
352: | 'url' => $this->url->link('user/user.list', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}')
|
353: | ]);
|
354: |
|
355: | $data['results'] = sprintf($this->language->get('text_pagination'), ($user_total) ? (($page - 1) * $this->config->get('config_pagination_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_pagination_admin')) > ($user_total - $this->config->get('config_pagination_admin'))) ? $user_total : ((($page - 1) * $this->config->get('config_pagination_admin')) + $this->config->get('config_pagination_admin')), $user_total, ceil($user_total / $this->config->get('config_pagination_admin')));
|
356: |
|
357: | $data['sort'] = $sort;
|
358: | $data['order'] = $order;
|
359: |
|
360: | return $this->load->view('user/user_list', $data);
|
361: | }
|
362: |
|
363: | |
364: | |
365: | |
366: | |
367: |
|
368: | public function form(): void {
|
369: | $this->load->language('user/user');
|
370: |
|
371: | $this->document->setTitle($this->language->get('heading_title'));
|
372: |
|
373: | $data['text_form'] = !isset($this->request->get['user_id']) ? $this->language->get('text_add') : $this->language->get('text_edit');
|
374: |
|
375: | $url = '';
|
376: |
|
377: | if (isset($this->request->get['filter_username'])) {
|
378: | $url .= '&filter_username=' . urlencode(html_entity_decode($this->request->get['filter_username'], ENT_QUOTES, 'UTF-8'));
|
379: | }
|
380: |
|
381: | if (isset($this->request->get['filter_name'])) {
|
382: | $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
|
383: | }
|
384: |
|
385: | if (isset($this->request->get['filter_email'])) {
|
386: | $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8'));
|
387: | }
|
388: |
|
389: | if (isset($this->request->get['filter_user_group_id'])) {
|
390: | $url .= '&filter_user_group_id=' . $this->request->get['filter_user_group_id'];
|
391: | }
|
392: |
|
393: | if (isset($this->request->get['filter_status'])) {
|
394: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
395: | }
|
396: |
|
397: | if (isset($this->request->get['filter_ip'])) {
|
398: | $url .= '&filter_ip=' . $this->request->get['filter_ip'];
|
399: | }
|
400: |
|
401: | if (isset($this->request->get['sort'])) {
|
402: | $url .= '&sort=' . $this->request->get['sort'];
|
403: | }
|
404: |
|
405: | if (isset($this->request->get['order'])) {
|
406: | $url .= '&order=' . $this->request->get['order'];
|
407: | }
|
408: |
|
409: | if (isset($this->request->get['page'])) {
|
410: | $url .= '&page=' . $this->request->get['page'];
|
411: | }
|
412: |
|
413: | $data['breadcrumbs'] = [];
|
414: |
|
415: | $data['breadcrumbs'][] = [
|
416: | 'text' => $this->language->get('text_home'),
|
417: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
418: | ];
|
419: |
|
420: | $data['breadcrumbs'][] = [
|
421: | 'text' => $this->language->get('heading_title'),
|
422: | 'href' => $this->url->link('user/user_permission', 'user_token=' . $this->session->data['user_token'] . $url)
|
423: | ];
|
424: |
|
425: | $data['save'] = $this->url->link('user/user.save', 'user_token=' . $this->session->data['user_token']);
|
426: | $data['back'] = $this->url->link('user/user', 'user_token=' . $this->session->data['user_token'] . $url);
|
427: |
|
428: | if (isset($this->request->get['user_id'])) {
|
429: | $this->load->model('user/user');
|
430: |
|
431: | $user_info = $this->model_user_user->getUser($this->request->get['user_id']);
|
432: | }
|
433: |
|
434: | if (isset($this->request->get['user_id'])) {
|
435: | $data['user_id'] = (int)$this->request->get['user_id'];
|
436: | } else {
|
437: | $data['user_id'] = 0;
|
438: | }
|
439: |
|
440: | if (!empty($user_info)) {
|
441: | $data['username'] = $user_info['username'];
|
442: | } else {
|
443: | $data['username'] = '';
|
444: | }
|
445: |
|
446: | $this->load->model('user/user_group');
|
447: |
|
448: | $data['user_groups'] = $this->model_user_user_group->getUserGroups();
|
449: |
|
450: | if (!empty($user_info)) {
|
451: | $data['user_group_id'] = $user_info['user_group_id'];
|
452: | } else {
|
453: | $data['user_group_id'] = 0;
|
454: | }
|
455: |
|
456: | if (!empty($user_info)) {
|
457: | $data['firstname'] = $user_info['firstname'];
|
458: | } else {
|
459: | $data['firstname'] = '';
|
460: | }
|
461: |
|
462: | if (!empty($user_info)) {
|
463: | $data['lastname'] = $user_info['lastname'];
|
464: | } else {
|
465: | $data['lastname'] = '';
|
466: | }
|
467: |
|
468: | if (!empty($user_info)) {
|
469: | $data['email'] = $user_info['email'];
|
470: | } else {
|
471: | $data['email'] = '';
|
472: | }
|
473: |
|
474: | if (!empty($user_info)) {
|
475: | $data['image'] = $user_info['image'];
|
476: | } else {
|
477: | $data['image'] = '';
|
478: | }
|
479: |
|
480: | $this->load->model('tool/image');
|
481: |
|
482: | $data['placeholder'] = $this->model_tool_image->resize('no_image.png', $this->config->get('config_image_default_width'), $this->config->get('config_image_default_height'));
|
483: |
|
484: | if ($data['image'] && is_file(DIR_IMAGE . html_entity_decode($data['image'], ENT_QUOTES, 'UTF-8'))) {
|
485: | $data['thumb'] = $this->model_tool_image->resize($data['image'], $this->config->get('config_image_default_width'), $this->config->get('config_image_default_height'));
|
486: | } else {
|
487: | $data['thumb'] = $data['placeholder'];
|
488: | }
|
489: |
|
490: | if (!empty($user_info)) {
|
491: | $data['status'] = $user_info['status'];
|
492: | } else {
|
493: | $data['status'] = 0;
|
494: | }
|
495: |
|
496: | $data['authorize'] = $this->getAuthorize();
|
497: | $data['login'] = $this->getLogin();
|
498: |
|
499: | $data['user_token'] = $this->session->data['user_token'];
|
500: |
|
501: | $data['header'] = $this->load->controller('common/header');
|
502: | $data['column_left'] = $this->load->controller('common/column_left');
|
503: | $data['footer'] = $this->load->controller('common/footer');
|
504: |
|
505: | $this->response->setOutput($this->load->view('user/user_form', $data));
|
506: | }
|
507: |
|
508: | |
509: | |
510: | |
511: | |
512: |
|
513: | public function save(): void {
|
514: | $this->load->language('user/user');
|
515: |
|
516: | $json = [];
|
517: |
|
518: | if (!$this->user->hasPermission('modify', 'user/user')) {
|
519: | $json['error']['warning'] = $this->language->get('error_permission');
|
520: | }
|
521: |
|
522: | if ((oc_strlen($this->request->post['username']) < 3) || (oc_strlen($this->request->post['username']) > 20)) {
|
523: | $json['error']['username'] = $this->language->get('error_username');
|
524: | }
|
525: |
|
526: | $this->load->model('user/user');
|
527: |
|
528: | $user_info = $this->model_user_user->getUserByUsername($this->request->post['username']);
|
529: |
|
530: | if (!$this->request->post['user_id']) {
|
531: | if ($user_info) {
|
532: | $json['error']['warning'] = $this->language->get('error_username_exists');
|
533: | }
|
534: | } else {
|
535: | if ($user_info && ($this->request->post['user_id'] != $user_info['user_id'])) {
|
536: | $json['error']['warning'] = $this->language->get('error_username_exists');
|
537: | }
|
538: | }
|
539: |
|
540: | if (!oc_validate_length($this->request->post['firstname'], 1, 32)) {
|
541: | $json['error']['firstname'] = $this->language->get('error_firstname');
|
542: | }
|
543: |
|
544: | if (!oc_validate_length($this->request->post['lastname'], 1, 32)) {
|
545: | $json['error']['lastname'] = $this->language->get('error_lastname');
|
546: | }
|
547: |
|
548: | if ((oc_strlen($this->request->post['email']) > 96) || !filter_var($this->request->post['email'], FILTER_VALIDATE_EMAIL)) {
|
549: | $json['error']['email'] = $this->language->get('error_email');
|
550: | }
|
551: |
|
552: | $user_info = $this->model_user_user->getUserByEmail($this->request->post['email']);
|
553: |
|
554: | if (!$this->request->post['user_id']) {
|
555: | if ($user_info) {
|
556: | $json['error']['warning'] = $this->language->get('error_email_exists');
|
557: | }
|
558: | } else {
|
559: | if ($user_info && ($this->request->post['user_id'] != $user_info['user_id'])) {
|
560: | $json['error']['warning'] = $this->language->get('error_email_exists');
|
561: | }
|
562: | }
|
563: |
|
564: | if ($this->request->post['password'] || (!isset($this->request->post['user_id']))) {
|
565: | if ((oc_strlen(html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8')) < 6) || (oc_strlen(html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8')) > 40)) {
|
566: | $json['error']['password'] = $this->language->get('error_password');
|
567: | }
|
568: |
|
569: | if ($this->request->post['password'] != $this->request->post['confirm']) {
|
570: | $json['error']['confirm'] = $this->language->get('error_confirm');
|
571: | }
|
572: | }
|
573: |
|
574: | if (!$json) {
|
575: | if (!$this->request->post['user_id']) {
|
576: | $json['user_id'] = $this->model_user_user->addUser($this->request->post);
|
577: | } else {
|
578: | $this->model_user_user->editUser($this->request->post['user_id'], $this->request->post);
|
579: | }
|
580: |
|
581: | $json['success'] = $this->language->get('text_success');
|
582: | }
|
583: |
|
584: | $this->response->addHeader('Content-Type: application/json');
|
585: | $this->response->setOutput(json_encode($json));
|
586: | }
|
587: |
|
588: | |
589: | |
590: | |
591: | |
592: |
|
593: | public function delete(): void {
|
594: | $this->load->language('user/user');
|
595: |
|
596: | $json = [];
|
597: |
|
598: | if (isset($this->request->post['selected'])) {
|
599: | $selected = $this->request->post['selected'];
|
600: | } else {
|
601: | $selected = [];
|
602: | }
|
603: |
|
604: | if (!$this->user->hasPermission('modify', 'user/user')) {
|
605: | $json['error'] = $this->language->get('error_permission');
|
606: | }
|
607: |
|
608: | foreach ($selected as $user_id) {
|
609: | if ($this->user->getId() == $user_id) {
|
610: | $json['error']['warning'] = $this->language->get('error_account');
|
611: | }
|
612: | }
|
613: |
|
614: | if (!$json) {
|
615: | $this->load->model('user/user');
|
616: |
|
617: | foreach ($selected as $user_id) {
|
618: | $this->model_user_user->deleteUser($user_id);
|
619: | }
|
620: |
|
621: | $json['success'] = $this->language->get('text_success');
|
622: | }
|
623: |
|
624: | $this->response->addHeader('Content-Type: application/json');
|
625: | $this->response->setOutput(json_encode($json));
|
626: | }
|
627: |
|
628: | |
629: | |
630: | |
631: | |
632: |
|
633: | public function authorize(): void {
|
634: | $this->load->language('user/user');
|
635: |
|
636: | $this->response->setOutput($this->getAuthorize());
|
637: | }
|
638: |
|
639: | |
640: | |
641: | |
642: | |
643: |
|
644: | public function getAuthorize(): string {
|
645: | if (isset($this->request->get['user_id'])) {
|
646: | $user_id = (int)$this->request->get['user_id'];
|
647: | } else {
|
648: | $user_id = 0;
|
649: | }
|
650: |
|
651: | if (isset($this->request->get['page']) && $this->request->get['route'] == 'user/user.login') {
|
652: | $page = (int)$this->request->get['page'];
|
653: | } else {
|
654: | $page = 1;
|
655: | }
|
656: |
|
657: | $limit = 10;
|
658: |
|
659: | $data['authorizes'] = [];
|
660: |
|
661: | $this->load->model('user/user');
|
662: |
|
663: | $results = $this->model_user_user->getAuthorizes($user_id, ($page - 1) * $limit, $limit);
|
664: |
|
665: | foreach ($results as $result) {
|
666: | $data['authorizes'][] = [
|
667: | 'token' => $result['token'],
|
668: | 'ip' => $result['ip'],
|
669: | 'user_agent' => $result['user_agent'],
|
670: | 'status' => $result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
|
671: | 'total' => $result['total'],
|
672: | 'date_added' => date($this->language->get('datetime_format'), strtotime($result['date_added'])),
|
673: | 'delete' => $this->url->link('user/user.deleteAuthorize', 'user_token=' . $this->session->data['user_token'] . '&user_authorize_id=' . $result['user_authorize_id'])
|
674: | ];
|
675: | }
|
676: |
|
677: | $authorize_total = $this->model_user_user->getTotalAuthorizes($user_id);
|
678: |
|
679: | $data['pagination'] = $this->load->controller('common/pagination', [
|
680: | 'total' => $authorize_total,
|
681: | 'page' => $page,
|
682: | 'limit' => $limit,
|
683: | 'url' => $this->url->link('user/user.authorize', 'user_token=' . $this->session->data['user_token'] . '&user_id=' . $user_id . '&page={page}')
|
684: | ]);
|
685: |
|
686: | $data['results'] = sprintf($this->language->get('text_pagination'), ($authorize_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($authorize_total - $limit)) ? $authorize_total : ((($page - 1) * $limit) + $limit), $authorize_total, ceil($authorize_total / $limit));
|
687: |
|
688: | return $this->load->view('user/user_authorize', $data);
|
689: | }
|
690: |
|
691: | |
692: | |
693: | |
694: | |
695: |
|
696: | public function deleteAuthorize(): void {
|
697: | $this->load->language('user/user');
|
698: |
|
699: | $json = [];
|
700: |
|
701: | if (isset($this->request->get['user_authorize_id'])) {
|
702: | $user_authorize_id = (int)$this->request->get['user_authorize_id'];
|
703: | } else {
|
704: | $user_authorize_id = 0;
|
705: | }
|
706: |
|
707: | if (isset($this->request->cookie['authorize'])) {
|
708: | $token = $this->request->cookie['authorize'];
|
709: | } else {
|
710: | $token = '';
|
711: | }
|
712: |
|
713: | if (!$this->user->hasPermission('modify', 'user/user')) {
|
714: | $json['error'] = $this->language->get('error_permission');
|
715: | }
|
716: |
|
717: | $this->load->model('user/user');
|
718: |
|
719: | $authorize_info = $this->model_user_user->getAuthorize($user_authorize_id);
|
720: |
|
721: | if (!$authorize_info) {
|
722: | $json['error'] = $this->language->get('error_authorize');
|
723: | }
|
724: |
|
725: | if (!$json) {
|
726: | $this->model_user_user->deleteAuthorize($authorize_info['user_id'], $user_authorize_id);
|
727: |
|
728: |
|
729: | if ($authorize_info['token'] == $token) {
|
730: | $this->session->data['success'] = $this->language->get('text_success');
|
731: |
|
732: | $json['redirect'] = $this->url->link('common/login', '', true);
|
733: | } else {
|
734: | $json['success'] = $this->language->get('text_success');
|
735: | }
|
736: | }
|
737: |
|
738: | $this->response->addHeader('Content-Type: application/json');
|
739: | $this->response->setOutput(json_encode($json));
|
740: | }
|
741: |
|
742: | |
743: | |
744: | |
745: | |
746: |
|
747: | public function login(): void {
|
748: | $this->load->language('user/user');
|
749: |
|
750: | $this->response->setOutput($this->getLogin());
|
751: | }
|
752: |
|
753: | |
754: | |
755: | |
756: | |
757: |
|
758: | public function getLogin(): string {
|
759: | if (isset($this->request->get['user_id'])) {
|
760: | $user_id = (int)$this->request->get['user_id'];
|
761: | } else {
|
762: | $user_id = 0;
|
763: | }
|
764: |
|
765: | if (isset($this->request->get['page']) && $this->request->get['route'] == 'user/user.login') {
|
766: | $page = (int)$this->request->get['page'];
|
767: | } else {
|
768: | $page = 1;
|
769: | }
|
770: |
|
771: | $limit = 10;
|
772: |
|
773: | $data['logins'] = [];
|
774: |
|
775: | $this->load->model('user/user');
|
776: |
|
777: | $results = $this->model_user_user->getLogins($user_id, ($page - 1) * $limit, $limit);
|
778: |
|
779: | foreach ($results as $result) {
|
780: | $data['logins'][] = [
|
781: | 'ip' => $result['ip'],
|
782: | 'user_agent' => $result['user_agent'],
|
783: | 'date_added' => date($this->language->get('datetime_format'), strtotime($result['date_added']))
|
784: | ];
|
785: | }
|
786: |
|
787: | $login_total = $this->model_user_user->getTotalLogins($user_id);
|
788: |
|
789: | $data['pagination'] = $this->load->controller('common/pagination', [
|
790: | 'total' => $login_total,
|
791: | 'page' => $page,
|
792: | 'limit' => $limit,
|
793: | 'url' => $this->url->link('user/user.login', 'user_token=' . $this->session->data['user_token'] . '&user_id=' . $user_id . '&page={page}')
|
794: | ]);
|
795: |
|
796: | $data['results'] = sprintf($this->language->get('text_pagination'), ($login_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($login_total - $limit)) ? $login_total : ((($page - 1) * $limit) + $limit), $login_total, ceil($login_total / $limit));
|
797: |
|
798: | return $this->load->view('user/user_login', $data);
|
799: | }
|
800: |
|
801: | |
802: | |
803: | |
804: | |
805: |
|
806: | public function autocomplete(): void {
|
807: | $json = [];
|
808: |
|
809: | if (isset($this->request->get['filter_username']) || isset($this->request->get['filter_name']) || isset($this->request->get['filter_email'])) {
|
810: | if (isset($this->request->get['filter_username'])) {
|
811: | $filter_username = $this->request->get['filter_username'];
|
812: | } else {
|
813: | $filter_username = '';
|
814: | }
|
815: |
|
816: | if (isset($this->request->get['filter_name'])) {
|
817: | $filter_name = $this->request->get['filter_name'];
|
818: | } else {
|
819: | $filter_name = '';
|
820: | }
|
821: |
|
822: | if (isset($this->request->get['filter_email'])) {
|
823: | $filter_email = $this->request->get['filter_email'];
|
824: | } else {
|
825: | $filter_email = '';
|
826: | }
|
827: |
|
828: | $filter_data = [
|
829: | 'filter_username' => $filter_username,
|
830: | 'filter_name' => $filter_name,
|
831: | 'filter_email' => $filter_email,
|
832: | 'start' => 0,
|
833: | 'limit' => 5
|
834: | ];
|
835: |
|
836: | $this->load->model('user/user');
|
837: |
|
838: | $results = $this->model_user_user->getUsers($filter_data);
|
839: |
|
840: | foreach ($results as $result) {
|
841: | $json[] = [
|
842: | 'user_id' => $result['user_id'],
|
843: | 'user_group_id' => $result['user_group_id'],
|
844: | 'username' => $result['username'],
|
845: | 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')),
|
846: | 'user_group' => $result['user_group'],
|
847: | 'firstname' => $result['firstname'],
|
848: | 'lastname' => $result['lastname'],
|
849: | 'email' => $result['email']
|
850: | ];
|
851: | }
|
852: | }
|
853: |
|
854: | $sort_order = [];
|
855: |
|
856: | foreach ($json as $key => $value) {
|
857: | $sort_order[$key] = $value['username'];
|
858: | }
|
859: |
|
860: | array_multisort($sort_order, SORT_ASC, $json);
|
861: |
|
862: | $this->response->addHeader('Content-Type: application/json');
|
863: | $this->response->setOutput(json_encode($json));
|
864: | }
|
865: | }
|
866: | |