messserli90/teamwork

Laravel的用户与团队关联邀请系统

0.2.0 2020-08-29 20:32 UTC

This package is auto-updated.

Last update: 2024-09-29 05:55:34 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

Teamwork为您的Laravel应用程序添加用户-团队关联和邀请系统

安装

您可以通过Composer安装此包

composer require messerli90/teamwork

配置

要发布Teamwork的配置文件,运行

php artisan vendor:publish --provider="Messerli90\Teamwork\TeamworkServiceProvider" --tag=config

这将为您创建config/teamwork.php。默认配置应该可以满足您的需求,但如果您需要更改表/模型名称,您应该在这里进行更改。配置还提供了一个团队成员可能具有的可能角色的数组,可以对其进行更改。

迁移

运行migration命令以生成Teamwork所需的所有表格。如果您将用户或团队存储在usersteams表中,请务必修改config/teamwork.php配置。

php artisan migrate

迁移之后,将创建2个新的表

  • team_user -- 存储团队与其(用户)成员之间的多对多关系。还包括一个“角色”列,默认为:成员。
  • team_invites -- 存储团队和电子邮件地址之间的待处理邀请。

用法

Teamwork Facade

您可以通过传递用户模型或电子邮件地址来邀请用户加入团队

Teamwork::inviteToTeam($user, $team, callable $success)

检查给定的用户或电子邮件地址是否为提供的团队提供了待处理的邀请

Teamwork::hasPendingInvite($user, $team) // bool

从接受/拒绝令牌获取邀请模型的实例

Teamwork::getInviteFromAcceptToken($token)
Teamwork::getInviteFromDenyToken($token)

接受/拒绝邀请

Teamwork::acceptInvite(TeamInvite $invite)
Teamwork::denyInvite(TeamInvite $invite)

Team - HasMembers特性

创建自己的Team模型并添加HasMembers特性。该特性为invitesusersowner添加关系。

<?php
use Messerli90\Teamwork\HasMembers;

class Team extends Model {
    use HasMembers;
}

确定用户是否是团队的成员

$team = App\Team::find(1);
$user = App\User::find(2);

$team->hasUser($user); // bool

User - HasTeams特性

HasTeams特性添加到您的用户模型中。该特性为teamsownedTeamsinvites添加关系。

<?php
use Messerli90\Teamwork\HasTeams;

class User extends Authenticatable {
    use HasTeams;
}

检查用户是否拥有任何团队,或提供的团队

$user = App\User::find(1);

// Owns ANY team
$user->ownsTeam(); // bool

// Owns provided team
$team = App\Team::find(1);
$user->ownsTeam($team); // bool

将用户附加到团队

$user = App\User::find(1);
$team = App\Team::find(1);
$role = 'member' // Default allowed roles: member, owner, admin, moderator

$user->attachTeam($team, $role);

从团队中移除用户

$user = App\User::find(1);
$team = App\Team::find(1);

$user->detachTeam($team);

切换用户的角色

$user = App\User::find(1);
$team = App\Team::find(1);

$user->switchRole($team, 'moderator')

测试

composer test

更新日志

请参阅更新日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全

如果您发现任何与安全相关的漏洞,请通过电子邮件发送至michaelamesserli@gmail.com,而不是使用问题跟踪器。

致谢

特别感谢

此包以mpociot/teamwork作为起点。

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。