1. Go to this page and download the library: Download malico/teams library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
malico / teams example snippets
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Malico\Teams\HasTeams;
class User extends Authenticatable
{
use HasTeams;
// Your existing model code...
}
use Malico\Teams\Teams;
public function boot(): void
{
Teams::role('admin', 'Administrator', [
'team:read',
'team:update',
'team:invite-members',
'team:remove-members',
])->description('Team administrator with management privileges');
Teams::role('member', 'Member', [
'team:read',
])->description('Standard team member with read access');
}
use Malico\Teams\Contracts\CreatesTeams;
// Create a regular team
$team = app(CreatesTeams::class)->create($user, [
'name' => 'Development Team',
]);
// Create a personal team
$personalTeam = app(CreatesTeams::class)->create($user, [
'name' => 'John\'s Personal Team',
'personal_team' => true,
]);
use Malico\Teams\Contracts\InvitesTeamMembers;
use Malico\Teams\Contracts\AcceptsTeamInvitations;
use Malico\Teams\Contracts\DeclinesTeamInvitations;
use Malico\Teams\Contracts\AddsTeamMembers;
use Malico\Teams\Contracts\RemovesTeamMembers;
// Invite a team member (sends email)
app(InvitesTeamMembers::class)->invite($user, $team, '[email protected]', 'admin');
// Add a team member directly (if user exists)
app(AddsTeamMembers::class)->add($teamOwner, $team, '[email protected]', 'member');
// Remove a team member
app(RemovesTeamMembers::class)->remove($user, $team, $memberUser);
// Accept an invitation
app(AcceptsTeamInvitations::class)->accept($user, $teamInvitation);
// Decline an invitation
app(DeclinesTeamInvitations::class)->decline($user, $teamInvitation);
use Malico\Teams\Contracts\UpdatesTeamNames;
use Malico\Teams\Contracts\UpdatesTeamMemberRoles;
// Update team name
app(UpdatesTeamNames::class)->update($user, $team, ['name' => 'New Team Name']);
// Update member role
app(UpdatesTeamMemberRoles::class)->update($user, $team, $memberId, 'admin');
// Check if user belongs to a team
if ($user->belongsToTeam($team)) {
// User is a team member
}
// Check user's role on a team
if ($user->hasTeamRole($team, 'admin')) {
// User is an admin on this team
}
// Check specific permissions
if ($user->hasTeamPermission($team, 'team:update')) {
// User can update this team
}
// Get user's current team
$currentTeam = $user->currentTeam;
// Switch to a different team
$user->switchTeam($team);
// Get all user's teams (owned + member)
$teams = $user->allTeams();
// Get teams the user owns
$ownedTeams = $user->ownedTeams;
// Get teams where user is a member (not owner)
$memberTeams = $user->teams;
// Get user's personal team
$personalTeam = $user->personalTeam();
// Check if team is user's current team
if ($user->isCurrentTeam($team)) {
// This is the active team
}
use Malico\Teams\Contracts\DeletesTeams;
// Delete a team (validates permissions first)
app(DeletesTeams::class)->delete($user, $team);
use Malico\Teams\Teams;
public function boot(): void
{
Teams::createTeamsUsing(CustomCreateTeam::class);
Teams::inviteTeamMembersUsing(CustomInviteTeamMember::class);
// ... other actions
}
use Malico\Teams\Teams;
Teams::useUserModel(App\Models\CustomUser::class);
Teams::useTeamModel(App\Models\CustomTeam::class);
Teams::useTeamInvitationModel(App\Models\CustomTeamInvitation::class);
Teams::useMembershipModel(App\Models\CustomMembership::class);
Teams::invitationDurationDays(14); // Default is 7 days