2016-02-19 3 views
2

Я использую пару плагинов для интеграции с нашим сервером LDAP/AD - этот плагин добавляет немного метафайлов пользователя, когда он успешно выполняет авторизацию/создание пользователя wp. Я также использую плагин Ultimate Members для управления ролями и т. Д.Wordpress get user meta function

Что мне нужно сделать, так это обеспечить, чтобы каждому, кто подписывает свои ldap-Creds, назначается роль ldap UM. Итак, вот PHP, который я получил до сих пор.

global $ultimatemember; 
global $user_ID; 
$key = 'ad_integration_account_suffix'; 
$single = true; 
$ldap_user=get_user_meta($user_ID, $key, $single); // core WP coe to get a users meta info - we are assigning it a variable 
echo '<p>The '. $key . ' value for user id ' . $user_ID . ' is: ' . $ldap_user . '</p>'; // some debug stuff - take this out 
um_fetch_user($user_ID); // set UM user id to retrieve 
    if($ldap_user !== '') { // if the ldap user key is not null then its populated and thus this user is a member of AD 
$ultimatemember->user->set_role('ldap_user'); // so set the UM user to be a member of the ldap_user role/group. 
    } 

Теперь, я думаю, что есть некоторые проблемы с выше, т.е. я предполагаю, что он также должен быть обернут в функции? Где я прикрепляю этот фрагмент php, чтобы он вызывал вход? Я также, вероятно, должен сначала проверить, находится ли пользователь уже в группе ldap_user, и если это нам не нужно продолжать с остальными чеками/установками и т. Д.

ответ

0

Я предлагаю создать свой собственный плагин для обработки ваши функции LDAP. . С ним, используйте wp_login крюк, чтобы вызвать код на журнал в

Если вы никогда не создали плагин в Wordpress, вот как сделать это в несколько этапов:

  1. Создать папку в wp-content/plugins/ - давайте назовем это ldap-authentication
  2. Внутри создайте новый PHP-файл (назовем его ldap-authentication.php) и добавьте следующий комментарий в верхней части:

    /* 
    Plugin Name: LDAP Authentication 
    Version: 1.0 
    Description: Performs LDAP authentication 
    Author: Tony 
    */ 
    
  3. Включить этот плагин на странице расширений

И зацепить wp_login, сделайте следующее (я немного изменился код, чтобы отразить использование WP_User объекта):

function my_ldap_authentication($login, $user) { 
    global $ultimatemember; 
    global $user_ID; 
    $key = 'ad_integration_account_suffix'; 
    $single = true; 
    $ldap_user = get_user_meta($user->ID, $key, $single); 
    um_fetch_user($user->ID); 
    if($ldap_user !== '') { 
     $ultimatemember->user->set_role('ldap_user'); 
    } 
} 
add_action('wp_login', 'my_ldap_authentication', 10, 2); 

Если вы хотите знать, если пользователь находится в ldap_user группы, вы можете использовать следующее:

if(in_array('ldap_users', $user->roles)) { 
    // is an ldap user 
} 
+0

Спасибо - с этим нужно будет возиться! - похоже, wp_login устарел? и вместо этого использовать wp_signon? https://developer.wordpress.org/reference/functions/wp_signon/ – Tony

+0

NVM «Крючок действия wp_login запускается, когда пользователь входит в систему функцией wp_signon(). Это последнее действие, предпринятое в функции, сразу после вызов wp_set_auth_cookie(). – Tony

+0

Да, это функция, которая устарела - крюк по-прежнему действителен. – vard

0

вы также можете посмотреть в гравитацию Forms плагин (с регистрацией приплюсовать) при этом вы можете иметь регистрацию форма, которая назначает пользовательские роли на интерфейсе сайта. А также возможность для ваших пользователей редактировать свои профили (также на передней панели).

Я построил пару сайтов членства с охраняемыми районами, и мы использовали гравитацию формы плагина для обработки регистраций, а также члены Джастина Tadlock в плагин для обработки ролей/возможностей для новых пользователей