1. Go to this page and download the library: Download tetranyble/kinship 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/ */
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Tetranyble\Kinship\Concerns\HasRolesAndPermissions;
class User extends Authenticatable
{
use HasRolesAndPermissions;
}
use Tetranyble\Kinship\Concerns\HasRolesAndPermissions;
use Tetranyble\Kinship\Contracts\WorkspaceSubject;
class User extends Authenticatable implements WorkspaceSubject
{
use HasRolesAndPermissions;
public function getWorkspaceIdentifier(): int|string|null
{
return $this->workspace_id;
}
}
use Illuminate\Database\Eloquent\Model;
use Tetranyble\Kinship\Contracts\Workspace as WorkspaceContract;
class Organization extends Model implements WorkspaceContract
{
public function getWorkspaceIdentifier(): int|string
{
return $this->getKey();
}
}
class User extends Authenticatable implements WorkspaceSubject
{
use HasRolesAndPermissions;
use \Tetranyble\Kinship\Concerns\BelongsToWorkspace;
}
class Organization extends Model implements WorkspaceContract
{
use \Tetranyble\Kinship\Concerns\IsWorkspace;
}
use Illuminate\Database\Eloquent\Model;
use Tetranyble\Kinship\Contracts\WorkspaceResolver;
final class CurrentWorkspaceResolver implements WorkspaceResolver
{
public function resolve(Model $subject): int|string|null
{
return app(CurrentWorkspace::class)->id();
}
}
if ($user->actAs('manager')) {
// The acting role is active only for this user, guard, and workspace.
}
$user->getActingRole();
$user->isActingAs();
$user->stopActingAs();
// The clearer role-assumption API is equivalent:
$user->assumeRole('manager');
$user->assumedRole();
$user->isAssumingRole();
$user->stopAssumingRole();