roadiz / abstract-user-theme
为您的Roadiz主题提供抽象用户空间中间件。
1.5.0
2021-09-22 16:45 UTC
Requires
- php: >=7.4
- ext-json: *
- messagebird/php-rest-api: ^1.14
- odolbeau/phone-number-bundle: ^3.0
- roadiz/roadiz: ~1.7.0
- twig/twig: ^3.0
Requires (Dev)
- phpstan/phpstan: ^0.12.38
- phpstan/phpstan-doctrine: ^0.12.19
- squizlabs/php_codesniffer: @stable
This package is auto-updated.
Last update: 2024-09-19 18:17:06 UTC
README
用于创建公共用户账户和用户操作的中间件主题。
特性
- 注册(可配置
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,这些已经定义好了。