Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@
"pestphp/pest-plugin-laravel": "^2.0",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
"spatie/laravel-ray": "^1.26"
"phpstan/phpstan-phpunit": "^1.0"
},
"autoload": {
"psr-4": {
Expand Down
4 changes: 2 additions & 2 deletions config/backstage/users.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
],

'record' => [
'can_toggle_sub_navigation' => true,
'can_toggle_width' => true,
'can_toggle_sub_navigation' => false,
'can_toggle_width' => false,
'manage-api-tokens' => false,
],
];
3 changes: 2 additions & 1 deletion src/Concerns/Resources/HasSubNavigationPosition.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace Backstage\Filament\Users\Concerns\Resources;

use Backstage\Laravel\Users\Eloquent\Models\User;
use Filament\Facades\Filament;
use Filament\Pages\Enums\SubNavigationPosition;

Expand All @@ -10,7 +11,7 @@ trait HasSubNavigationPosition
public static function getSubNavigationPosition(): SubNavigationPosition
{
/**
* @var \Backstage\Laravel\Users\Eloquent\Models\User $user
* @var User $user
*/
$user = Filament::auth()->user();

Expand Down
2 changes: 1 addition & 1 deletion src/Notifications/UserInvitationNotification.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public function toMail(User $notifiable): MailMessage
$url = GenerateSignedRegistrationUri::run(user: $notifiable);

return (new MailMessage)
->subject(__('Welcome to Our Platform'))
->subject(__('Welcome to :appName', ['appName' => config('app.name', 'Backstagephp')]))
->greeting(__('Hello :name!', ['name' => $notifiable->getAttribute('name')]))
->line(__('We are excited to have you on board.'))
->action(__('Register'), $url)
Expand Down
3 changes: 2 additions & 1 deletion src/Pages/ManageApiTokens.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Backstage\Filament\Users\Pages;

use BackedEnum;
use Backstage\Filament\Users\Models\User;
use Filament\Actions\Action;
use Filament\Facades\Filament;
use Filament\Forms\Components\TextInput;
Expand Down Expand Up @@ -87,7 +88,7 @@ public function create()
$state = $this->content->getState();

/**
* @var \Backstage\Filament\Users\Models\User $user
* @var User $user
*/
$user = Filament::auth()->user();

Expand Down
2 changes: 1 addition & 1 deletion src/Resources/RoleResource/RoleResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public static function getSlug(?Panel $panel = null): string

public static function getNavigationGroup(): ?string
{
return __('User management');
return __('Manage');
}

public static function getNavigationIcon(): string | BackedEnum | Htmlable | null
Expand Down
11 changes: 5 additions & 6 deletions src/Resources/UserResource/Pages/CreateUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
namespace Backstage\Filament\Users\Resources\UserResource\Pages;

use Backstage\Filament\Users\Resources\UserResource\UserResource;
use Backstage\Laravel\Users\Events\Auth\UserCreated;
use Filament\Facades\Filament;
use Filament\Resources\Pages\CreateRecord;
use Illuminate\Support\Facades\Event;

class CreateUser extends CreateRecord
{
Expand All @@ -14,13 +13,13 @@ public static function getResource(): string
return config('backstage.users.resources.users', UserResource::class);
}

public function beforeCreate(): void
protected function getCreatedNotificationTitle(): ?string
{
Event::forget(UserCreated::class);
return __('User created successfully, the user will receive an email with their registeration details.');
}

protected function getCreatedNotificationTitle(): ?string
public function getRedirectUrl(): string
{
return __('User created successfully, the user will receive an email with their registeration details.');
return $this->getResource()::getUrl('index', ['tenant' => Filament::getTenant()?->getRouteKey()]);
}
}
12 changes: 4 additions & 8 deletions src/Resources/UserResource/Pages/ListUsers.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
namespace Backstage\Filament\Users\Resources\UserResource\Pages;

use Backstage\Filament\Users\Resources\UserResource\UserResource;
use Backstage\Filament\Users\Widgets\StatsOverviewWidget;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
use Filament\Schemas\Components\Tabs\Tab;
use Filament\Support\Colors\Color;

class ListUsers extends ListRecords
{
Expand All @@ -25,22 +25,18 @@ protected function getHeaderActions(): array
protected function getHeaderWidgets(): array
{
return [
\Backstage\Filament\Users\Widgets\StatsOverviewWidget::class,
StatsOverviewWidget::class,
];
}

public function getTabs(): array
{
return [
'users' => Tab::make(__('Users'))
->badge(static::getResource()::getEloquentQuery()->verified()->count())
->badgeColor(Color::Green)
->modifyQueryUsing(fn ($query) => $query->verified()),
->modifyQueryUsing(fn () => static::getResource()::getEloquentQuery()->verified()),

'pending' => Tab::make(__('Pending'))
->badge(static::getResource()::getEloquentQuery()->unverified()->count())
->badgeColor(Color::Red)
->modifyQueryUsing(fn ($query) => $query->unverified()),
->modifyQueryUsing(fn () => static::getResource()::getEloquentQuery()->unverified()),
];
}
}
1 change: 1 addition & 0 deletions src/Resources/UserResource/Pages/ManageRoles.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public function table(Table $table): Table
AttachAction::make()
->preloadRecordSelect()
->recordTitleAttribute('name')
->hidden(fn () => ! static::getResource()::canEdit($this->getOwnerRecord()))
->multiple(),

CreateAction::make(),
Expand Down
6 changes: 4 additions & 2 deletions src/Resources/UserResource/Pages/ViewUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
use Filament\Auth\Notifications\VerifyEmail;
use Filament\Facades\Filament;
use Filament\Resources\Pages\ViewRecord;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Blade;
Expand Down Expand Up @@ -53,13 +55,13 @@ protected function getHeaderActions(): array
->action(function (): void {
/**
* @var User $user
* @var \Illuminate\Contracts\Auth\Authenticatable $user
* @var Authenticatable $user
*/
$user = $this->record;
/**
* Broker
*
* @var \Illuminate\Contracts\Auth\PasswordBroker $broker
* @var PasswordBroker $broker
*/
$broker = app('auth.password.broker');

Expand Down
4 changes: 4 additions & 0 deletions src/Resources/UserResource/Schemas/UserForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public static function configure(Schema $schema): Schema
->label(__('Email'))
->prefixIcon(fn (): BackedEnum => Heroicon::Envelope, true)
->email()
->unique()
->required(),

Select::make('roles')
Expand Down Expand Up @@ -78,6 +79,9 @@ public static function configure(Schema $schema): Schema
DateTimePicker::make('email_verified_at')
->label(__('Email Verified'))
->live()
->native(false)
->seconds(false)
->displayFormat('M j, Y - H:i')
->prefixIcon(fn (DateTimePicker $component): BackedEnum => ! $component->getState() ? Heroicon::XCircle : Heroicon::CheckCircle, true)
->prefixIconColor(fn (DateTimePicker $component): string => ! $component->getState() ? 'danger' : 'success'),
])
Expand Down
11 changes: 7 additions & 4 deletions src/Resources/UserResource/UserResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public static function getSlug(?Panel $panel = null): string

public static function canAccess(): bool
{
return UsersPlugin::get()->canManageUsersCondition();
return parent::canAccess() && UsersPlugin::get()->canManageUsersCondition();
}

public static function getModel(): string
Expand All @@ -58,7 +58,7 @@ public static function getRecordTitleAttribute(): ?string

public static function getNavigationGroup(): ?string
{
return __('User management');
return __('Manage');
}

public static function getNavigationIcon(): string | BackedEnum | Htmlable | null
Expand Down Expand Up @@ -95,10 +95,12 @@ public static function table(Table $table): Table
->headerActions([
ImportAction::make('import')
->importer(UserImporter::class)
->color('primary'),
->color('primary')
->visible(fn () => static::canCreate()),

ExportAction::make()
->exporter(UserExporter::class),
->exporter(UserExporter::class)
->visible(fn () => static::canCreate()),
])
->columns([
Tables\Columns\ImageColumn::make('avatar')
Expand Down Expand Up @@ -129,6 +131,7 @@ public static function table(Table $table): Table
->label('')
->color('gray')
->tooltip(__('Impersonate'))
->hidden(fn ($record) => ! static::canEdit($record))
->hiddenLabel(),
])
->toolbarActions([
Expand Down
Loading