This commit is contained in:
21 files changed
+844
-15
No files matched your search
@@ -0,0 +1,42 @@
|
||||
<?php namespace RVR\Controller;
|
||||
|
||||
use RVR\Repository\UserRepository;
|
||||
use SokoWeb\Interfaces\Authorization\ISecured;
|
||||
use SokoWeb\Interfaces\Request\IRequest;
|
||||
use SokoWeb\Interfaces\Response\IContent;
|
||||
use SokoWeb\Response\JsonContent;
|
||||
|
||||
class UserSearchController implements ISecured
|
||||
{
|
||||
private IRequest $request;
|
||||
|
||||
private UserRepository $userRepository;
|
||||
|
||||
public function __construct(IRequest $request)
|
||||
{
|
||||
$this->request = $request;
|
||||
$this->userRepository = new UserRepository();
|
||||
}
|
||||
|
||||
public function authorize(): bool
|
||||
{
|
||||
return $this->request->user() !== null;
|
||||
}
|
||||
|
||||
public function searchUser(): IContent
|
||||
{
|
||||
$users = iterator_to_array($this->userRepository->searchByName($this->request->query('q')));
|
||||
usort($users, function($a, $b) {
|
||||
return strnatcmp($a->getDisplayName(), $b->getDisplayName());
|
||||
});
|
||||
|
||||
$results = [];
|
||||
foreach ($users as $user) {
|
||||
$results[] = ['value' => $user->getId(), 'label' => $user->getFullDisplayName()];
|
||||
}
|
||||
|
||||
return new JsonContent([
|
||||
'results' => $results
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user