PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Classes / DisableConcurrentLogins.php
wp-user-avatar / src / Classes Last commit date
Installer 3 years ago AdminNotices.php 1 month ago AjaxHandler.php 1 year ago Autologin.php 9 months ago BlockRegistrations.php 10 months ago BuddyPressBbPress.php 3 years ago DisableConcurrentLogins.php 2 years ago EditUserProfile.php 5 months ago ExtensionManager.php 1 month ago FileUploader.php 3 months ago FormPreviewHandler.php 5 months ago FormRepository.php 1 year ago FormShortcodeDefaults.php 1 month ago GDPR.php 3 years ago Geolocation.php 3 years ago GlobalSiteAccess.php 3 years ago ImageUploader.php 1 year ago LoginAuth.php 1 year ago Miscellaneous.php 3 years ago ModifyRedirectDefaultLinks.php 5 months ago PPRESS_Session.php 1 year ago PROFILEPRESS_sql.php 1 year ago PasswordReset.php 1 year ago ProfileUrlRewrite.php 4 years ago RegistrationAuth.php 1 week ago SendEmail.php 3 years ago ShortcodeThemeFactory.php 5 years ago UserAvatar.php 1 year ago UserSignupLocationListingPage.php 3 years ago UsernameEmailRestrictLogin.php 4 years ago WPProfileFieldParserTrait.php 1 year ago WelcomeEmailAfterSignup.php 1 year ago default-email-template.php 1 year ago index.php 3 years ago
DisableConcurrentLogins.php
56 lines
1 <?php
2
3 namespace ProfilePress\Core\Classes;
4
5 class DisableConcurrentLogins
6 {
7 public function __construct()
8 {
9 add_action('set_auth_cookie', [$this, 'disable_concurrent_logins'], 10, 6);
10 }
11
12 /**
13 * @param string $logged_in_cookie The logged-in cookie value.
14 * @param int $expire The time the login grace period expires as a UNIX timestamp.
15 * Default is 12 hours past the cookie's expiration time.
16 * @param int $expiration The time when the logged-in authentication cookie expires as a UNIX timestamp.
17 * Default is 14 days from now.
18 * @param int $user_id User ID.
19 * @param string $scheme Authentication scheme. Default 'logged_in'.
20 * @param string $token User's session token to use for this cookie.
21 */
22 public function disable_concurrent_logins($logged_in_cookie, $expire, $expiration, $user_id, $scheme, $token)
23 {
24 if (ppress_get_setting('disable_concurrent_logins') != 'true') return;
25
26 /**
27 * WP uses $_SERVER['REMOTE_ADDR'] to get user IP when logging in
28 * @see WP_Session_Tokens::create()
29 */
30 if (empty($_SERVER['REMOTE_ADDR'])) return;
31
32 $all_sessions = \WP_Session_Tokens::get_instance($user_id)->get_all();
33
34 if (empty($all_sessions)) return;
35
36 $different_ip_sessions = array_filter($all_sessions, function ($session) {
37 return $session['ip'] !== $_SERVER['REMOTE_ADDR'];
38 });
39
40 // if login session from IP other than current user ip address exist, destroy other sessions
41 if ( ! empty($different_ip_sessions) && ! empty($token)) {
42 \WP_Session_Tokens::get_instance($user_id)->destroy_others($token);
43 }
44 }
45
46 public static function get_instance()
47 {
48 static $instance = null;
49
50 if (is_null($instance)) {
51 $instance = new self();
52 }
53
54 return $instance;
55 }
56 }