管理用户
由于 Shield 使用比许多其他系统更复杂的设置,因此将用户身份与用户帐户本身分开。此快速概览应有助于你在日常工作中更自信地处理用户。
通过代码管理用户
查找用户
你可以从用户提供程序中找到现有用户。它返回一个用户
实体。
// Get the User Provider (UserModel by default)
$users = auth()->getProvider();
// Find by the user_id
$user = $users->findById(123);
// Find by the user email
$user = $users->findByCredentials(['email' => '[email protected]']);
创建用户
默认情况下,存储在用户表中的唯一值是用户名。
第一步是使用用户名创建用户记录。如果你没有用户名,请务必将值设置为null
,以便它通过 CodeIgniter 的空数据检查。
use CodeIgniter\Shield\Entities\User;
// Get the User Provider (UserModel by default)
$users = auth()->getProvider();
$user = new User([
'username' => 'foo-bar',
'email' => '[email protected]',
'password' => 'secret plain text password',
]);
$users->save($user);
// To get the complete user object with ID, we need to get from the database
$user = $users->findById($users->getInsertID());
// Add to default group
$users->addToDefaultGroup($user);
删除用户
用户的资料可能会分布在几个不同的表格中,因此你可能会担心如何从系统中删除所有用户资料。对于 Shield 已知的所有信息,这将在数据库级别自动处理,通过表格外键的 onCascade
设置。
你可以像删除其他实体一样删除用户。
// Get the User Provider (UserModel by default)
$users = auth()->getProvider();
$users->delete($user->id, true);
注意
用户行使用 软删除,因此除非第二个参数为 true
,否则它们实际上不会从数据库中删除,如上所示。
编辑用户
UserModel::save()
、update()
和 insert()
方法已修改,以确保之前在 User
实体上设置的电子邮件或密码将自动更新在正确的 UserIdentity
记录中。
// Get the User Provider (UserModel by default)
$users = auth()->getProvider();
$user = $users->findById(123);
$user->fill([
'username' => 'JoeSmith111',
'email' => '[email protected]',
'password' => 'secret123'
]);
$users->save($user);
通过 CLI 管理用户
Shield 有一个 CLI 命令来管理用户。你可以执行以下操作
create: Create a new user
activate: Activate a user
deactivate: Deactivate a user
changename: Change user name
changeemail: Change user email
delete: Delete a user
password: Change a user password
list: List users
addgroup: Add a user to a group
removegroup: Remove a user from a group
你可以通过在终端中运行以下命令来获取有关如何使用它的帮助
php spark shield:user --help