PHP code example of misaf / laravel-tenancy-support

1. Go to this page and download the library: Download misaf/laravel-tenancy-support 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/ */

    

misaf / laravel-tenancy-support example snippets


namespace Misaf\TenancySupport\Contracts;

interface TenantResolver
{
    public function getTenantId(): int|string|null;
}

namespace Misaf\TenancySupport\Contracts;

interface TeamResolver
{
    public function getTeamId(): int|string|null;
}

namespace Misaf\TenancySupport\Contracts;

interface TenantAccessResolver
{
    public function canAccessAllTenants(): bool;
}

namespace Misaf\TenancySupport\Contracts;

interface TeamAccessResolver
{
    public function canAccessAllTeams(): bool;
}

namespace App\Tenancy;

use Misaf\TenancySupport\Contracts\TeamAccessResolver;
use Misaf\TenancySupport\Contracts\TeamResolver;
use Misaf\TenancySupport\Contracts\TenantAccessResolver;
use Misaf\TenancySupport\Contracts\TenantResolver;

final class RequestTenantResolver implements TenantResolver, TenantAccessResolver, TeamResolver, TeamAccessResolver
{
    public function getTenantId(): int|string|null
    {
        return auth()->user()?->tenant_id;
    }

    public function getTeamId(): int|string|null
    {
        return auth()->id();
    }

    public function canAccessAllTenants(): bool
    {
        return (bool) auth()->user()?->is_super_admin;
    }

    public function canAccessAllTeams(): bool
    {
        return (bool) auth()->user()?->is_super_admin;
    }
}

use App\Tenancy\RequestTenantResolver;
use Misaf\TenancySupport\Contracts\TeamResolver;
use Misaf\TenancySupport\Contracts\TenantResolver;

public function register(): void
{
    $this->app->scoped(TenantResolver::class, RequestTenantResolver::class);
    $this->app->scoped(TeamResolver::class, RequestTenantResolver::class);
}

use Illuminate\Database\Eloquent\Model;
use Misaf\TenancySupport\Concerns\BelongsToTenant;

final class Invoice extends Model
{
    use BelongsToTenant;
}

use Illuminate\Database\Eloquent\Model;
use Misaf\TenancySupport\Concerns\BelongsToTeam;

final class Task extends Model
{
    use BelongsToTeam;
}

use App\Models\Invoice;
use Misaf\TenancySupport\Support\CurrentTenant;

$allInvoices = CurrentTenant::withAllTenants(
    fn () => Invoice::query()->latest()->get()
);

use App\Models\Task;
use Misaf\TenancySupport\Support\CurrentTeam;

$allTeamTasks = CurrentTeam::withAllTeams(
    fn () => Task::query()->latest()->get()
);