后台面板
用户
默认情况下,所有的 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