PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.18
ووسلام – همگام سازی ووکامرس و باسلام v1.10.18
1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 1.8.7 1.8.4 All 51 releases
sync-basalam / includes / Utilities / TicketAccessData.php

TicketAccessData.php in ووسلام – همگام سازی ووکامرس و باسلام 1.10.18, at includes/Utilities/TicketAccessData.php

91 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SyncBasalam\Utilities;
4
5 defined('ABSPATH') || exit;
6
7 /**
8 * Builds the dedicated site-access API payload without modifying ticket prose.
9 * Passwords are never written to options/logs and ordinary spaces are kept.
10 */
11 class TicketAccessData
12 {
13 public static function fromRequest(array $request): array
14 {
15 $siteDomain = defined('SYNC_BASALAM_SITE_ACCESS_DOMAIN')
16 ? (string) constant('SYNC_BASALAM_SITE_ACCESS_DOMAIN')
17 : get_site_url();
18 $payload = ['domain' => untrailingslashit($siteDomain)];
19
20 $wordpress = self::section($request, [
21 'login_url' => 'dashboard_login_url',
22 'username' => 'dashboard_username',
23 'password' => 'dashboard_password',
24 ], 'پیشخوان وردپرس');
25
26 $hostPanel = self::section($request, [
27 'login_url' => 'host_panel_login_url',
28 'username' => 'host_panel_username',
29 'password' => 'host_panel_password',
30 ], 'کنترل پنل هاست');
31
32 if ($wordpress !== null) $payload['wordpress'] = $wordpress;
33 if ($hostPanel !== null) $payload['host_panel'] = $hostPanel;
34
35 return count($payload) > 1 ? $payload : [];
36 }
37
38 private static function section(array $request, array $fields, string $label): ?array
39 {
40 $rawLoginUrl = isset($request[$fields['login_url']])
41 ? trim((string) wp_unslash($request[$fields['login_url']]))
42 : '';
43 $loginUrl = $rawLoginUrl === '' ? null : esc_url_raw($rawLoginUrl);
44 if ($rawLoginUrl !== '' && $loginUrl === '') {
45 throw new \InvalidArgumentException('آدرس ورود ' . $label . ' �
46 عتبر نیست.');
47 }
48
49 $username = isset($request[$fields['username']])
50 ? trim(sanitize_text_field(wp_unslash($request[$fields['username']])))
51 : '';
52 $password = isset($request[$fields['password']])
53 ? self::password($request[$fields['password']])
54 : '';
55
56 $hasAnyValue = $rawLoginUrl !== '' || $username !== '' || $password !== '';
57 if (!$hasAnyValue) return null;
58
59 if ($username === '' || $password === '') {
60 throw new \InvalidArgumentException(
61 'برای ' . $label . ' نا�
62 کاربری و ر�
63 ز عبور را کا�
64 ل وارد کنید.'
65 );
66 }
67
68 return [
69 'login_url' => $loginUrl,
70 'username' => $username,
71 'password' => $password,
72 ];
73 }
74
75 private static function password($value): string
76 {
77 $password = wp_check_invalid_utf8(wp_unslash((string) $value));
78 if (mb_strlen($password) > 1024) {
79 throw new \InvalidArgumentException('ر�
80 ز عبور طولانی‌تر از حد �
81 جاز است.');
82 }
83 if (preg_match('/[\x00-\x1F\x7F]/u', $password)) {
84 throw new \InvalidArgumentException('ر�
85 ز عبور دارای نویسه کنترلی نا�
86 عتبر است.');
87 }
88 return $password;
89 }
90 }
91