teams
- Introduction
- Refer To Team As
- Accessing The User’s Teams
- Accessing The User’s Current Team
- Team Roles
- Helper Methods
- Events
Introduction
Larakits supports team billing that allows your user’s to create and join teams. The team is a great way for sharing same resources among the team member’s.
To enable team, you have to use Larakits\CanJoinTeam
trait into your User
model.
<?php
namespace App;
use Larakits\Billable;
use Larakits\CanJoinTeam;
use Larakits\HasApiToken;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable, Billable, HasApiToken, CanJoinTeam;
}
You may also need to configure your team billing plans. Please consult the configuration team billing plans documentation.
Refer To Team As
By default, Larakits uses /teams
URI and teams
word to refer your team in the whole application. You may change it by simply calling Larakits::referToTeamAs
method in the registered
method of App\Providers\LarakitsServiceProvider
.
Larakits::referToTeamAs('workspace');
Now, all of the /teams
URI will be /workspaces
and all of the team
and teams
words will be workspace
and workspaces
for your application.
Accessing The User’s Teams
The Larakits\CanJoinTeam
trait will give you many helpful method to access user’s teams.
foreach($user->teams as $team) {
echo $team->name;
}
For every iteration, it will return the instance of App\Team
model. If you want to use different namespace
for your team model, make sure you are registering your team model in the booted
method of App\Providers\LarakitsServiceProvider
.
Larakits::useTeamModel(\App\Models\Team::class)
Accessing The User’s Current Team
Larakits allows your user to switch one team to another team from the user profile dropdown menu at the top right of the screen. Every time a user switches team, Larakits will make a record of the current team.
You can access the current team by call currentTeam
property of the App\User
model.
echo $user->currentTeam->name
The currentTeam
property will help you to show current team related data in your application.
Team Roles
By default Larakits only offer owner
and member
two roles. You may want to define your own roles with default roles.
Define Roles
To define roles you have to call Larakits::useRoles
method in the booted
method of App\Providers\LarakitsServiceProvider
.
Larakits::useRoles([
'author' => 'Author',
'editor' => 'Editor'
]);
Get User’s Role
$user->roleOn($team);
Helper Methods
The helpful methods you will get when you inlcude Larakits\CanJoinTeam
trait in the App\User
model:
Get All Teams Owned By The User
foreach($user->ownedTeams as $team) {
//
}
Determine Ownership Of The Given Team
if($user->ownsTeam()) {
//
}
Determine Ownership Of The Current Team
if($user->ownsCurrentTeam()) {
//
}
Determine The User’s On The Given Team
if($user->onTeam($team)) {
//
}
Events
Larakits dispatches many events when processing team related actions. All the events listed below are also registered in the $listen
array of the App\Providers\EventServiceProvider
class:
Event | Description |
---|---|
Larakits\Events\Team\Created |
A team has been created |
Larakits\Events\Team\Deleted |
A team has been deleted |
Larakits\Events\Team\Switched |
A user has been switched current team |
Larakits\Events\Team\Member\Addedd |
A user has joined on a team |
Larakits\Events\Team\Member\Removed |
A user has been removed from a team |
Larakits\Events\Team\Member\Left |
A user has left from a team |
Larakits\Events\Team\Member\Invited |
A user has been invited to join a team |
Larakits\Events\Team\Subscription\TrialPeriodExpired |
A team’s trial period was expired |
Larakits\Events\Team\Subscription\TeamSubscribed |
A team was subscribed |
Larakits\Events\Team\Subscription\SubscriptionUpdated |
A team’s subscription was updated |
Larakits\Events\Team\Subscription\SubscriptionCancelled |
A team’s subscription was cancelled |
Larakits\Events\Team\Subscription\InvoiceCreated |
Invoice is created for a team |
Larakits\Events\Team\Plan\Purchased |
A team purchased a product |