tlokuus/oc-disablepassword-plugin

October CMS禁用用户密码插件

dev-master 2020-04-08 08:12 UTC

This package is auto-updated.

Last update: 2024-09-08 17:37:34 UTC


README

此插件允许为OctoberCMS标记用户密码为“禁用”。禁用密码的用户将无法登录,直到他们设置新的密码(例如通过重置密码表单或“更改密码”页面)。

这对于提供第三方认证方法的网站很有用。例如,当用户使用Google在您的网站上注册时,您可能想创建一个新账户,但不需要密码。因此,用户将无法使用登录/密码表单,只能通过Google登录,直到他们决定设置密码。

此外,这些用户在编辑账户详情时也不会被要求输入当前密码。

要求

此插件需要RainLab User插件。为了使此插件有用,您应该在您的网站上提供其他认证方法。

设置

此插件将属性tlokuus_disablepassword_is_disabled添加到用户模型中。您可以通过检查此属性的值来检查用户是否没有密码。

每次您通过第三方认证方法注册新用户时,应将此属性设置为true

$new_user = Auth::register([
    'email' => 'john@example.com',
    'tlokuus_disablepassword_is_disabled' => true
]);

tlokuus_disablepassword_is_disabled属性也可以在后台手动触发。请注意,当在现有用户上启用时,将删除旧用户密码。

设置新密码后,tlokuus_disablepassword_is_disabled属性将自动关闭。

自定义错误消息

当禁用密码的用户尝试使用登录/密码组合登录时,将触发auth.user_without_password_login_attempt事件并显示错误消息。您可以根据需要自定义错误消息,以指导用户如何登录。

Event::listen('auth.user_without_password_login_attempt', function($user, &$message){
    if(/* User has linked its Google account */){
        $message = 'A matching user has been found, but the account has been created with Google. Please use your Google account to login.';
    }else{
        $message = 'No password has been set for this user. Please use the Forgot password feature.';
    }
});

账户编辑页面

此插件覆盖了RainLab User插件中的账户组件,允许编辑没有密码的用户的账户详情,即使requirePassword属性已被启用。

如果您编辑了RainLab User插件中账户组件的默认模板,请确保您仍然检查updateRequiresPassword属性。

对于没有密码的用户,此属性将自动设置为false,以便他们能够编辑他们的账户详情(包括设置密码)。