PluginProbe
WPIDE – File Manager & Code Editor / 3.5.9
WPIDE – File Manager & Code Editor v3.5.9
3.5.9 3.5.8 3.5.7 2.0.14 2.0.15 2.0.16 2.0.2 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.2 2.3 2.3.1 2.3.2 2.4.0 2.5 2.6 3.0 3.1 3.2 3.3 All 55 releases
wpide / App / Services / Auth / Adapters / WPAuth.php

WPAuth.php in WPIDE – File Manager & Code Editor 3.5.9, at App/Services/Auth/Adapters/WPAuth.php

104 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPIDE\App\Services\Auth\Adapters;
4
5 use WPIDE\App\Services\Auth\AuthInterface;
6 use WPIDE\App\Services\Auth\User;
7 use WPIDE\App\Services\Auth\UsersCollection;
8 use WPIDE\App\Services\Service;
9
10 /**
11 * @codeCoverageIgnore
12 */
13 class WPAuth implements Service, AuthInterface
14 {
15
16 protected $permissions = [];
17
18 protected $private_repos = false;
19
20 public function init(array $config = [])
21 {
22
23 $this->permissions = isset($config['permissions']) ? (array)$config['permissions'] : [];
24 $this->private_repos = isset($config['private_repos']) ? (bool)$config['private_repos'] : false;
25 }
26
27 public function user(): ?User
28 {
29 $wpuser = wp_get_current_user();
30
31 if ($wpuser->exists()) {
32 return $this->transformUser($wpuser);
33 }
34
35 return $this->getGuest();
36 }
37
38 /**
39 * @throws \Exception
40 */
41 public function transformUser($wpuser): User
42 {
43 $user = new User();
44 $user->setUsername($wpuser->data->user_login);
45 $user->setName($wpuser->data->display_name);
46 $user->setEmail($wpuser->user_email);
47 $user->setAvatar(get_avatar_url( $wpuser->user_email ));
48 $user->setRole('user');
49 $user->setPermissions($this->permissions);
50 $user->setHomedir('/');
51
52 // private repositories for each user?
53 if ($this->private_repos) {
54 $user->setHomedir('/'.$wpuser->data->user_login);
55 }
56
57 // ...but not for wp admins
58 if (in_array('administrator', (array)$wpuser->roles)) {
59 $user->setHomedir('/');
60 $user->setRole('admin');
61 }
62
63 return $user;
64 }
65
66 public function authenticate($username, $password): bool
67 {
68 $creds = [
69 'user_login' => $username,
70 'user_password' => $password,
71 'remember' => true
72 ];
73
74 $wpuser = wp_signon($creds, false);
75
76 if (!is_wp_error($wpuser)) {
77 wp_set_current_user($wpuser->data->ID);
78 $this->transformUser($wpuser);
79 return true;
80 }
81
82 return false;
83 }
84
85 public function forget()
86 {
87 wp_logout();
88 }
89
90 public function getGuest(): User
91 {
92 $guest = new User();
93
94 $guest->setUsername('guest');
95 $guest->setName('Guest');
96 $guest->setRole('guest');
97 $guest->setHomedir('/');
98 $guest->setPermissions([]);
99
100 return $guest;
101 }
102
103 }
104