用户
默认情况下,所有的 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() 方法用于获取当前用户的名称。