stats4sd/laravel-team-management

这是我创建的包:laravel-team-management

v0.1.0 2023-08-03 09:43 UTC

This package is auto-updated.

Last update: 2024-09-24 18:38:19 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

这个包以意见驱动的方式将用户团队添加到您的 Laravel 应用程序中。它包括多种通过电子邮件邀请新用户的方式,并集成了 Laravel Backpack,这样您可以通过一个干净的管理界面来管理团队和用户邀请。

该包旨在在 Laravel Backpack 应用程序中使用,并且当您还使用 Laravel Backpack 权限管理器/Spatie 权限管理器来分配用户的全站角色时效果最佳。您可以在不使用 Backpack 的应用程序中使用它,但需要额外的工作来构建页面和集成团队管理 blade 模板。

安装

您可以通过 composer 安装此包

composer require stats4sd/laravel-team-management

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --tag="team-management-migrations"
php artisan migrate

您还可以选择发布配置文件,但我们建议您在 .env 文件中设置所需的配置项。

php artisan vendor:publish --tag="team-management-config"

如果您想覆盖或修改包的路线,可以发布路线文件。如果此文件(/routes/backpack/team-management.php)存在于您的应用程序中,则不会加载包的内部路由。

php artisan vendor:publish --tag="team-management-routes"

设置

要链接用户到团队,该包需要知道您的应用程序的 'User' 模型。默认情况下,它会查找 '\App\Models\User'。如果您使用不同的模型,请在您的 .env 文件中添加以下条目

TEAM_MANAGEMENT_USER_MODEL='\Fqdn\Of\Your\Model'

您还应将 HasTeamMemberships 特性添加到您的 User 模型中。此特性定义了到团队的所需关系,并为启用邀请功能添加了一些功能。

如果您使用权限管理器,还应定义 SITE_ADMIN_ROLE。具有此角色的用户将完全访问所有团队。默认情况下,此设置为 admin,但如果您使用不同的约定,请将其添加到您的 .env 文件中。

CRUD 面板

该包包含 3 个 CRUD 面板。这些面板的链接如下

  • TeamCrudController: backpack_url("team")
  • InviteCrudController backpack_url("invite")
  • RoleInviteCrudController backpack_url("role-invite")

您可以使用以下命令自动在您的 resources/views/vendor/backpack/base/inc/sidebar_content.blade.php 文件底部添加链接

php artisan team-management:crud

您也可以手动将这些链接添加到侧边栏,或应用中的任何其他位置。

包功能

团队管理

  • 用户通过多对多关系与团队相关联。
  • 用户可以是团队中的“成员”或“管理员”,这由关系联接表中的“is_admin”布尔字段定义。
  • 只有团队管理员或站管理员才能管理团队的成员。
    • 这由 TeamPolicy 类定义,该类在 TeamCrudController 中引用以授权请求。

TeamCrudController 提供创建新团队和编辑现有团队所需的基本页面。

  • 创建一个新团队。
  • 编辑一个现有的团队。
  • 管理团队成员(通过“预览”链接)。这使用Backpack的“显示”操作和自定义blade模板。在此页面上,您可以邀请或添加新成员,将现有成员设置为团队管理员或普通成员,或从团队中删除用户。

邀请用户加入团队

邀请成员表单有2种添加成员的方式。您可以直接搜索现有应用用户并添加他们,或者您可以发送平台外的电子邮件邀请给人们。您可以将任意多个电子邮件地址添加到表单中,每个地址都会分别发送电子邮件。

  • 邀请电子邮件使用"/resources/views/emails/invite.blade.php"中的模板。
  • 注册链接预期是一个名为'register'的路由(route('register'))。
  • 发送的链接包括一个token查询参数,设置为$invite->token
    • 如果您愿意,可以使用此token来限制注册仅为有效邀请的人。
    • 默认情况下,此限制不包括在包中。
  • 在注册时,用户将自动添加到他们被邀请加入的任何团队中。这是通过将他们的电子邮件地址与任何挂起的邀请进行匹配来完成的,因此用户使用发送邀请的电子邮件注册非常重要。
  • 默认情况下,新用户是团队成员,而不是管理员。他们可以通过现有团队或网站管理员赋予管理员角色。

以特定角色邀请用户加入整个网站

您也可能希望邀请用户加入您的应用程序,而不将他们分配到团队中。此包包括一个"RoleInvite"模型、迁移和CrudController,让您可以管理此功能。

  • 要邀请新用户,请使用CrudController添加新的Role Invite。
  • 创建邀请后,将发送电子邮件。邀请电子邮件使用/resources/views/emails/role_invite.blade.php中的模板。
  • 类似于团队邀请
    • 注册链接预期定义为名为'register'的路由(route('register')),
    • 它包括一个token查询参数,可以用于仅允许具有有效邀请的人进行注册。
    • 在注册时,用户将自动分配Role Invite中的角色,这是通过将他们的电子邮件地址与任何挂起的角色邀请进行匹配来完成的。
  • 目前,您只能邀请单个电子邮件地址并分配单个角色。
    • 您可以通过发送多个角色邀请来绕过此限制 - 每个角色一个。但是,这将导致发送多封电子邮件,所以最好是一次邀请一个具有一个角色的用户,然后在注册后根据需要手动添加其他角色。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件