feat: OAuth independent registration

This commit is contained in:
deepshekhardas 2026-03-11 06:25:04 +05:30
parent d2de0307bd
commit 6917e01ed8
3 changed files with 31 additions and 2 deletions

View file

@ -18,11 +18,12 @@ class OauthController extends Controller
public function callback(string $provider)
{
try {
$oauth_setting = OauthSetting::where('provider', $provider)->first();
$oauthUser = get_socialite_provider($provider)->user();
$user = User::whereEmail($oauthUser->email)->first();
if (! $user) {
$settings = instanceSettings();
if (! $settings->is_registration_enabled) {
if (! $settings->is_registration_enabled && ! $oauth_setting->is_registration_enabled) {
abort(403, 'Registration is disabled');
}

View file

@ -11,7 +11,7 @@ class OauthSetting extends Model
{
use HasFactory;
protected $fillable = ['provider', 'client_id', 'client_secret', 'redirect_uri', 'tenant', 'base_url', 'enabled'];
protected $fillable = ['provider', 'client_id', 'client_secret', 'redirect_uri', 'tenant', 'base_url', 'enabled', 'is_registration_enabled'];
protected function clientSecret(): Attribute
{

View file

@ -0,0 +1,28 @@
<?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) {
$table->boolean('is_registration_enabled')->default(false);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('oauth_settings', function (Blueprint $table) {
$table->dropColumn('is_registration_enabled');
});
}
};