trafficmonitor/app/Controllers/Admin/UserController.php

50 lines
1.6 KiB
PHP

<?php
namespace App\Controllers\Admin;
use App\DTOs\UserDTO;
use App\Entities\UserEntity;
use CodeIgniter\HTTP\RedirectResponse;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Validation\Validation;
use Psr\Log\LoggerInterface;
use App\Services\UserService;
class UserController extends AdminController
{
/**
* @property UserService $service
* IDE에게 protected $service 속성이 LocalService 타입임을 알려줍니다.
*/
public const PATH = 'user';
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
if ($this->service === null) {
$this->service = service('localauth');
}
$this->addActionPaths(self::PATH);
}
protected function getFormRule(string $action, string $field, string $rule): array
{
switch ($field) {
case 'role':
$field = "{$field}.*";
break;
}
return parent::getFormRule($action, $field, $rule);
}
//Index,FieldForm관련.
protected function create_process(string $action, array $viewDatas): string|RedirectResponse
{
$dto = new UserDTO($this->request->getPost());
$this->doValidation($action);
$entity = $this->service->create($dto);
return redirect()
->route('admin/user/view', [$entity->getPK()])
->with('message', "{$entity->getTitle()} 계정이 등록되었습니다.");
}
}