| Server IP : 35.80.110.71 / Your IP : 216.73.216.221 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/switchyard/releases/20260626133231/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Concerns\HasUlids;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class WorkspaceMembership extends Model
{
use HasUlids;
public const ROLE_ADMIN = 'admin';
public const ROLE_EDITOR = 'editor';
public const ROLE_VIEWER = 'viewer';
public const CAP_AUDIT_READ = 'audit_read';
public const CAP_MANAGE_CONNECTIONS = 'manage_connections';
public const CAP_MANAGE_SOURCES = 'manage_sources';
public const CAP_ROUTE_LEAD = 'route_lead';
public const CAP_DISMISS_LEAD = 'dismiss_lead';
protected $fillable = ['workspace_id', 'user_id', 'role', 'capabilities'];
protected function casts(): array
{
return [
'capabilities' => 'array',
];
}
public function workspace(): BelongsTo
{
return $this->belongsTo(Workspace::class);
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function hasCapability(string $capability): bool
{
if ($this->role === self::ROLE_ADMIN) {
return true;
}
return in_array($capability, $this->capabilities ?? [], true);
}
}