Browse Source

Add LDAP support

Daniel Supernault 3 years ago
parent
commit
9ac1015042
5 changed files with 550 additions and 126 deletions
  1. 3 2
      composer.json
  2. 431 122
      composer.lock
  3. 14 2
      config/auth.php
  4. 73 0
      config/ldap.php
  5. 29 0
      database/migrations/2022_03_09_042023_add_ldap_columns_to_users_table.php

+ 3 - 2
composer.json

@@ -13,8 +13,10 @@
 		"ext-json": "*",
 		"ext-mbstring": "*",
 		"ext-openssl": "*",
+		"bacon/bacon-qr-code": "^2.0.3",
 		"brick/math": "^0.8",
 		"buzz/laravel-h-captcha": "1.0.2",
+		"directorytree/ldaprecord-laravel": "^2.5",
 		"doctrine/dbal": "^2.7",
 		"fideloper/proxy": "^4.0",
 		"fruitcake/laravel-cors": "^2.0",
@@ -31,11 +33,10 @@
 		"league/iso3166": "^2.1|^4.0",
 		"pbmedia/laravel-ffmpeg": "^7.0",
 		"phpseclib/phpseclib": "~2.0",
-		"bacon/bacon-qr-code": "^2.0.3",
 		"pixelfed/fractal": "^0.18.0",
-		"pragmarx/google2fa": "^8.0",
 		"pixelfed/laravel-snowflake": "^2.0",
 		"pixelfed/zttp": "^0.4",
+		"pragmarx/google2fa": "^8.0",
 		"predis/predis": "^1.1",
 		"spatie/laravel-backup": "^6.0.0",
 		"spatie/laravel-image-optimizer": "^1.1",

File diff suppressed because it is too large
+ 431 - 122
composer.lock


+ 14 - 2
config/auth.php

@@ -65,14 +65,26 @@ return [
     */
 
     'providers' => [
+
+    	// Comment out or remove below for LDAP
         'users' => [
             'driver' => 'eloquent',
             'model'  => App\User::class,
         ],
 
+        // Uncomment below for LDAP
         // 'users' => [
-        //     'driver' => 'database',
-        //     'table' => 'users',
+        // 	'driver' => 'ldap',
+        // 	'model' => LdapRecord\Models\ActiveDirectory\User::class,
+        // 	'rules' => [],
+        // 	'database' => [
+        // 		'model' => App\User::class,
+        // 		'sync_passwords' => false,
+        // 		'sync_attributes' => [
+        // 			'name' => 'cn',
+        // 			'email' => 'mail',
+        // 		],
+        // 	],
         // ],
     ],
 

+ 73 - 0
config/ldap.php

@@ -0,0 +1,73 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Default LDAP Connection Name
+    |--------------------------------------------------------------------------
+    |
+    | Here you may specify which of the LDAP connections below you wish
+    | to use as your default connection for all LDAP operations. Of
+    | course you may add as many connections you'd like below.
+    |
+    */
+
+    'default' => env('LDAP_CONNECTION', 'default'),
+
+    /*
+    |--------------------------------------------------------------------------
+    | LDAP Connections
+    |--------------------------------------------------------------------------
+    |
+    | Below you may configure each LDAP connection your application requires
+    | access to. Be sure to include a valid base DN - otherwise you may
+    | not receive any results when performing LDAP search operations.
+    |
+    */
+
+    'connections' => [
+
+        'default' => [
+            'hosts' => [env('LDAP_HOST', '127.0.0.1')],
+            'username' => env('LDAP_USERNAME', 'cn=user,dc=local,dc=com'),
+            'password' => env('LDAP_PASSWORD', 'secret'),
+            'port' => env('LDAP_PORT', 389),
+            'base_dn' => env('LDAP_BASE_DN', 'dc=local,dc=com'),
+            'timeout' => env('LDAP_TIMEOUT', 5),
+            'use_ssl' => env('LDAP_SSL', false),
+            'use_tls' => env('LDAP_TLS', false),
+        ],
+
+    ],
+
+    /*
+    |--------------------------------------------------------------------------
+    | LDAP Logging
+    |--------------------------------------------------------------------------
+    |
+    | When LDAP logging is enabled, all LDAP search and authentication
+    | operations are logged using the default application logging
+    | driver. This can assist in debugging issues and more.
+    |
+    */
+
+    'logging' => env('LDAP_LOGGING', true),
+
+    /*
+    |--------------------------------------------------------------------------
+    | LDAP Cache
+    |--------------------------------------------------------------------------
+    |
+    | LDAP caching enables the ability of caching search results using the
+    | query builder. This is great for running expensive operations that
+    | may take many seconds to complete, such as a pagination request.
+    |
+    */
+
+    'cache' => [
+        'enabled' => env('LDAP_CACHE', false),
+        'driver' => env('CACHE_DRIVER', 'file'),
+    ],
+
+];

+ 29 - 0
database/migrations/2022_03_09_042023_add_ldap_columns_to_users_table.php

@@ -0,0 +1,29 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class AddLdapColumnsToUsersTable extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up()
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->string('guid')->unique()->nullable();
+            $table->string('domain')->nullable();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down()
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->dropColumn(['guid', 'domain']);
+        });
+    }
+}

Some files were not shown because too many files changed in this diff