mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-19 19:24:03 +00:00
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\Request;
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class CompanyResource extends JsonResource
|
class CompanyResource extends JsonResource
|
||||||
{
|
{
|
||||||
@@ -33,6 +35,23 @@ class CompanyResource extends JsonResource
|
|||||||
return new UserResource($this->owner);
|
return new UserResource($this->owner);
|
||||||
}),
|
}),
|
||||||
'roles' => RoleResource::collection($this->roles),
|
'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>
|
</span>
|
||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<span class="text-sm">{{ company.name }}</span>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ export interface Company {
|
|||||||
address?: Address
|
address?: Address
|
||||||
owner?: User
|
owner?: User
|
||||||
roles: Role[]
|
roles: Role[]
|
||||||
|
user_role?: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CompanySetting {
|
export interface CompanySetting {
|
||||||
|
|||||||
Reference in New Issue
Block a user