螺栓/用户

Bolt 4 用户扩展

维护者

详细信息

github.com/bolt/users

源代码

问题

安装量: 29 114

依赖者: 0

建议者: 0

安全性: 0

星标: 8

关注者: 3

分支: 7

开放性问题: 9

类型:bolt-extension

0.2.2 2022-09-08 14:39 UTC

This package is auto-updated.

Last update: 2024-09-08 19:23:31 UTC


README

Bolt用户扩展允许您向网站添加前端用户。

以下是该扩展允许的功能列表

  • 定义用户组,允许他们注册和登录
  • 限制ContentType(页面)只对属于特定组的用户可见
  • 定义用户字段,并允许他们编辑自己的个人资料

安装

要从根目录安装此扩展,只需运行以下终端命令

composer require bolt/users

基本用法

要限制ContentType(例如ROLE_MEMBER)只对特定组用户可用,请执行以下操作

  1. config/extensions/bolt-usersextension.yaml中定义您的用户组
groups:
  ROLE_MEMBER:
    redirect_on_register: homepage # Provide either a route name, or a URL
    redirect_on_login: / # Provide either a route name, or a URL
    initial_status: enabled # Once a user registers, he/she is automatically allowed to login
  1. config/contenttypes.yaml中限制对特定ContentType(例如entries)的访问权限,例如只对那个用户组
entries:
    name: Entries
    singular_name: Entry
    fields:
        # ... normal ContentType definition
    allow_for_groups: [ 'ROLE_MEMBER', 'ROLE_ADMIN' ]

注意:使用allow_for_groups选项可以限制对ContentType的访问(包括列表以及记录页面)。它只允许登录并具有正确权限的用户访问这些页面。甚至管理员也无法查看这些页面,因此我们添加了ROLE_ADMIN组以确保管理员也有查看权限。

  1. 允许用户注册和登录

此扩展允许您在任意twig模板中包含注册表单。要添加注册表单,只需将以下内容添加到您的twig文件中

    {{ registration_form(group='ROLE_MEMBER') }}

以下行将渲染一个带有用户名、密码和电子邮件字段的注册表单,用户可以填写。您必须始终指定此表单适用的用户组(在本例中为ROLE_MEMBER)。使用该组注册的用户将自动获得访问限制在该组内的ContentType的权限。

目前,registration_form函数接受以下选项

要渲染登录表单,请使用以下

    {{ login_form() }}

登录函数没有指定组。扩展将尝试使用用户的凭据进行用户验证,并将正确的组分配给该用户。login_form函数接受两个可选参数,withlabelslabelsregistration_form函数的工作方式相同。

用户资料

有时,您想对用户进行更多操作,而不仅仅是限制对某些页面的访问。此扩展允许您通过将ContentType链接到用户组来定义自定义用户字段。

例如,为了定义我们的'ROLE_MEMBER'组的出生日期,我们会这样做

  1. config/contenttypes.ymal中定义一个名为members的ContentType,用于存储有关用户的信息。
members:
    name: Members
    singular_name: Member
    title_format: "{author.username}"
    fields:
      dob:
        type: date
    viewless: true

然后,在config/bolt-usersextension.yaml中编辑扩展配置

groups:
  ROLE_MEMBER:
    redirect_on_register: homepage
    redirect_on_login: /
    initial_status: enabled
    contenttype: members # Link the 'members' ContentType to the 'ROLE_MEMBER' group.

现在,属于ROLE_MEMBER组的用户将能够访问其位于/profile的个人资料。您可以通过自定义members ContentType的记录模板来自定义此页面的外观。

  1. 可选地,您可能希望允许成员编辑其个人资料。要执行此操作,请将以下内容添加到配置中
groups:
  ROLE_MEMBER:
    redirect_on_register: homepage
    redirect_on_login: /
    initial_status: enabled
    contenttype: members
    allow_profile_edit: true # If true, members will be able to edit their profiels on /profile/edit . You must specify the edit template below
    profile_edit_template: 'edit_profile.twig'

在这种情况下,位于public/theme/your-theme/目录中的edit_profile.twig文件可以包含任何常规twig模板。以下是一个包含编辑表单的基本示例,您可以将其包含在内

<form method="post">
    {% for field in record.fields %}
        <label for="fields[{{ field.name }}]"></label>
        {% if field.type === 'text' %}
            <input type="text" name="fields[{{ field.name }}]" value="{{ field.parsedValue }}" />
        {% elseif field.type === 'textarea' %}
            <textarea name="fields[{{ field.name }}]">{{ field.parsedValue }}</textarea>
        {% elseif field.type === 'checkbox' %}
            <input type="checkbox" name="fields[{{ field.name}}]" value="{{ field.parsedValue }}" />
        {% elseif field.type === 'date' %}
            <input type="date" name="fields[{{ field.name }}]" value="{{ field.parsedValue }}" />
        {% endif %}
    {% endfor %}

    <!-- The input fields below are required for Bolt to process the form. Do not change them -->
    <input type="hidden" name="_csrf_token" value="{{ csrf_token('editrecord') }}">
    <input type="hidden" name="_edit_locale" value="{{ user.locale }}">
    <input type="hidden" name="status" value="published">
    <input type="submit" value="save">
</form>

自定义注册和登录表单的外观

如果registration_formlogin_form函数中提供的自定义选项不足,您可能希望使用以下函数

用于注册

用于登录

上述每个字段函数都接受一个可选的 withlabel 参数和一个也用于 registration_formlabels 参数。