Merge pull request #3840 from danilomartinelli/feature/authentik-provider
feature: Integrate Authentik Authentication with Coolify
This commit is contained in:
		@@ -17,6 +17,7 @@ class SettingsOauth extends Component
 | 
			
		||||
            $carry["oauth_settings_map.$setting->provider.client_secret"] = 'nullable';
 | 
			
		||||
            $carry["oauth_settings_map.$setting->provider.redirect_uri"] = 'nullable';
 | 
			
		||||
            $carry["oauth_settings_map.$setting->provider.tenant"] = 'nullable';
 | 
			
		||||
            $carry["oauth_settings_map.$setting->provider.base_url"] = 'nullable';
 | 
			
		||||
 | 
			
		||||
            return $carry;
 | 
			
		||||
        }, []);
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@ class EventServiceProvider extends ServiceProvider
 | 
			
		||||
        ],
 | 
			
		||||
        \SocialiteProviders\Manager\SocialiteWasCalled::class => [
 | 
			
		||||
            \SocialiteProviders\Azure\AzureExtendSocialite::class.'@handle',
 | 
			
		||||
            \SocialiteProviders\Authentik\AuthentikExtendSocialite::class.'@handle',
 | 
			
		||||
        ],
 | 
			
		||||
        ProxyStarted::class => [
 | 
			
		||||
            ProxyStartedNotification::class,
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,17 @@ function get_socialite_provider(string $provider)
 | 
			
		||||
        return Socialite::driver('azure')->setConfig($azure_config);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($provider == 'authentik') {
 | 
			
		||||
        $authentik_config = new \SocialiteProviders\Manager\Config(
 | 
			
		||||
            $oauth_setting->client_id,
 | 
			
		||||
            $oauth_setting->client_secret,
 | 
			
		||||
            $oauth_setting->redirect_uri,
 | 
			
		||||
            ['base_url' => $oauth_setting->base_url],
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return Socialite::driver('authentik')->setConfig($authentik_config);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $config = [
 | 
			
		||||
        'client_id' => $oauth_setting->client_id,
 | 
			
		||||
        'client_secret' => $oauth_setting->client_secret,
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,7 @@
 | 
			
		||||
        "pusher/pusher-php-server": "^7.2",
 | 
			
		||||
        "resend/resend-laravel": "^0.15.0",
 | 
			
		||||
        "sentry/sentry-laravel": "^4.6",
 | 
			
		||||
        "socialiteproviders/authentik": "^5.2",
 | 
			
		||||
        "socialiteproviders/microsoft-azure": "^5.1",
 | 
			
		||||
        "spatie/laravel-activitylog": "^4.7.3",
 | 
			
		||||
        "spatie/laravel-data": "^4.11",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										50
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										50
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							@@ -7534,6 +7534,56 @@
 | 
			
		||||
            ],
 | 
			
		||||
            "time": "2024-11-24T11:02:20+00:00"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "socialiteproviders/authentik",
 | 
			
		||||
            "version": "5.2.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/SocialiteProviders/Authentik.git",
 | 
			
		||||
                "reference": "4cf129cf04728a38e0531c54454464b162f0fa66"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/SocialiteProviders/Authentik/zipball/4cf129cf04728a38e0531c54454464b162f0fa66",
 | 
			
		||||
                "reference": "4cf129cf04728a38e0531c54454464b162f0fa66",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "ext-json": "*",
 | 
			
		||||
                "php": "^8.0",
 | 
			
		||||
                "socialiteproviders/manager": "^4.4"
 | 
			
		||||
            },
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "SocialiteProviders\\Authentik\\": ""
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "rf152",
 | 
			
		||||
                    "email": "git@rf152.co.uk"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Authentik OAuth2 Provider for Laravel Socialite",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "authentik",
 | 
			
		||||
                "laravel",
 | 
			
		||||
                "oauth",
 | 
			
		||||
                "provider",
 | 
			
		||||
                "socialite"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "docs": "https://socialiteproviders.com/authentik",
 | 
			
		||||
                "issues": "https://github.com/socialiteproviders/providers/issues",
 | 
			
		||||
                "source": "https://github.com/socialiteproviders/providers"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2023-11-07T22:21:16+00:00"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "socialiteproviders/manager",
 | 
			
		||||
            "version": "v4.7.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -38,4 +38,11 @@ return [
 | 
			
		||||
        'tenant' => env('AZURE_TENANT_ID'),
 | 
			
		||||
        'proxy' => env('AZURE_PROXY'),
 | 
			
		||||
    ],
 | 
			
		||||
 | 
			
		||||
    'authentik' => [
 | 
			
		||||
        'base_url' => env('AUTHENTIK_BASE_URL'),
 | 
			
		||||
        'client_id' => env('AUTHENTIK_CLIENT_ID'),
 | 
			
		||||
        'client_secret' => env('AUTHENTIK_CLIENT_SECRET'),
 | 
			
		||||
        'redirect' => env('AUTHENTIK_REDIRECT_URI'),
 | 
			
		||||
    ],
 | 
			
		||||
];
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,32 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
use Illuminate\Database\Migrations\Migration;
 | 
			
		||||
use Illuminate\Database\Schema\Blueprint;
 | 
			
		||||
use Illuminate\Support\Facades\Schema;
 | 
			
		||||
 | 
			
		||||
return new class extends Migration
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Run the migrations.
 | 
			
		||||
     */
 | 
			
		||||
    public function up(): void
 | 
			
		||||
    {
 | 
			
		||||
        Schema::table('oauth_settings', function (Blueprint $table) {
 | 
			
		||||
            Schema::table('oauth_settings', function (Blueprint $table) {
 | 
			
		||||
                $table->string('base_url')->nullable();
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Reverse the migrations.
 | 
			
		||||
     */
 | 
			
		||||
    public function down(): void
 | 
			
		||||
    {
 | 
			
		||||
        Schema::table('oauth_settings', function (Blueprint $table) {
 | 
			
		||||
            Schema::table('oauth_settings', function (Blueprint $table) {
 | 
			
		||||
                $table->dropColumn('base_url');
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@@ -32,5 +32,9 @@ class OauthSettingSeeder extends Seeder
 | 
			
		||||
            'id' => 4,
 | 
			
		||||
            'provider' => 'google',
 | 
			
		||||
        ]);
 | 
			
		||||
        OauthSetting::firstOrCreate([
 | 
			
		||||
            'id' => 5,
 | 
			
		||||
            'provider' => 'authentik',
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "auth.login": "Login",
 | 
			
		||||
    "auth.login.authentik": "Login with Authentik",
 | 
			
		||||
    "auth.login.azure": "Login with Microsoft",
 | 
			
		||||
    "auth.login.bitbucket": "Login with Bitbucket",
 | 
			
		||||
    "auth.login.github": "Login with GitHub",
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,10 @@
 | 
			
		||||
                            <x-forms.input id="oauth_settings_map.{{ $oauth_setting->provider }}.tenant"
 | 
			
		||||
                                label="Tenant" />
 | 
			
		||||
                        @endif
 | 
			
		||||
                        @if ($oauth_setting->provider == 'authentik')
 | 
			
		||||
                            <x-forms.input id="oauth_settings_map.{{ $oauth_setting->provider }}.base_url"
 | 
			
		||||
                                label="Base URL" />
 | 
			
		||||
                        @endif
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            @endforeach
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user