PluginProbe
Loginizer / 1.8.1
Loginizer v1.8.1
2.1.0 2.0.9 2.0.8 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 All 74 releases
loginizer / main / settings / sso.php

sso.php in Loginizer 1.8.1, at main/settings/sso.php

271 lines 7.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if(!defined('ABSPATH')){
4 die('HACKING ATTEMPT!');
5 }
6
7 function loginizer_sso(){
8 global $loginizer, $error;
9
10 if(!current_user_can('manage_options')){
11 wp_die('Sorry, but you do not have permissions to change settings.');
12 }
13
14 if(empty($_POST['lz_generate_sso']) && empty($_POST['lz_delete_sso'])){
15 loginizer_sso_t();
16 return;
17 }
18
19 if(!defined('LOGINIZER_PREMIUM')){
20 $error[] = __('SSO is a Pro feature so it can not be used with the free version.', 'loginizer');
21 loginizer_sso_t();
22 return;
23 }
24
25 // Checking for form nonce
26 if(!wp_verify_nonce($_POST['security'], 'loginizer_nonce')){
27 $error[] = __('Security Check Failed!', 'loginizer');
28 loginizer_sso_t();
29 return;
30 }
31
32 if(!empty($_POST['lz_delete_sso'])){
33 loginizer_delete_sso();
34 return;
35 }
36
37 if(empty($_POST['sso_user'])){
38 $error[] = __('Please select a user for whom you want to generate the link', 'loginizer');
39 loginizer_sso_t();
40 return;
41 }
42
43 $username = sanitize_text_field($_POST['sso_user']);
44 $user = get_user_by('login', $username);
45
46 if(empty($user) || empty($user->ID)){
47 $error[] = __('The given user was not found !', 'loginizer');
48 loginizer_sso_t();
49 return;
50 }
51
52 $loginizer['sso_link'] = loginizer_create_sso($user->ID);
53
54 loginizer_sso_t();
55 }
56
57 function loginizer_delete_sso(){
58 global $error;
59
60 if(empty($_POST['lz_checksso_link'])){
61 $error[] = __('Please select SSO Links to delete!', 'loginizer');
62 loginizer_sso_t();
63 return;
64 }
65
66 $sso_ids = map_deep($_POST['lz_checksso_link'], 'sanitize_text_field');
67
68 if(empty($_POST['lz_checksso_link'])){
69 $error[] = __('SSO IDs were malformed', 'loginizer');
70 loginizer_sso_t();
71 return;
72 }
73
74 $sso_links = get_option('loginizer_sso_links', []);
75 $update_sso_links = false;
76
77 foreach($sso_ids as $sso_id){
78 delete_user_meta($sso_id, 'loginizer_sso_' . $sso_id);
79 delete_user_meta($sso_id, 'loginizer_sso_' . $sso_id . '_expires');
80
81 if(!empty($sso_links)){
82 unset($sso_links[$sso_id]);
83 $update_sso_links = true;
84 }
85 }
86
87 if(!empty($update_sso_links)){
88 update_option('loginizer_sso_links', $sso_links);
89 }
90
91 loginizer_sso_t();
92 }
93
94
95 function loginizer_sso_t(){
96 global $loginizer, $error;
97
98 loginizer_page_header('SSO');
99 loginizer_feature_available('Single Sign-On');
100
101 lz_report_error($error);
102 ?>
103 <style>
104 .loginizer-sso-link{
105 padding:1rem 1rem;
106 color:#052c65;
107 background-color:#cfe2ff;
108 border:1px solid #9ec5fe;
109 border-radius:0.375rem;
110 }
111
112 .loginizer-sso-copy{
113 margin-right:10px;
114 cursor:pointer;
115 font-weight:500;
116 }
117 </style>
118
119 <script>
120 jQuery(document).ready(function(){
121
122 jQuery('.loginizer-sso-copy').on('click', function(){
123 navigator.clipboard.writeText(jQuery(this).parent().text());
124 jQuery(this).removeClass('dashicons');
125 jQuery(this).removeClass('dashicons-admin-page');
126 jQuery(this).text('Copied');
127
128 setTimeout(() =>{
129 jQuery(this).text('');
130 jQuery(this).addClass('dashicons');
131 jQuery(this).addClass('dashicons-admin-page');
132 }, 1000);
133
134 });
135
136 jQuery('#lz_check_all_sso_link').on('change', function(){
137 if(jQuery(this).is(':checked')){
138 jQuery('input[name="lz_checksso_link[]"]').prop('checked', true);
139 return;
140 }
141
142 jQuery('input[name="lz_checksso_link[]"]').prop('checked', false);
143 });
144
145 });
146 </script>
147
148
149 <div id="" class="postbox" loginizer-premium-only="1">
150
151 <div class="postbox-header">
152 <h2 class="hndle ui-sortable-handle">
153 <span><?php esc_html_e('Generate SSO', 'loginizer');?></span>
154 </h2>
155 </div>
156
157 <div class="inside">
158 <?php
159 $user_list = get_users();
160
161 $sso_links = get_option('loginizer_sso_links', []);
162 ?>
163 <form action="" method="post" enctype="multipart/form-data">
164 <?php if(!empty($loginizer['sso_link'])){
165 echo '<div class="loginizer-sso-link"><span class="dashicons dashicons-admin-page loginizer-sso-copy"></span>'.esc_url($loginizer['sso_link']).'</div>';
166 }
167
168 echo wp_nonce_field('loginizer_nonce', 'security');
169 ?>
170
171 <table class="form-table">
172 <tr>
173 <td scope="row" valign="top" colspan="2">
174 <i><?php esc_html_e('You can generate SSO link or send it to an email, to give them access to your WordPress admin', 'loginizer'); ?></i>
175 </td>
176 </tr>
177 <tr>
178 <td scope="row" valign="top" style="width:300px !important">
179 <label for="lz-sso-email"><?php esc_html_e('Email', 'loginizer'); ?></label><br>
180 <span class="exp"><?php esc_html_e('Email of the person you want to send the SSO to', 'loginizer'); ?></span>
181 </td>
182 <td>
183 <input id="lz-sso-email" type="email" name="sso_email" placeholder="name@email.com"/>
184 <p class="description"><?php esc_html_e('You can leave it empty if you just want to create a SSO link', 'loginizer'); ?></p>
185 </td>
186 </tr>
187 <tr>
188 <td scope="row" valign="top" style="width:300px !important">
189 <label for="lz-sso-user"><?php esc_html_e('User', 'loginizer'); ?></label><br>
190 <span class="exp"><?php esc_html_e('User for who\'s account you want to generate the SSO', 'loginizer'); ?></span>
191 </td>
192 <td>
193 <input type="text" id="lz-sso-user" name="sso_user" placeholder="Username">
194 </td>
195 </tr>
196 <tr>
197 <td>
198 </td>
199 <td>
200 <input type="submit" class="button button-primary" name="lz_generate_sso" value="Generate SSO"/>
201 </td>
202 </tr>
203
204 </table>
205 </form>
206 <br/>
207 <form method="POST">
208 <?php echo wp_nonce_field('loginizer_nonce', 'security'); ?>
209 <table class="wp-list-table widefat fixed users" border="0">
210 <tr>
211 <th scope="row" valign="top" style="background:#EFEFEF;" width="20"><input type="checkbox" id="lz_check_all_sso_link" style="margin-left:-1px;"/></th>
212 <th scope="row" valign="top" style="background:#EFEFEF;"><?php esc_html_e('User ID','loginizer'); ?></th>
213 <th scope="row" valign="top" style="background:#EFEFEF;"><?php esc_html_e('Username','loginizer'); ?></th>
214 <th scope="row" valign="top" style="background:#EFEFEF;"><?php esc_html_e('SSO Link','loginizer'); ?></th>
215 <th scope="row" valign="top" style="background:#EFEFEF;"><?php esc_html_e('Expiring in','loginizer'); ?> <span class="dashicons dashicons-clock"></span></th>
216 </tr>
217
218 <?php
219
220 if(empty($sso_links)){
221 echo '<tr><td colspan="4">'.esc_html__('No SSO link has been created yet.', 'loginizer').'</td></tr>';
222 } else {
223 $expired_links = [];
224
225 foreach($sso_links as $u_id => $sso_link){
226 $user_info = get_userdata($u_id);
227 $expire_utime = get_user_meta($u_id, 'loginizer_sso_'.$u_id.'_expires', true);
228
229 if(empty($expire_utime)){
230 $expired_links[] = $u_id;
231 continue;
232 }
233
234 if($expire_utime < time()){
235 $expired_links[] = $u_id;
236 continue;
237 }
238
239 echo '<tr><td><input type="checkbox" name="lz_checksso_link[]" value="'.esc_attr($u_id).'" style="margin-left:-1px;"/></td>
240 <td>'.esc_html($u_id).'</td>
241 <td>'.esc_html($user_info->user_login).'</td>
242 <td>'.esc_url($sso_link).'</td>
243 <td>'.esc_html(human_time_diff(time(), $expire_utime)).'</td>
244 </tr>';
245 }
246
247
248 foreach($expired_links as $expired_link){
249 delete_user_meta($expired_link, 'loginizer_sso_'. $expired_link);
250 delete_user_meta($expired_link, 'loginizer_sso_'. $expired_link. '_expires');
251
252 unset($sso_links[$expired_link]);
253 }
254
255 if(!empty($expired_links)){
256 update_option('loginizer_sso_links', $sso_links);
257 }
258 }
259
260 ?>
261
262 </table><br/>
263 <input type="submit" name="lz_delete_sso" class="button button-primary action" value="<?php esc_html_e('Delete Selected Links', 'loginizer');?>">
264 </form>
265 </div>
266 </div>
267
268 <?php
269 loginizer_page_footer();
270
271 }