ようこそ! 情シス営業日誌 Friday, March 29 2024 @ 04:16 AM JST

LDAPでユーザー同期をする度にユーザーが非アクティブになってしまう

  • 投稿者:
  • 表示回数 109,206
snipe-it

私たちの組織では、snipe-itのユーザーはLDAPサーバから取得しています。

LDAPサーバに新しいメンバが追加されるごとにLDAPサーバよりユーザーを再取得するのですが、このタイミングでアクティブな既存ユーザーの状態を一律上書きし、非アクティブにしていることがわかりました。

不便ですので、以前の状態を保持するよう書き換えを行いました。

場所は、/var/www/snipeit/app/Console/Commands/LdapSync.php の 184~195行付近です。
handleというfunction内の中です。
snipe-itは、更新が頻繁に行われるので、常に行数は動いています。
行数は参照程度にとどめてください。

以下の場所をさがしてください。

if ( array_key_exists('useraccountcontrol', $results[$i]) ) {
     $enabled_accounts = [
            '512', '544', '66048', '66080', '262656', '262688', '328192', '328224'
     ];
     $item['activated'] = ( in_array($results[$i]['useraccountcontrol'][0], $enabled_accounts) ) ? 1 : 0;

}

以下のように追加します。

if ( array_key_exists('useraccountcontrol', $results[$i]) ) {
     $enabled_accounts = [
            '512', '544', '66048', '66080', '262656', '262688', '328192', '328224'
     ];
     $item['activated'] = ( in_array($results[$i]['useraccountcontrol'][0], $enabled_accounts) ) ? 1 : 0;
// Fall through to LDAP
} else {
       $item['activated'] = 0;
       if (empty($ldap_result_active_flag)) {
             $item['activated'] = 1;
       }
}