此外/软件扩展/HLOGIN——注册模块

HLOGIN - 注册模块

在安装框架后,通常有必要在网站上创建用户注册。在开始页面开发之前,您需要为不同类别的用户指定页面的可见性。

HLOGIN 库扩展了 HLEB2 框架的功能,通过添加全面的用户注册,该功能具有简单的配置和快速的设置,并且功能便捷且多样化。它支持多语言和多种设计选项。您可以选择加上注册和认证后的反馈表单。在自动生成的管理面板中,包含用户管理和显示设置的工具。在集成注册后,您可以立即将精力集中在为网站创建内容上。

提供了几种基本设计类型。您可以通过点击这里查看注册弹出窗口的功能演示和外观。


#安装

步骤 1:通过 Composer 在基于 HLEB2 的项目中安装:

$composer require phphleb/hlogin

步骤 2:在项目中安装库。您将被提示从多个选项中选择一种设计类型:

$php console phphleb/hlogin add

$composer dump-autoload


#连接

步骤 3:在执行此操作之前,必须具有有效的数据库连接。在项目设置中 '/config/database.php',您需要添加一个连接或确保它存在,并验证其名称在参数'base.db.type'中。

$php console hlogin/create-login-table

之后,使用控制台命令创建具有管理员权限的用户(系统会提示您提供E-mail和密码):

$php console hlogin/create-admin

如果无法执行控制台命令,请使用文件/vendor/phphleb/hlogin/planB.sql中的相应SQL查询来创建表。然后注册一个管理员并将他的'regtype'设置为11。

步骤 4:现在您可以继续访问网站的主占位页面,如果它是未更改的默认框架页面,检查授权面板是否可用。如果库不是从一开始就在基于HLEB2的项目中安装的,并且删除了占位符,请在网站的'/en/login/action/enter/'页面上检查登录情况(使用上一步的管理员数据)。

步骤 5:通过路由在特定页面上安装注册。为此,请在路由文件中设置以下条件(项目文件夹/routes/):

use App\Middlewares\Hlogin\Registrar;
use 
Phphleb\Hlogin\App\RegType;

Route::toGroup()->middleware(Registrar::class, data: [RegType::UNDEFINED_USER'>=']);
// Routes in this group will be available to all unregistered and registered users
// except those that were marked deleted and banned.
Route::endGroup();

Route::toGroup()->middleware(Registrar::class, data: [RegType::PRIMARY_USER'>=']);
// Routes in this group will be available to those who pre-registered (but didn't confirm E-mail),
// as well as to all registered users (including administrators).
Route::endGroup();

Route::toGroup()->middleware(Registrar::class, data: [RegType::REGISTERED_USER'>=']);
// Routes in this group will be available to all users who have completed full registration
// (confirmed by E-mail including administrators).
Route::endGroup();

Route::toGroup()->middleware(Registrar::class, data: [RegType::REGISTERED_COMMANDANT'>=']);
// Routes in this group will be available only to administrators.
Route::endGroup();

Route::toGroup()->middleware(Registrar::class, data: [RegType::PRIMARY_USER'>='Registrar::NO_PANEL]);
// Routes with check registration without displaying standard panels and buttons.
Route::endGroup();

Route::toGroup()->middleware(Registrar::class, data: [RegType::PRIMARY_USER'>='Registrar::NO_BUTTON]);
// Routes with check registration without displaying standard buttons.
Route::endGroup();

根据这些条件(组)分配网站的路由即可,对其应用用户授权规则。

请注意,不在任何具有条件的这些组中的页面处于注册规则之外,此库未连接到它们。

步骤 6:配置。授权后,管理员资料(/en/login/profile/)中显示进入管理面板的按钮。在这里您可以配置注册面板和其他参数。


#补充信息

如果需要根据用户注册类型输出数据:

use Phphleb\Hlogin\App\AuthUser;

$user AuthUser::current();
if (
$user) {
    
// Status for the confirmed user.
    
$confirm $user->isConfirm();

    
// Obtaining the user's E-mail.
    
$email $user->getEmail();

    
// Result of the administrator check.
    
$isAdmin $user->isSuperAdmin();
    
// ... //
} else {
    
// The current user is not authorized.
}

您还可以将类 Phphleb\Hlogin\Container\Auth 添加到 容器 中,并从中获取这些数据。

默认情况下,面板所用的语言是从 url 参数(域名后的部分)或 '<html lang="en">' 标签中的 lang 属性中提取的。要强制设置页面上的面板设计和/或语言:

<?php

use Phphleb\Hlogin\App\PanelData;

// Force setting the panel design type on the page.
PanelData::setLocalDesign('base');

// Forced installation of the panel language on the page.
PanelData::setLocalLang('en');

#面板管理

可以通过在管理面板中预先禁用默认的按钮来更换标准授权按钮。自定义按钮可以被分配以下操作之一(对于 JavaScript):

<script>
    
// Setting the design for the page via JS.
    // For example, this way you can set the `special` type for visually
    // impaired users without refreshing the page in the browser.
    
hloginSetDesignToPopups('special');

    
// Returns the design type to its original state.
    
hloginRevertDesignToPopups();

    
// Close all registration popups.
    
hloginCloseAllPopups();

    
// Open a specific window, in this case user registration.
    
hloginVariableOpenPopup('UserRegister');
    
// Or 'UserEnter', 'UserProfile', 'ContactMessage'

    // Displays an arbitrary custom message in the window (current design).
    
hloginOpenMessage('Title''Message <b>text</b>');

    
// If this function exists, it will be called every time a popup is opened, passing the popup type.
    
function hloginPopupVariableFunction(popupType) {
        
// Custom code. (popupType = 'UserRegister' / 'UserEnter' / 'UserPassword' / 'ContactMessage')
    
}
</
script>

或者,使用属性:

<div>
    <
button class="hlogin-init-action" data-type="UserEnter">Enter</button>
    <
button class="hlogin-init-action" data-type="UserProfile">Profile</button>
    <
button class="hlogin-init-action" data-type="UserRegister">Register</button>
    <
button class="hlogin-init-action" data-type="ContactMessage">Contact Message</button>
    <
button class="hlogin-init-action" data-type="ChangeDesign" data-value="dark">Change Design (dark)</button>
    <
button class="hlogin-init-action" data-type="DefaultDesign">Default Design</button>
    <
button class="hlogin-init-action" data-type="ChangeLang" data-value="de">Change Lang (de)</button>
    <
button class="hlogin-init-action" data-type="DefaultLang">Default Lang</button>
    <
button class="hlogin-init-action" data-type="CustomMessage" data-value="Test message" data-title="Title message">
        
Custom Message
    
</button>
</
div>

可以理解,注册对浏览器中禁用JavaScript的用户不可用。现在几乎没有这样的用户了。


#特定页面

如果需要立即将用户引导到登录或注册页面,则会自动创建若干必要的页面:

注册页面
/ru/login/action/registration/

登录页面
/ru/login/action/enter/

个人资料页面
/ru/login/profile/

联系页面
/ru/login/action/contact/

管理面板设置页面
/ru/adminzone/registration/settings/


#附加数据处理

在验证从注册表单提交的后端值时,可以使用您自己的PHP脚本对其进行额外处理(如果可用)。这样,例如,您可以在表单中添加自定义字段,并自行进行检查。查询被分为单独的类,可以在文件夹/vendor/phphleb/hlogin/Optional/Inserted/中找到。它们只能在复制到文件夹/app/Bootstrap/Auth/Handlers/后使用。


#设计

选择管理面板中的"blank"类型可以使用自定义设计。之后,您可以从现有设计中复制并修改CSS文件,自己将其连接到网站。还可以根据设计类型进行修改。

.hlogin-over-panel[data-design='base'input {
    
/* CSS rules for the "input" block of the "base" design */
}
.
hlogin-over-panel[data-design='dark'input {
    
/* CSS rules for the "input" block of the "dark" design */
}

#本地化

默认情况下,注册和认证使用多种可切换语言。不过,所有名词,可以根据需要进行自定义。重要的是要检查长词是否适合面板界面。

对于 后端 本地化,从 /vendor/phphleb/hlogin/App/BackendTranslation/ 中复制必要的语言文件到文件夹 /app/Bootstrap/Auth/Resources/php/ 并在后者中进行更改。

对于 前端 本地化,从 /vendor/phphleb/library/hlogin/web/js/ 中复制必要的语言文件(以 'hloginlang' 开头)到文件夹 /app/Bootstrap/Auth/Resources/js/ 并进行更改。

您可以通过为 后端前端 本地化创建相应名称的文件并在 /config/main.php 文件的 'allowed.languages' 设置中添加语言来添加额外的语言(此文件可能会在模块中重复出现)。


#管理区

在管理面板中创建自己的附加页面时,请如下所示围绕它们的路由添加访问限制:

use App\Middlewares\Hlogin\Registrar;
use 
Phphleb\Hlogin\App\RegType;

Route::toGroup()->middleware(Registrar::class, data: [RegType::REGISTERED_COMMANDANT'=']);
    
// Routes in this group will only be available to administrators.
Route::endGroup();

在管理部分中创建页面的描述在本文档的相应部分<

此处标准的 查看相关分节


#发送邮件

使用 github.com/phphleb/muller 库进行通知和恢复访问的邮件发送。在管理面板中,一定要指定发送人的 E-mail,该邮箱必须被允许从服务器发送邮件。对于大多数托管,仅需要创建这样的邮箱即可。可用发送电子邮件在 php.ini (sendmail_path = ... -f'email@example.com') 中找的到。

默认情况下,邮件还会被记录到文件夹 '/storage/logs/' 中,文件名以 'mail.log' 作为后缀。可以在管理面板设置中禁用此记录。


#邮件服务器

默认用于发送电子邮件的库功能有限,随着项目的发展,应将其替换为合适的邮件服务器或其他等效服务。

在路径/app/Bootstrap/Auth/MailServer.php上创建类App\Bootstrap\Auth\MailServer,它实现接口Phphleb\Hlogin\App\Mail\MailInterface。文件创建后,电子邮件将使用此类发送,因此您应首先实现您选择的邮件服务器的发送逻辑。


#库更新

要更新,请执行以下控制台命令:

$composer update phphleb/hlogin

$php console phphleb/hlogin add

$composer dump-autoload

在安装过程中,选择当前默认使用的设计。


#链接

GitHub上的HLOGIN库:github.com/phphleb/hlogin

演示注册页面:auth2.phphleb.ru

页面翻译:chatgpt 4-o
返回顶部