-
Notifications
You must be signed in to change notification settings - Fork 0
/
pronamic-wp-env-quick-login.php
95 lines (75 loc) · 2.21 KB
/
pronamic-wp-env-quick-login.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
/**
* Pronamic `wp-env` Quick Login
*
* @package PluginPackage
* @author Pronamic
* @copyright 2023 Pronamic
* @license GPL-2.0-or-later
*
* @wordpress-plugin
* Plugin Name: Pronamic `wp-env` Quick Login
* Plugin URI: https://wp.pronamic.directory/plugins/pronamic-wp-env-quick-login/
* Description: Quickly log in as a specified WordPress user in your `wp-env` environment.
* Version: 1.0.0
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: Pronamic
* Author URI: https://www.pronamic.eu/
* Text Domain: pronamic-wp-env-quick-login
* License: GPL v2 or later
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
* Update URI: https://wp.pronamic.directory/plugins/pronamic-wp-env-quick-login/
*/
add_action( 'init', function() {
if ( ! array_key_exists( 'pronamic_auto_login', $_REQUEST ) ) {
return;
}
$user_id = sanitize_text_field( wp_unslash( $_REQUEST['pronamic_auto_login'] ) );
$user = get_user_by( 'id', $user_id );
if ( false === $user ) {
return;
}
wp_clear_auth_cookie();
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID, false, is_ssl() );
do_action( 'wp_login', $user->user_login, $user );
$redirect_to = user_admin_url();
wp_safe_redirect( $redirect_to );
exit();
} );
add_action( 'login_footer', function() {
?>
<style>
#pronamic-one-click-login {
width: 320px;
margin: auto;
padding-bottom: 24px;
}
#pronamic-icon {
border-radius: 50%;
display: block;
margin: auto;
}
</style>
<div id="pronamic-one-click-login">
<img id="pronamic-icon" src="<?php echo esc_url( plugins_url( 'images/pronamic-icon-bg-orange-color-white-25pct-margin.svg', __FILE__ ) ); ?>" alt="Pronamic `wp-env` Quick Login" width="84" height="84" />
<form method="post" action="">
<div>
<label for="pronamic-login-user">One-click login</label>
<div>
<?php
wp_dropdown_users(
[
'name' => 'pronamic_auto_login',
'id' => 'pronamic-login-user',
]
);
?>
</div>
</div>
<button class="button button-primary button-large" type="submit">Log In</button>
</form>
</div>
<?php
} );