user() && request()->user()->withoutRole() ? request()->user()->profilePage() : static::$initialPath; } /** * This gate determines who can access Nova in non-local environments. */ public static function viewNova(): Closure { return fn ($user) => $user->isSystemUser() || $user->phoneIsVerified(); } /** * Set locales */ public static function setLocale(ServingNova $event): void { $user = $event->request->user(); if ($user && array_key_exists($user->locale, config('app.locales'))) { app()->setLocale($user->locale); } } /** * Locale Switcher Save */ public static function localeSwitcherSave(): Closure { return function (Request $request) { $locale = $request->post('locale'); if (is_string($locale) && array_key_exists($locale, config('app.locales'))) { $request->user()?->update(['locale' => $locale]); } }; } /** * Nova Footer */ public static function footer(): Closure { return fn () => view('vendor.nova.partials.footer')->render(); } /** * Check if user is me */ public static function isMe(): Closure { return fn () => Gate::allows('isMe', auth()->user()); } /** * Check if user is admin */ public static function isSuperAdmin(): Closure { return fn () => Gate::allows('isSuperAdmin', auth()->user()); } /** * Check if user is admin */ public static function isAdmin(): Closure { return fn () => Gate::allows('isAdmin', auth()->user()); } /** * Readonly only on "update" pages */ public static function readonlyOnUpdate(): Closure { return fn ($request) => $request->isUpdateOrUpdateAttachedRequest(); } /** * Depends on region */ public static function dependsOnRegion(string $attribute = 'region', string $model = Province::class): Closure { return function ($field, $request, $formData) use ($attribute, $model) { $field->options( $formData->{$attribute} ? $model::where('region', $formData->{$attribute})->pluck('name', 'id') : [] ); }; } }