跳到主要内容
版本:2.x

用户

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