PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 3.3.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v3.3.2
4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Frontend / LoginAfterRestore.php
wp-staging / Frontend Last commit date
views 2 years ago Frontend.php 2 years ago FrontendServiceProvider.php 2 years ago LoginAfterRestore.php 2 years ago LoginForm.php 2 years ago LoginNotice.php 5 years ago
LoginAfterRestore.php
101 lines
1 <?php
2
3 namespace WPStaging\Frontend;
4
5 use WPStaging\Core\WPStaging;
6 use WPStaging\Framework\Facades\Sanitize;
7 use WPStaging\Framework\Security\AccessToken;
8 use WPStaging\Framework\SiteInfo;
9
10 class LoginAfterRestore
11 {
12 /**
13 * @return void
14 * @see \WPStaging\Frontend\FrontendServiceProvider::registerLoginAfterRestore
15 */
16 public function showMessage()
17 {
18 // Early bail: Not after Restore
19 if (!isset($_GET['wpstgAfterRestore']) || !Sanitize::sanitizeBool($_GET['wpstgAfterRestore'])) {
20 return;
21 }
22
23 // Early bail: No access token
24 if (!isset($_GET['accessToken'])) {
25 return;
26 }
27
28 // Late instantiation, since this runs on the FE on every request
29 /** @var AccessToken $auth */
30 $auth = WPStaging::make(AccessToken::class);
31
32 // Early bail: Invalid access token
33 if (!$auth->isValidToken($_GET['accessToken'])) {
34 return;
35 }
36
37 // Used by loginAfterRestore
38 $adminEmails = $this->getListOfAdminEmails();
39
40 $isRestoredFromWpCom = $this->getIsRestoredFromWpCom();
41 $resetPasswordArticleLink = 'https://wp-staging.com/reset-your-wordpress-admin-password-manually/';
42
43 include __DIR__ . '/views/loginAfterRestore.php';
44 }
45
46 /**
47 * @return bool
48 */
49 protected function getIsRestoredFromWpCom(): bool
50 {
51 /** @var SiteInfo */
52 $siteInfo = WPStaging::make(SiteInfo::class);
53 // Should not be shown when restoring wp.com backup on wp.com site
54 if ($siteInfo->isHostedOnWordPressCom()) {
55 return false;
56 }
57
58 if (isset($_GET['wpstgIsBackupCreatedOnWordPressCom']) && Sanitize::sanitizeBool($_GET['wpstgIsBackupCreatedOnWordPressCom'])) {
59 return true;
60 }
61
62 return false;
63 }
64
65 /**
66 * @return string[] List of admin emails
67 */
68 private function getListOfAdminEmails()
69 {
70 $adminEmails = get_users([
71 'role' => 'administrator',
72 'fields' => [
73 'user_email',
74 ],
75 'number' => 10,
76 ]);
77
78 // Early bail: Nothing to show
79 if (!is_array($adminEmails) || empty($adminEmails)) {
80 return [];
81 }
82
83 $adminEmails = array_map(function ($stdClass) {
84 if (is_object($stdClass) && property_exists($stdClass, 'user_email')) {
85 return $stdClass->user_email;
86 }
87
88 return null;
89 }, $adminEmails);
90
91 $adminEmails = array_filter($adminEmails, 'is_email');
92
93 // Early bail: Nothing to show
94 if (empty($adminEmails)) {
95 return [];
96 }
97
98 return $adminEmails;
99 }
100 }
101