From e6b872299de6c4ce87c47d5f5ed2c8a23a8a7b09 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 13 Jul 2016 15:18:29 -0700 Subject: [PATCH] Possible fix for #2246 - needs AD testing --- app/Http/Controllers/SettingsController.php | 1 + app/Models/Ldap.php | 8 ++++- ...016_07_13_150015_add_is_ad_to_settings.php | 31 +++++++++++++++++++ resources/views/settings/edit.blade.php | 15 +++++++++ resources/views/settings/index.blade.php | 6 +++- 5 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 database/migrations/2016_07_13_150015_add_is_ad_to_settings.php diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index e93d77c0ff..c92d4622b0 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -398,6 +398,7 @@ class SettingsController extends Controller $setting->slack_botname = e(Input::get('slack_botname')); $setting->ldap_enabled = e(Input::get('ldap_enabled', '0')); $setting->ldap_server = e(Input::get('ldap_server')); + $setting->is_ad = e(Input::get('is_ad', '0')); $setting->ldap_server_cert_ignore = e(Input::get('ldap_server_cert_ignore', false)); $setting->ldap_uname = e(Input::get('ldap_uname')); if (Input::has('ldap_pword')) { diff --git a/app/Models/Ldap.php b/app/Models/Ldap.php index bc7bc6fb8c..e69cf9367e 100644 --- a/app/Models/Ldap.php +++ b/app/Models/Ldap.php @@ -67,7 +67,13 @@ class Ldap extends Model $connection = Ldap::connectToLdap(); $ldap_username_field = Setting::getSettings()->ldap_username_field; - $baseDn = $ldap_username_field.'='.$username.','.Setting::getSettings()->ldap_basedn; + + if (Setting::getSettings()->is_ad=='1') { + $baseDn = $username; + } else { + $baseDn = $ldap_username_field.'='.$username.','.Setting::getSettings()->ldap_basedn; + } + $filterQuery = Setting::getSettings()->ldap_auth_filter_query . $username; if (!$ldapbind = @ldap_bind($connection, $baseDn, $password)) { diff --git a/database/migrations/2016_07_13_150015_add_is_ad_to_settings.php b/database/migrations/2016_07_13_150015_add_is_ad_to_settings.php new file mode 100644 index 0000000000..ad6bc1beec --- /dev/null +++ b/database/migrations/2016_07_13_150015_add_is_ad_to_settings.php @@ -0,0 +1,31 @@ +boolean('is_ad')->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('settings', function ($table) { + $table->dropColumn('is_ad'); + }); + } +} diff --git a/resources/views/settings/edit.blade.php b/resources/views/settings/edit.blade.php index 2f6dc85b88..ed85fcb4ea 100755 --- a/resources/views/settings/edit.blade.php +++ b/resources/views/settings/edit.blade.php @@ -676,6 +676,21 @@ + + +
+
+ {{ Form::label('is_ad','Active Directory') }} +
+
+ {{ Form::checkbox('is_ad', '1', Input::old('is_ad', $setting->is_ad),array('class' => 'minimal')) }} + + {!! $errors->first('is_ad', ':message') !!} + +
+
+ +
diff --git a/resources/views/settings/index.blade.php b/resources/views/settings/index.blade.php index 17c17c75c1..6a98fe005c 100755 --- a/resources/views/settings/index.blade.php +++ b/resources/views/settings/index.blade.php @@ -150,7 +150,11 @@ {{ trans('admin/settings/general.ldap_integration') }} @if ($setting->ldap_enabled == 1) - {{ trans('general.yes') }} + {{ trans('general.yes') }} + @if ($setting->is_ad == '1') + (Active Directory) + @endif + @else {{ trans('general.no') }} @endif