mvo / me-like
让用户喜欢事物,通过电子邮件确认他们的喜好并跟踪计数。
Requires
- php: >=7.4
- doctrine/doctrine-bundle: ^1.8 || ^2.0
- doctrine/orm: ^2.7
- sensio/framework-extra-bundle: ^4.4 || ^5.0
- symfony/doctrine-bridge: ^4.4 || ^5.0
- symfony/framework-bundle: ^4.4 || ^5.0
- symfony/mailer: ^4.4 || ^5.0
- symfony/twig-bundle: ^4.4 || ^5.0
- symfony/validator: ^4.4 || ^5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpstan/phpstan: ^0.11.8
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-11 06:38:56 UTC
README
它做什么?
此包提供了一个小部件,用户可以点击来喜欢事物(由API支持)。
喜欢需要确认才能计数 - 这通过要求电子邮件地址并发送带有确认链接的电子邮件来实现。这同时也是一个约束:每个用户(电子邮件)只能喜欢(每个端点)一次。
可以有多个端点/域名(= 喜欢的事物),这些由一个唯一的字符串标识。例如,可以是单个一个(idea
),或者是固定或动态列表(project.1
,project.2
,…) - 系统实际上并不关心。当列出/添加/确认喜欢时,系统会询问您的代码是否给定的端点是有效的。
js小部件通过API端点与服务器系统通信。它还充当确认喜欢的代理。为了使此功能正常工作,我们定义了一个包含'确认令牌'的特定URL片段,该片段供小部件监听(对于用户令牌也适用;见下文)。
安全性与隐私
- 电子邮件地址本身从未存储 - 只存储它们的单向散列。此外:散列对于每个端点和系统都是唯一的。
- API 不允许 检查某个电子邮件地址是否已经'喜欢'了端点。然而,小部件(客户端)在请求新的喜欢时获取一个令牌并将其存储在
localstorage
中。此令牌允许它查询有关用户喜欢的信息(因此可以提供更好的UI)。 - 用户令牌附加到'确认URL'中,允许小部件读取它并刷新本地版本。
服务器上存储的内容
- 数据库中哈希电子邮件的表(参见
Like
实体)
客户端存储的内容
- 用户令牌(
localstorage
)
设置
-
需要包并注册它。
composer require mvo/me-like
-
在您的twig模板中将小部件渲染到所需的端点
{{ render(controller('mvo.me_like.widget', { 'endpoint': 'my-endpoint' })) }}
-
添加端点处理程序(实现
Mvo\MeLike\Endpoint\EndpointInterface
),对于您想要允许的端点返回VALID
。您还可以向端点添加随机数据上下文,这些上下文将在通知模板中可用。class MyEndpoint implements EndpointValidatorInterface { public function handle(string $domain, ?int $id): ?bool { return 'my-endpoint' === $domain ? EndpointValidatorInterface::VALID : EndpointValidatorInterface::UNKOWN; } public function addContext(string $domain, ?int $id): ?array { return null; } }
如果您的端点名称的形式为
<domain>.<id>
,则各个部分将传递给您的处理程序。请注意,只有当
handle()
对于此端点返回VALID
时,处理程序才会被询问为端点添加上下文。您不需要在addContext()
内部重新检查有效性。 -
如果您不使用自动配置,请使用
mvo_me_like.endpoint
标记处理程序。 -
请确保加载js小部件和最小样式。该包包含一个编译版本(
like_widget.js
,like_widget.css
),它自动初始化小部件并有一些有偏见的样式。您可以自由构建自己的版本(参见/layout
下的源代码)。
配置
-
系统通过symfony mailer发送电子邮件。配置以下模板和配置键以适应您的需求
- 通知模板:
@MvoMeLike\Email\confirm_like.html.twig
- Mailer配置
mvo_me_like: notification: email_from: 'mail@example.com'
- 通知模板:
-
根据您的需求调整翻译。您也可以通过这种方式修改电子邮件主题。如果需要上下文相关参数,请通过键
email_subject
在端点处理程序中传递。 -
您还可以配置附加到URL的令牌名称(用户令牌 + 确认令牌)(例如,如果您有一些具有相同名称的锚点)
mvo_me_like: user_token: 'tok_u' confirm_token: 'tok_c'
这将导致一个类似这样的 '确认 URL':https://example.com/some/site#tok_u=&tok_c=
所有令牌的长度都是64个字符。