后台面板
用户
默认情况下,所有的 App\Models\User
用户可以在本地环境中访问 Filament。但如果要在生产环境中同样允许用户访问,需要一些额外的操作来确保授权的用户才能访问后台面板。
授权访问后台
要让非本地环境的 App\Models\User
用户获取访问权限,你需要实现 FilamentUser
合约接口:
<?php namespace App\Models; use Filament\Models\Contracts\FilamentUser;use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements FilamentUser{ // ... public function canAccessFilament(): bool { return str_ends_with($this->email, '@yourdomain.com') && $this->hasVerifiedEmail(); }}
canAccessFilament()
方法返回 true
还是 false
,取决于用户是否被授权允许访问。本例中会检查用户的邮箱后缀是否为 @yourdomain.com
以及用户是否验证过该邮箱。
设置头像
Filament 使用可开箱即用的ui-avatars.com 生成基于用户名的头像。你也可以实现 HasAvatar
合约接口,提供你自己的头像URL。
<?php namespace App\Models; use Filament\Models\Contracts\FilamentUser;use Filament\Models\Contracts\HasAvatar;use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements FilamentUser, HasAvatar{ // ... public function getFilamentAvatarUrl(): ?string { return $this->avatar_url; }}
getFilamentAvatarUrl()
方法用于获取当前用户的头像。如果这个方法返回 null
,Filament 会转向 ui-avatars.com。
配置 name 属性
默认情况下,Filament 会使用用户的 name
属性来展示后台面板的名字。想要调整,你可以实现 HasName
合约接口:
<?php namespace App\Models; use Filament\Models\Contracts\FilamentUser;use Filament\Models\Contracts\HasName;use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements FilamentUser, HasName{ // ... public function getFilamentName(): string { return "{$this->first_name} {$this->last_name}"; }}
getFilamentName()
方法用于获取当前用户的名称。
Still need help? Join our Discord community or open a GitHub discussion