You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.6 KiB
70 lines
1.6 KiB
<?php
|
|
|
|
use Kirby\Cms\App;
|
|
use Kirby\Cms\Find;
|
|
use Kirby\Toolkit\Escape;
|
|
|
|
return [
|
|
'users' => [
|
|
'pattern' => 'users',
|
|
'action' => function () {
|
|
$kirby = App::instance();
|
|
$role = $kirby->request()->get('role');
|
|
$roles = $kirby->roles()->toArray(fn ($role) => [
|
|
'id' => $role->id(),
|
|
'title' => $role->title(),
|
|
]);
|
|
|
|
return [
|
|
'component' => 'k-users-view',
|
|
'props' => [
|
|
'role' => function () use ($kirby, $roles, $role) {
|
|
if ($role) {
|
|
return $roles[$role] ?? null;
|
|
}
|
|
},
|
|
'roles' => array_values($roles),
|
|
'users' => function () use ($kirby, $role) {
|
|
$users = $kirby->users();
|
|
|
|
if (empty($role) === false) {
|
|
$users = $users->role($role);
|
|
}
|
|
|
|
// sort users alphabetically
|
|
$users = $users->sortBy('username', 'asc');
|
|
|
|
// paginate
|
|
$users = $users->paginate([
|
|
'limit' => 20,
|
|
'page' => $kirby->request()->get('page')
|
|
]);
|
|
|
|
return [
|
|
'data' => $users->values(fn ($user) => [
|
|
'id' => $user->id(),
|
|
'image' => $user->panel()->image(),
|
|
'info' => Escape::html($user->role()->title()),
|
|
'link' => $user->panel()->url(true),
|
|
'text' => Escape::html($user->username())
|
|
]),
|
|
'pagination' => $users->pagination()->toArray()
|
|
];
|
|
},
|
|
]
|
|
];
|
|
}
|
|
],
|
|
'user' => [
|
|
'pattern' => 'users/(:any)',
|
|
'action' => function (string $id) {
|
|
return Find::user($id)->panel()->view();
|
|
}
|
|
],
|
|
'user.file' => [
|
|
'pattern' => 'users/(:any)/files/(:any)',
|
|
'action' => function (string $id, string $filename) {
|
|
return Find::file('users/' . $id, $filename)->panel()->view();
|
|
}
|
|
],
|
|
];
|
|
|