/**
 * Only allow one session per user
 *
 * If the current user's session has been taken over by a newer
 * session then we will destroy their session automattically and
 * they will have to login again to continue.
 *
 * @action init
 */
function pcl_prevent_concurrent_logins()
{
    if (!pcl_user_has_concurrent_sessions()) {
        return;
    }
    $user_id = get_current_user_id();
    /**
     * Filter to allow certain users to have concurrent sessions when necessary
     *
     * @since 0.1.1
     *
     * @param bool $prevent
     * @param int  $user_id ID of the current user
     *
     * @return bool
     */
    if (false === (bool) apply_filters('pcl_prevent_concurrent_logins', true, $user_id)) {
        return;
    }
    $newest = max(wp_list_pluck(wp_get_all_sessions(), 'login'));
    $session = pcl_get_current_session();
    if ($session['login'] === $newest) {
        wp_destroy_other_sessions();
        /**
         * Fires after a user's non-current sessions are destroyed
         *
         * @since 0.3.0
         *
         * @param int $user_id ID of the affected user
         */
        do_action('pcl_destroy_other_sessions', $user_id);
    } else {
        wp_destroy_current_session();
        /**
         * Fires after a user's current session is destroyed
         *
         * @since 0.3.0
         *
         * @param int $user_id ID of the affected user
         */
        do_action('pcl_destroy_current_session', $user_id);
    }
}
Exemple #2
0
            $update_user_avatar = update_user_meta($user_id, 'dmeng_avatar', sanitize_text_field($_POST['avatar']));
            if (!is_wp_error($update_user_id) || $update_user_avatar) {
                $message = __('基本信息已更新', 'dmeng');
            }
            if ($is_auto_userlogin && $new_user_login == false) {
                $message .= sprintf(__('(用户名没有更新,因为 %s 是非法用户名。(可能已经被其他用户使用或已被添加到黑名单)', 'dmeng'), sanitize_user(trim($_POST['user_login'])));
            }
        }
        if ($update == 'pass') {
            $pass_update = dmeng_profile_pass_update($user_id, $_POST['email'], $_POST['pass1'], $_POST['pass2']);
            if ($pass_update) {
                $message = $pass_update;
            }
        }
        if ($update == 'destroy-sessions' && version_compare($wp_version, '4.0.0', '>=')) {
            wp_destroy_other_sessions();
            $message = __('其他会话已清理。', 'dmeng');
        }
        $message .= ' <a href="' . dmeng_get_user_url($get_tab, $curauth->ID) . '">' . __('点击刷新', 'dmeng') . '</a>';
        $user_info = get_userdata($curauth->ID);
    }
}
//~ 个人资料end
//~ 投稿start
if (isset($_GET['action']) && in_array($_GET['action'], array('new', 'edit')) && $oneself) {
    if (isset($_GET['id']) && is_numeric($_GET['id']) && get_post($_GET['id']) && intval(get_post($_GET['id'])->post_author) === get_current_user_id()) {
        $action = 'edit';
        $the_post = get_post($_GET['id']);
        $post_title = $the_post->post_title;
        $post_content = $the_post->post_content;
    } else {