40 lines
967 B
PHP
40 lines
967 B
PHP
<?php
|
|
|
|
namespace App\Support;
|
|
|
|
use App\Models\AdminUser;
|
|
|
|
final class AdminAuthProfile
|
|
{
|
|
/**
|
|
* @return array{
|
|
* id: int,
|
|
* username: string,
|
|
* nickname: string,
|
|
* email: ?string,
|
|
* permissions: list<string>,
|
|
* navigation: list<array{
|
|
* segment: string,
|
|
* label: string,
|
|
* href: string,
|
|
* activeMatchPrefix?: string,
|
|
* requiredAny?: list<string>
|
|
* }>
|
|
* }
|
|
*/
|
|
public static function fromAdmin(AdminUser $admin): array
|
|
{
|
|
$fresh = $admin->fresh();
|
|
$permissionSlugs = $fresh->adminPermissionSlugs();
|
|
|
|
return [
|
|
'id' => $fresh->id,
|
|
'username' => $fresh->username,
|
|
'nickname' => $fresh->name,
|
|
'email' => $fresh->email,
|
|
'permissions' => $permissionSlugs,
|
|
'navigation' => AdminAuthorizationRegistry::visibleNavigationItems($permissionSlugs),
|
|
];
|
|
}
|
|
}
|