roadiz/abstract-user-theme

为您的Roadiz主题提供抽象用户空间中间件。

1.5.0 2021-09-22 16:45 UTC

This package is auto-updated.

Last update: 2024-09-19 18:17:06 UTC


README

Build Status

用于创建公共用户账户和用户操作的中间件主题。

特性

  • 注册(可配置user_theme.allow_sign_up布尔服务)
  • 登录
  • 使用OpenID登录(自Roadiz v1.5起)
  • 通过电子邮件验证账户
  • 通过短信验证账户(需要MessageBird API访问令牌)
  • 更改密码
  • 忘记我的密码(通过发送到用户电子邮件的令牌更改密码)
  • GDPR合规性
    • 用户删除
    • 用户数据下载(JSON序列化)

用法

  • 注册AbstractUserTheme服务
# app/AppKernel.php

/**
 * {@inheritdoc}
 */
public function register(\Pimple\Container $container)
{
    parent::register($container);

    /*
     * Add your own service providers.
     */
    $container->register(new \Themes\AbstractUserTheme\Services\AbstractUserThemeProvider());
}
  • 使用AbstractUserTheme扩展您的主题
# themes/MyAwesomeTheme/MyAwesomeThemeApp.php
namespace Themes\MyAwesomeTheme;

use Themes\AbstractUserTheme\AbstractUserThemeApp;

/**
 * MyAwesomeThemeApp class
 */
class MyAwesomeThemeApp extends AbstractUserThemeApp {

}
  • 不要直接在您的app/conf/config.yml文件中注册AbstractUserTheme,所有服务将通过继承连接起来。
  • 在主主题模板中添加一个additional_scripts Twig块,以便能够注入一些JS依赖项。
  • 将AbstractUserTheme路由导入您的主题(如果您不希望全部覆盖)
# Resources/routes.yml
abstract_user_theme_routes:
    resource: abstract_routes.yml

覆盖

覆盖控制器及其方法

所有控制器都只是使用Traits的空类,因此您可以轻松通过在您的主题中重新创建路由和控制器来覆盖它们。

<?php
declare(strict_types=1);

namespace Themes\MyAwesomeTheme\Controllers;

use Themes\AbstractUserTheme\Controllers\DeleteAccountControllerTrait;
use Themes\MyAwesomeTheme\MyAwesomeThemeApp;

class DeleteAccountController extends MyAwesomeThemeApp
{
    use DeleteAccountControllerTrait;
}

然后您必须覆盖路由配置,以便告诉Roadiz使用您自定义的控制器来处理每个路由,而不是使用AbstractUserTheme的控制器。

# themes/MyAwesomeTheme/Resources/routes.yml
override_user_theme_routes:
    resource: user_routes.yml
# themes/MyAwesomeTheme/Resources/routing/user_routes.yml
themeAccount:
    path: /{_locale}/account
    defaults:
        _controller: Themes\MyAwesomeTheme\Controllers\AccountController::accountAction
        _locale: en
    requirements:
        _locale: "[a-z]{2}"

覆盖模板

您也可以覆盖Twig模板,只需在您的主题中创建相同位置的模板文件即可。您甚至可以在不覆盖控制器或路由的情况下覆盖模板。

如果您想覆盖account/email/token.html.twig模板,只需将其复制为themes/MyAwesomeTheme/Resources/views/account/email/token.html.twig。当渲染页面和电子邮件时,Twig文件解析器将首先使用此文件。

用户事件

  • user.signed_up:在用户创建并实体管理器刷新后
  • user.reset_password:在用户重置其密码(在忘记我的密码中)并实体管理器刷新后
  • user.validated:在用户确认其账户并实体管理器刷新后
  • user.before_delete:当用户删除其账户 之前 实体被删除并实体管理器刷新(用于删除引用和相关实体)时。
  • user.after_delete:当用户删除其账户并且 之后 实体管理器刷新时。

必需路由

必须声明这些路由才能使防火墙入口工作

  • themeAccount
  • themeSignInUser
  • themeLogout
  • themeLoginCheck

如果您直接使用AbstractUserTheme,这些已经定义好了。