Show user role in company switcher
CompanyResource now includes user_role — the authenticated user's Bouncer role title scoped to that company (e.g. "Owner"). Displayed as a subtitle under each company name in the switcher dropdown.
This commit is contained in:
@@ -4,6 +4,8 @@ namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CompanyResource extends JsonResource
|
||||
{
|
||||
@@ -33,6 +35,23 @@ class CompanyResource extends JsonResource
|
||||
return new UserResource($this->owner);
|
||||
}),
|
||||
'roles' => RoleResource::collection($this->roles),
|
||||
'user_role' => $this->getUserRoleTitle(),
|
||||
];
|
||||
}
|
||||
|
||||
private function getUserRoleTitle(): ?string
|
||||
{
|
||||
$user = Auth::user();
|
||||
|
||||
if (! $user) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return DB::table('assigned_roles')
|
||||
->join('roles', 'roles.id', '=', 'assigned_roles.role_id')
|
||||
->where('assigned_roles.entity_id', $user->id)
|
||||
->where('assigned_roles.entity_type', get_class($user))
|
||||
->where('assigned_roles.scope', $this->id)
|
||||
->value('roles.title');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,9 @@
|
||||
</span>
|
||||
<div class="flex flex-col">
|
||||
<span class="text-sm">{{ company.name }}</span>
|
||||
<span v-if="company.user_role" class="text-xs text-subtle">
|
||||
{{ company.user_role }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -17,6 +17,7 @@ export interface Company {
|
||||
address?: Address
|
||||
owner?: User
|
||||
roles: Role[]
|
||||
user_role?: string | null
|
||||
}
|
||||
|
||||
export interface CompanySetting {
|
||||
|
||||
Reference in New Issue
Block a user