PluginProbe
Magic Login – Magic Link & Passwordless Authentication for WordPress – Login Without Password / 2.2
Magic Login – Magic Link & Passwordless Authentication for WordPress – Login Without Password v2.2
2.8.1 2.1 2.1.1 2.1.2 2.1.3 2.2 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.4 2.4.1 2.4.2 2.5 2.5.1 2.6 2.6.1 2.6.2 2.6.3 2.7 2.7.1 2.8 trunk All 48 releases
magic-login / includes / admin / dashboard.php

dashboard.php in Magic Login – Magic Link & Passwordless Authentication for WordPress – Login Without Password 2.2, at includes/admin/dashboard.php

152 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Settings Page
4 *
5 * @package MagicLogin
6 */
7
8 namespace MagicLogin\Admin\Dashboard;
9
10 use const MagicLogin\Constants\SETTING_OPTION;
11 use function MagicLogin\Utils\delete_all_tokens;
12 use function MagicLogin\Utils\get_allowed_intervals;
13
14 // phpcs:disable WordPress.WhiteSpace.PrecisionAlignment.Found
15 // phpcs:disable Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed
16 // phpcs:disable WordPress.WP.I18n.MissingTranslatorsComment
17
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit; // Exit if accessed directly.
20 }
21
22 /**
23 * Default setup routine
24 *
25 * @return void
26 */
27 function setup() {
28 if ( MAGIC_LOGIN_IS_NETWORK ) {
29 add_action( 'network_admin_menu', __NAMESPACE__ . '\\admin_menu' );
30 } else {
31 add_action( 'admin_menu', __NAMESPACE__ . '\\admin_menu' );
32 }
33
34 add_action( 'admin_init', __NAMESPACE__ . '\\save_settings' );
35 add_filter( 'admin_body_class', __NAMESPACE__ . '\\add_sui_admin_body_class' );
36 }
37
38 /**
39 * Add required class for shared UI
40 *
41 * @param string $classes css classes for admin area
42 *
43 * @return string
44 * @see https://wpmudev.github.io/shared-ui/installation/
45 */
46 function add_sui_admin_body_class( $classes ) {
47 $classes .= ' sui-2-12-24 ';
48
49 return $classes;
50 }
51
52
53 /**
54 * Add menu item
55 */
56 function admin_menu() {
57 $parent = MAGIC_LOGIN_IS_NETWORK ? 'settings.php' : 'options-general.php';
58
59 add_submenu_page(
60 $parent,
61 esc_html__( 'Magic Login', 'magic-login' ),
62 esc_html__( 'Magic Login', 'magic-login' ),
63 apply_filters( 'magic_login_admin_menu_cap', 'manage_options' ),
64 'magic-login',
65 __NAMESPACE__ . '\settings_page'
66 );
67 }
68
69 /**
70 * Settings page
71 */
72 function settings_page() {
73 $settings = \MagicLogin\Utils\get_settings();
74 ?>
75 <?php if ( is_network_admin() ) : ?>
76 <?php settings_errors(); ?>
77 <?php endif; ?>
78
79 <main class="sui-wrap">
80 <?php include MAGIC_LOGIN_INC . 'admin/partials/header.php'; ?>
81 <?php include MAGIC_LOGIN_INC . 'admin/partials/settings.php'; ?>
82 <?php include MAGIC_LOGIN_INC . 'admin/partials/footer.php'; ?>
83 </main>
84
85 <?php
86 }
87
88 /**
89 * Save settings
90 */
91 function save_settings() {
92
93 if ( ! is_user_logged_in() ) {
94 return;
95 }
96
97 $nonce = filter_input( INPUT_POST, 'magic_login_settings', FILTER_SANITIZE_SPECIAL_CHARS );
98 if ( wp_verify_nonce( $nonce, 'magic_login_settings' ) ) {
99
100 if ( isset( $_POST['reset_tokens'] ) ) {
101 if ( false !== delete_all_tokens() ) {
102 add_settings_error( SETTING_OPTION, 'magic-login', esc_html__( 'Tokens has been removed.', 'magic-login' ), 'success' );
103 } else {
104 add_settings_error( SETTING_OPTION, 'magic-login', esc_html__( 'Tokens could not be removed.', 'magic-login' ), 'error' );
105 }
106
107 return;
108 }
109
110 $settings = [];
111 $settings['is_default'] = boolval( filter_input( INPUT_POST, 'is_default' ) );
112 $settings['add_login_button'] = boolval( filter_input( INPUT_POST, 'add_login_button' ) );
113 $settings['token_ttl'] = absint( filter_input( INPUT_POST, 'token_ttl' ) );
114 $settings['token_validity'] = absint( filter_input( INPUT_POST, 'token_validity' ) );
115 $settings['auto_login_links'] = boolval( filter_input( INPUT_POST, 'auto_login_links' ) );
116 $settings['enable_ajax'] = boolval( filter_input( INPUT_POST, 'enable_ajax' ) );
117
118 // convert TTL in minute
119 if ( isset( $_POST['token_ttl'] ) && $_POST['token_ttl'] > 0 && isset( $_POST['token_interval'] ) ) {
120 switch ( $_POST['token_interval'] ) {
121 case 'DAY':
122 $settings['token_ttl'] = absint( $_POST['token_ttl'] ) * 1440;
123 break;
124 case 'HOUR':
125 $settings['token_ttl'] = absint( $_POST['token_ttl'] ) * 60;
126 break;
127 case 'MINUTE':
128 default:
129 $settings['token_ttl'] = absint( $_POST['token_ttl'] ) * 1;
130 }
131 }
132
133 $token_interval = sanitize_text_field( filter_input( INPUT_POST, 'token_interval' ) );
134 $allowed_intervals = get_allowed_intervals();
135
136 if ( isset( $allowed_intervals[ $token_interval ] ) ) {
137 $settings['token_interval'] = $token_interval;
138 }
139
140 if ( MAGIC_LOGIN_IS_NETWORK ) {
141 update_site_option( SETTING_OPTION, $settings );
142 } else {
143 update_option( SETTING_OPTION, $settings );
144 }
145
146 add_settings_error( SETTING_OPTION, 'magic-login', esc_html__( 'Settings saved.', 'magic-login' ), 'success' );
147
148 return;
149 }
150
151 }
152