PluginProbe
Content Control – The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks & More / 2.0.2
Content Control – The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks & More v2.0.2
trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.10 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 47 releases
content-control / vendor-prefixed / trustedlogin / client / src / Admin.php

Admin.php in Content Control – The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks & More 2.0.2, at vendor-prefixed/trustedlogin/client/src/Admin.php

238 lines 9.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class Admin
4 *
5 * @package ContentControl\Vendor\TrustedLogin\Client
6 *
7 * @copyright 2021 Katz Web Services, Inc.
8 *
9 * @license GPL-2.0-or-later
10 * Modified by code-atlantic on 18-September-2023 using Strauss.
11 * @see https://github.com/BrianHenryIE/strauss
12 */
13
14 namespace ContentControl\Vendor\TrustedLogin;
15
16 // Exit if accessed directly
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit;
19 }
20
21 use \WP_User;
22 use \WP_Admin_Bar;
23
24 final class Admin {
25
26 /**
27 * URL pointing to the "About TrustedLogin" page, shown below the Grant Access dialog
28 */
29 const ABOUT_TL_URL = 'https://www.trustedlogin.com/about/easy-and-safe/';
30
31 const ABOUT_LIVE_ACCESS_URL = 'https://www.trustedlogin.com/about/live-access/';
32
33 /**
34 * @var Config
35 */
36 private $config;
37
38 /**
39 * @var SupportUser $support_user
40 */
41 private $support_user;
42
43 /**
44 * @var Form $form
45 */
46 private $form;
47
48 /**
49 * Admin constructor.
50 *
51 * @param Config $config
52 */
53 public function __construct( Config $config, Form $form, SupportUser $support_user ) {
54 $this->config = $config;
55 $this->form = $form;
56 $this->support_user = $support_user;
57 }
58
59 public function init() {
60 add_action( 'trustedlogin/' . $this->config->ns() . '/button',
61 array(
62 $this->form,
63 'generate_button'
64 ), 10, 2
65 );
66 add_action( 'trustedlogin/' . $this->config->ns() . '/users_table', array(
67 $this->form,
68 'output_support_users'
69 ), 20 );
70 add_action( 'trustedlogin/' . $this->config->ns() . '/auth_screen', array(
71 $this->form, 'print_auth_screen' ), 20
72 );
73 add_action( 'login_form_trustedlogin', array(
74 $this->form, 'maybe_print_request_screen' ), 20
75 );
76 add_filter( 'user_row_actions', array(
77 $this, 'user_row_action_revoke' ),
78 10, 2 );
79 add_action( 'admin_bar_menu', array(
80 $this, 'admin_bar_add_toolbar_items' ),
81 100 );
82
83 if ( $this->config->get_setting( 'menu' ) ) {
84 $menu_priority = $this->config->get_setting( 'menu/priority', 100 );
85 add_action( 'admin_menu', array(
86 $this, 'admin_menu_auth_link_page'
87 ), $menu_priority );
88 }
89
90 if ( $this->config->get_setting( 'register_assets', true ) ) {
91 add_action( 'admin_enqueue_scripts', array(
92 $this->form, 'register_assets'
93 ) );
94 add_action( 'login_enqueue_scripts',array(
95 $this->form, 'register_assets'
96 ) );
97 }
98
99 add_action( 'trustedlogin/' . $this->config->ns() . '/admin/access_revoked', array(
100 $this, 'admin_notices' )
101 );
102 }
103
104 /**
105 * Filter: Update the actions on the users.php list for our support users.
106 *
107 * @since 1.0.0
108 *
109 * @param array $actions
110 * @param WP_User $user_object
111 *
112 * @return array
113 */
114 public function user_row_action_revoke( $actions, $user_object ) {
115
116 if ( ! current_user_can( $this->support_user->role->get_name() ) && ! current_user_can( 'delete_users' ) ) {
117 return $actions;
118 }
119
120 $revoke_url = $this->support_user->get_revoke_url( $user_object );
121
122 if ( ! $revoke_url ) {
123 return $actions;
124 }
125
126 return array(
127 'revoke' => "<a class='trustedlogin tl-revoke submitdelete' href='" . esc_url( $revoke_url ) . "'>" . esc_html__( 'Revoke Access', 'trustedlogin' ) . '</a>',
128 );
129 }
130
131
132 /**
133 * Adds a "Revoke TrustedLogin" menu item to the admin toolbar
134 *
135 * @param WP_Admin_Bar $admin_bar
136 *
137 * @return void
138 */
139 public function admin_bar_add_toolbar_items( $admin_bar ) {
140
141 if ( ! current_user_can( $this->support_user->role->get_name() ) ) {
142 return;
143 }
144
145 if ( ! $admin_bar instanceof WP_Admin_Bar ) {
146 return;
147 }
148
149 $is_user_active = $this->support_user->is_active();
150
151 if ( ! $is_user_active ) {
152 return;
153 }
154
155 $icon = '<span style="
156 height: 32px;
157 width: 23px;
158 margin: 0 1px;
159 display: inline-block;
160 vertical-align: top;
161 background: url(\'data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNTAgMjUwIiB2aWV3Qm94PSIwIDAgMjUwIDI1MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtLTQ0NC42IDE0LjdjLTI2LjUgMC00OC4xIDIxLjYtNDguMSA0OC4xdjM5LjhoMjAuNnYtMzkuOGMwLTE1LjIgMTIuMy0yNy41IDI3LjUtMjcuNSAxNS4xIDAgMjcuNSAxMi4zIDI3LjUgMjcuNXYzOS44aDIwLjZ2LTM5LjhjMC0yNi42LTIxLjYtNDguMS00OC4xLTQ4LjF6IiBmaWxsPSIjMTA5OWQ2Ii8+PHBhdGggZD0ibS00NDQuNiA5MGMtMzguNSAwLTY5LjcgNC44LTY5LjcgMTAuOHY3OS44YzAgMzguNSA0Ny41IDU0LjggNjkuNyA1NC44czY5LjctMTYuMyA2OS43LTU0Ljh2LTc5LjhjLS4xLTYtMzEuMy0xMC44LTY5LjctMTAuOHoiIGZpbGw9IiMxYjJiNTkiLz48cGF0aCBkPSJtLTQ0NC42IDExMC4yYy0yMyAwLTQyLjUgMTUuMy00OC45IDM2LjJoMTQuOGM1LjgtMTMuMSAxOC45LTIyLjMgMzQuMS0yMi4zIDIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4ycy0xNi43IDM3LjItMzcuMiAzNy4yYy0xNS4yIDAtMjguMy05LjItMzQuMS0yMi4zaC0xNC44YzYuNCAyMC45IDI1LjkgMzYuMiA0OC45IDM2LjIgMjguMiAwIDUxLjEtMjIuOSA1MS4xLTUxLjEtLjEtMjguMi0yMy01MS4xLTUxLjEtNTEuMXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtLTQyNSAxNTktMjguMy0xNi40Yy0yLjItMS4zLTQtLjItNCAyLjN2OS44aC01Ni45djEzaDU2Ljl2OS44YzAgMi41IDEuOCAzLjYgNCAyLjNsMjguMy0xNi40YzIuMi0xLjEgMi4yLTMuMSAwLTQuNHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtMTI1IDIuMWMtMjkuNSAwLTUzLjYgMjQtNTMuNiA1My42djQ0LjRoMjN2LTQ0LjRjMC0xNi45IDEzLjctMzAuNiAzMC42LTMwLjZzMzAuNiAxMy43IDMwLjYgMzAuNnY0NC40aDIzdi00NC40YzAtMjkuNS0yNC4xLTUzLjYtNTMuNi01My42eiIgZmlsbD0iIzEwOTlkNiIvPjxwYXRoIGQ9Im0xMjUgODZjLTQyLjggMC03Ny42IDUuNC03Ny42IDEydjg4LjhjMCA0Mi44IDUyLjkgNjEgNzcuNiA2MXM3Ny42LTE4LjIgNzcuNi02MXYtODguOGMwLTYuNi0zNC44LTEyLTc3LjYtMTJ6IiBmaWxsPSIjMWIyYjU5Ii8+PHBhdGggZD0ibTEyNSAxMDguNWMtMjUuNiAwLTQ3LjMgMTctNTQuNCA0MC4zaDE2LjRjNi40LTE0LjYgMjEtMjQuOSAzOC0yNC45IDIyLjggMCA0MS40IDE4LjYgNDEuNCA0MS40cy0xOC42IDQxLjQtNDEuNCA0MS40Yy0xNyAwLTMxLjYtMTAuMi0zOC0yNC45aC0xNi40YzcuMSAyMy4zIDI4LjggNDAuMyA1NC40IDQwLjMgMzEuNCAwIDU2LjktMjUuNSA1Ni45LTU2LjkgMC0zMS4xLTI1LjUtNTYuNy01Ni45LTU2Ljd6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0ibTE0Ni44IDE2Mi45LTMxLjYtMTguMmMtMi40LTEuNC00LjQtLjMtNC40IDIuNnYxMWgtNjMuNHYxNC41aDYzLjR2MTFjMCAyLjggMiA0IDQuNCAyLjZsMzEuNi0xOC4yYzIuNS0xLjYgMi41LTMuOSAwLTUuM3oiIGZpbGw9IiNmZmYiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjUxLjEwMjkgMzA5Ljk2MDMpIj48dHNwYW4gZmlsbD0iIzFiMmI1OSIgZm9udC1mYW1pbHk9Ik11c2VvU2Fucy05MDAiIGZvbnQtc2l6ZT0iNTIuODQ0NyIgeD0iMCIgeT0iMCI+VHJ1c3RlPC90c3Bhbj48dHNwYW4gZmlsbD0iIzFiMmI1OSIgZm9udC1mYW1pbHk9Ik11c2VvU2Fucy05MDAiIGZvbnQtc2l6ZT0iNTIuODQ0NyIgbGV0dGVyLXNwYWNpbmc9IjMiIHg9IjIwNS43IiB5PSIwIj5kPC90c3Bhbj48dHNwYW4gZmlsbD0iIzEwOTlkNiIgZm9udC1mYW1pbHk9Ik11c2VvU2Fucy01MDAiIGZvbnQtc2l6ZT0iNTIuODQ0NyIgbGV0dGVyLXNwYWNpbmc9Ii0zIiB4PSIyNDguOCIgeT0iMCI+TDwvdHNwYW4+PHRzcGFuIGZpbGw9IiMxMDk5ZDYiIGZvbnQtZmFtaWx5PSJNdXNlb1NhbnMtNTAwIiBmb250LXNpemU9IjUyLjg0NDciIHg9IjI3My40IiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gZmlsbD0iIzEwOTlkNiIgZm9udC1mYW1pbHk9Ik11c2VvU2Fucy01MDAiIGZvbnQtc2l6ZT0iNTIuODQ0NyIgeD0iMzE2LjMiIHk9IjAiPmdpbjwvdHNwYW4+PC90ZXh0PjxwYXRoIGQ9Im0tNTQwLjcgNDcyLjZjLTI2LjUgMC00OC4xIDIxLjYtNDguMSA0OC4xdjM5LjhoMjAuNnYtMzkuOGMwLTE1LjIgMTIuMy0yNy41IDI3LjUtMjcuNSAxNS4xIDAgMjcuNSAxMi4zIDI3LjUgMjcuNXYzOS44aDIwLjZ2LTM5LjhjMC0yNi41LTIxLjYtNDguMS00OC4xLTQ4LjF6IiBmaWxsPSIjMTA5OWQ2Ii8+PHBhdGggZD0ibS01NDAuNyA1NDcuOWMtMzguNSAwLTY5LjcgNC44LTY5LjcgMTAuOHY3OS44YzAgMzguNSA0Ny41IDU0LjggNjkuNyA1NC44czY5LjctMTYuMyA2OS43LTU0Ljh2LTc5LjhjLS4xLTYtMzEuMy0xMC44LTY5LjctMTAuOHoiIGZpbGw9IiMxYjJiNTkiLz48cGF0aCBkPSJtLTU0MC43IDU2OC4xYy0yMyAwLTQyLjUgMTUuMy00OC45IDM2LjJoMTQuOGM1LjgtMTMuMSAxOC45LTIyLjMgMzQuMS0yMi4zIDIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4ycy0xNi43IDM3LjItMzcuMiAzNy4yYy0xNS4yIDAtMjguMy05LjItMzQuMS0yMi4zaC0xNC44YzYuNCAyMC45IDI1LjkgMzYuMiA0OC45IDM2LjIgMjguMiAwIDUxLjEtMjIuOSA1MS4xLTUxLjEtLjEtMjguMi0yMy01MS4xLTUxLjEtNTEuMXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtLTUyMS4xIDYxNi45LTI4LjMtMTYuNGMtMi4yLTEuMy00LS4yLTQgMi4zdjkuOGgtNTYuOXYxM2g1Ni45djkuOGMwIDIuNSAxLjggMy42IDQgMi4zbDI4LjMtMTYuNGMyLjItMS4xIDIuMi0zLjEgMC00LjR6IiBmaWxsPSIjZmZmIi8+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTQyNi41OTQ1IDY0OC43NTIxKSI+PHRzcGFuIGZpbGw9IiMxYjJiNTkiIGZvbnQtZmFtaWx5PSJNdXNlb1NhbnMtOTAwIiBmb250LXNpemU9IjEyMS4xNzA5IiBsZXR0ZXItc3BhY2luZz0iMSIgeD0iMCIgeT0iMCI+VFJVU1RFPC90c3Bhbj48dHNwYW4gZmlsbD0iIzFiMmI1OSIgZm9udC1mYW1pbHk9Ik11c2VvU2Fucy05MDAiIGZvbnQtc2l6ZT0iMTIxLjE3MDkiIGxldHRlci1zcGFjaW5nPSI2IiB4PSI0NzEuNyIgeT0iMCI+RDwvdHNwYW4+PHRzcGFuIGZpbGw9IiMxMDk5ZDYiIGZvbnQtZmFtaWx5PSJNdXNlb1NhbnMtNTAwIiBmb250LXNpemU9IjEyMS4xNzA5IiBsZXR0ZXItc3BhY2luZz0iLTIiIHg9IjU2OC4yIiB5PSIwIj5MPC90c3Bhbj48dHNwYW4gZmlsbD0iIzEwOTlkNiIgZm9udC1mYW1pbHk9Ik11c2VvU2Fucy01MDAiIGZvbnQtc2l6ZT0iMTIxLjE3MDkiIGxldHRlci1zcGFjaW5nPSIxIiB4PSI2MjkuNiIgeT0iMCI+T0dJTjwvdHNwYW4+PC90ZXh0Pjwvc3ZnPg==\') left center no-repeat;
162 background-size: 22px 23px;
163 "></span>';
164
165 $admin_bar->add_menu( array(
166 'id' => 'tl-' . $this->config->ns() . '-revoke',
167 'title' => $icon . esc_html__( 'Revoke Access', 'trustedlogin' ),
168 'href' => $this->support_user->get_revoke_url( 'all' ),
169 'parent' => 'top-secondary',
170 'meta' => array(
171 'class' => 'tl-destroy-session',
172 'title' => esc_html__( 'You are logged in as a support user. Click to permanently revoke access.', 'trustedlogin' ),
173 ),
174 ) );
175 }
176
177 /**
178 * Generates the auth link page
179 *
180 * This simulates the addition of an admin submenu item with null as the menu location
181 *
182 * @since 1.0.0
183 *
184 * @return void
185 */
186 public function admin_menu_auth_link_page() {
187
188 $parent_slug = $this->config->get_setting( 'menu/slug', null );
189
190 // When false, there will be no menus added.
191 if ( false === $parent_slug ) {
192 return;
193 }
194
195 $ns = $this->config->ns();
196
197 $menu_slug = apply_filters( 'trustedlogin/' . $this->config->ns() . '/admin/menu/menu_slug', 'grant-' . $ns . '-access' );
198
199 $menu_title = $this->config->get_setting( 'menu/title', esc_html__( 'Grant Support Access', 'trustedlogin' ) );
200
201 // If empty (null or empty string), add top-level menu
202 if ( empty( $parent_slug ) ) {
203
204 add_menu_page(
205 $menu_title,
206 $menu_title,
207 'create_users',
208 $menu_slug,
209 array( $this->form, 'print_auth_screen' ),
210 $this->config->get_setting( 'menu/icon_url', '' ),
211 $this->config->get_setting( 'menu/position', null )
212 );
213
214 return;
215 }
216
217 add_submenu_page(
218 $parent_slug,
219 $menu_title,
220 $menu_title,
221 'create_users',
222 $menu_slug,
223 array( $this->form, 'print_auth_screen' ),
224 $this->config->get_setting( 'menu/position', null )
225 );
226 }
227
228 /**
229 * Add admin_notices hooks
230 *
231 * @return void
232 */
233 public function admin_notices() {
234 add_action( 'admin_notices', array( $this->form, 'admin_notice_revoked' ) );
235 }
236
237 }
238