diff --git a/.env.example b/.env.example index 6c6b0d18..1cbfb4b2 100644 --- a/.env.example +++ b/.env.example @@ -78,6 +78,5 @@ SUBSCRIPTIONS_ENABLED=false STRIPE_PRO_MONTHLY_PRICE_ID= STRIPE_PRO_YEARLY_PRICE_ID= -# Horizon Basic Auth (optional - if not set, Horizon will be accessible without authentication) -HORIZON_BASIC_AUTH_USERNAME= -HORIZON_BASIC_AUTH_PASSWORD= +# Horizon Allowed Emails (comma-separated list of emails allowed to access Horizon in production) +HORIZON_ALLOWED_EMAILS= diff --git a/app/Http/Middleware/HorizonBasicAuth.php b/app/Http/Middleware/HorizonBasicAuth.php deleted file mode 100644 index aa7c909c..00000000 --- a/app/Http/Middleware/HorizonBasicAuth.php +++ /dev/null @@ -1,36 +0,0 @@ -getUser(); - $authPassword = $request->getPassword(); - - if ($authUser !== $username || $authPassword !== $password) { - return response('Unauthorized', 401, [ - 'WWW-Authenticate' => 'Basic realm="Horizon"', - ]); - } - - return $next($request); - } -} diff --git a/app/Providers/HorizonServiceProvider.php b/app/Providers/HorizonServiceProvider.php index cd31c95b..1e777fdc 100644 --- a/app/Providers/HorizonServiceProvider.php +++ b/app/Providers/HorizonServiceProvider.php @@ -2,10 +2,7 @@ namespace App\Providers; -use App\Http\Middleware\HorizonBasicAuth; -use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Gate; -use Laravel\Horizon\Horizon; use Laravel\Horizon\HorizonApplicationServiceProvider; class HorizonServiceProvider extends HorizonApplicationServiceProvider @@ -15,15 +12,6 @@ class HorizonServiceProvider extends HorizonApplicationServiceProvider */ public function boot(): void { - $username = config('horizon.basic_auth_username'); - $password = config('horizon.basic_auth_password'); - - if (! empty($username) && ! empty($password)) { - $middleware = config('horizon.middleware', ['web']); - $middleware[] = HorizonBasicAuth::class; - Config::set('horizon.middleware', $middleware); - } - parent::boot(); // Horizon::routeSmsNotificationsTo('15556667777'); @@ -39,9 +27,15 @@ class HorizonServiceProvider extends HorizonApplicationServiceProvider protected function gate(): void { Gate::define('viewHorizon', function ($user = null) { - return in_array(optional($user)->email, [ - // - ]); + $allowedEmails = array_filter( + explode(',', env('HORIZON_ALLOWED_EMAILS', '')) + ); + + if (empty($allowedEmails)) { + return false; + } + + return in_array(optional($user)->email, $allowedEmails); }); } }