diff --git a/resources/views/access/index.blade.php b/resources/views/access/index.blade.php index 4bbd8325..e9f4f59d 100644 --- a/resources/views/access/index.blade.php +++ b/resources/views/access/index.blade.php @@ -321,7 +321,6 @@ class="min-w-0 flex-1"
@foreach ($permissions as $permission) - @php($isSystemPermission = in_array($permission->name, config('lazy.admin.permissions.defaults', []), true))
name, config('lazy.admin.permissions.defaults', []), true)) {{ $permission->name }} - @if ($isSystemPermission) + @if (in_array($permission->name, config('lazy.admin.permissions.defaults', []), true)) {{ __('lazy-admin::access.system_permission') }} @endif @endif - @if ($canDeletePermissions && ! $isSystemPermission) + @if ($canDeletePermissions && ! in_array($permission->name, config('lazy.admin.permissions.defaults', []), true)) - @if ($canDeletePermissions && ! $isSystemPermission) + @if ($canDeletePermissions && ! in_array($permission->name, config('lazy.admin.permissions.defaults', []), true)) diff --git a/resources/views/icons/redirect.blade.php b/resources/views/icons/redirect.blade.php new file mode 100644 index 00000000..41bd34d0 --- /dev/null +++ b/resources/views/icons/redirect.blade.php @@ -0,0 +1 @@ + diff --git a/resources/views/icons/shield.blade.php b/resources/views/icons/shield.blade.php new file mode 100644 index 00000000..f78d5a86 --- /dev/null +++ b/resources/views/icons/shield.blade.php @@ -0,0 +1 @@ + diff --git a/src/Controllers/LoginController.php b/src/Controllers/LoginController.php index 6c3531fb..4ba2bdf4 100644 --- a/src/Controllers/LoginController.php +++ b/src/Controllers/LoginController.php @@ -32,7 +32,9 @@ public function login(Request $request): RedirectResponse $field => $request->string('email')->toString(), 'password' => $request->string('password')->toString(), ]; - $candidate = $guard->getProvider()->retrieveByCredentials($credentials); + $candidate = method_exists($guard, 'getProvider') + ? $guard->getProvider()->retrieveByCredentials($credentials) + : null; if ($candidate && data_get($candidate, 'two_factor_secret')) { return back()->withErrors(['email' => __('auth.failed')])->onlyInput('email'); } diff --git a/src/Controllers/ProfileController.php b/src/Controllers/ProfileController.php index 00faf075..8100056d 100644 --- a/src/Controllers/ProfileController.php +++ b/src/Controllers/ProfileController.php @@ -54,7 +54,9 @@ public function password(Request $request): RedirectResponse 'password' => ['required', 'string', Password::defaults(), 'confirmed'], ]); $user->setAttribute('password', Hash::make($validated['password'])); - $user->setAttribute($user->getRememberTokenName(), Str::random(60)); + if (method_exists($user, 'getRememberTokenName')) { + $user->setAttribute($user->getRememberTokenName(), Str::random(60)); + } $user->save(); $request->session()->regenerate(); AdminActivity::log('password_changed', 'User password changed', $user, properties: ['self' => true]); diff --git a/src/Controllers/UserController.php b/src/Controllers/UserController.php index c7a01049..d3c15e5a 100644 --- a/src/Controllers/UserController.php +++ b/src/Controllers/UserController.php @@ -141,7 +141,9 @@ public function password(Request $request, string $user): RedirectResponse ]); $model->setAttribute('password', Hash::make($request->string('password')->toString())); - $model->setAttribute($model->getRememberTokenName(), Str::random(60)); + if (method_exists($model, 'getRememberTokenName')) { + $model->setAttribute($model->getRememberTokenName(), Str::random(60)); + } $model->save(); $request->session()->regenerate(); AdminActivity::log('password_changed', 'User password changed', $model, properties: [ diff --git a/src/LazyAdminServiceProvider.php b/src/LazyAdminServiceProvider.php index f96adccf..034f50fc 100644 --- a/src/LazyAdminServiceProvider.php +++ b/src/LazyAdminServiceProvider.php @@ -206,13 +206,14 @@ public function packageBooted(): void View::composer('lazy::header', static function ($view): void { $guard = (string) config('lazy.auth.guard', 'web'); $user = Auth::guard($guard)->user(); + $profileRoute = trim((string) config('lazy.admin.route.name', 'admin.'), '.').'.profile.show'; $view->with([ 'user' => $user, 'dashboardUrl' => Route::has('admin.dashboard') ? route('admin.dashboard') : url((string) config('lazy.admin.home', '/')), - 'profileUrl' => route(trim((string) config('lazy.admin.route.name', 'admin.'), '.').'.profile.show'), + 'profileUrl' => Route::has($profileRoute) ? route($profileRoute) : null, 'settingsUrl' => Route::has('admin.setting.index') ? route('admin.setting.index') : null, 'logoUrl' => (static function (): ?string { $logo = setting('admin.logo', config('lazy.admin.logo')); @@ -468,7 +469,7 @@ public function packageBooted(): void $prefix = trim((string) config('lazy.admin.route.name', 'admin.'), '.'); $menu->group(__('lazy-admin::admin.navigation.overview')); - $menu->addItem($prefix.'.dashboard', __('lazy-admin::admin.navigation.dashboard')); + $menu->addItem($prefix.'.dashboard', __('lazy-admin::admin.navigation.dashboard'), iconView: 'lazy::icons.dashboard'); }, id: 'lazy-admin-dashboard', priority: 10); MenuFacade::register(function (MenuManager $menu): void { @@ -480,11 +481,11 @@ public function packageBooted(): void $menu->group(__('lazy-admin::admin.navigation.system')); if (! $enforce || $user?->can('settings.view')) { - $menu->addItem($prefix.'.setting.index', __('lazy-admin::admin.navigation.settings')); + $menu->addItem($prefix.'.setting.index', __('lazy-admin::admin.navigation.settings'), iconView: 'lazy::icons.settings'); } if (! $enforce || $user?->can('activity.view')) { - $menu->addItem($prefix.'.activity.index', __('lazy-admin::admin.navigation.activity_log')); + $menu->addItem($prefix.'.activity.index', __('lazy-admin::admin.navigation.activity_log'), iconView: 'lazy::icons.activity'); } } }, id: 'lazy-admin-system', priority: 90); @@ -508,6 +509,7 @@ public function packageBooted(): void $menu->addItem( $routeTarget, __('lazy-admin::admin.navigation.redirects'), + iconView: 'lazy::icons.redirect', ); }, id: 'lazy-admin-seo-redirects', priority: 70); } @@ -522,7 +524,8 @@ public function packageBooted(): void $menu->group(__('lazy-admin::admin.navigation.content')); $menu->addItem( $prefix.'.page.index', - __('Pages'), + __('lazy-admin::admin.navigation.pages'), + iconView: 'lazy::icons.page', ); } }, id: 'lazy-admin-pages', priority: 60); @@ -543,6 +546,7 @@ public function packageBooted(): void $menu->addItem( $prefix.'.access.index', __('lazy-admin::admin.navigation.access'), + iconView: 'lazy::icons.shield', ); }, id: 'lazy-admin-access', priority: 80); } diff --git a/tests/Feature/UserSecurityTest.php b/tests/Feature/UserSecurityTest.php index 989d460a..4e9c0ca4 100644 --- a/tests/Feature/UserSecurityTest.php +++ b/tests/Feature/UserSecurityTest.php @@ -2,6 +2,7 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Schema; use Spatie\Permission\PermissionRegistrar; use Spatie\Permission\PermissionServiceProvider; @@ -11,6 +12,8 @@ beforeEach(function (): void { $this->withoutVite(); + Route::get('/login', fn () => 'Login')->name('login'); + Route::getRoutes()->refreshNameLookups(); config()->set([ 'database.connections.testing' => ['driver' => 'sqlite', 'database' => ':memory:', 'prefix' => ''], 'auth.providers.users.model' => User::class,