Initial project import for team collaboration.
Exclude local docs, MCP, and secrets via gitignore. Made-with: Cursor
This commit is contained in:
0
app/Filters/.gitkeep
Normal file
0
app/Filters/.gitkeep
Normal file
48
app/Filters/AdminAuthFilter.php
Normal file
48
app/Filters/AdminAuthFilter.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Filters;
|
||||
|
||||
use CodeIgniter\Filters\FilterInterface;
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use Config\Roles;
|
||||
|
||||
/**
|
||||
* 관리자 전용 접근 필터.
|
||||
* logged_in 이고 mb_level 이 SUPER_ADMIN(4) 또는 LOCAL_ADMIN(3) 일 때만 통과.
|
||||
*/
|
||||
class AdminAuthFilter implements FilterInterface
|
||||
{
|
||||
public function before(RequestInterface $request, $arguments = null)
|
||||
{
|
||||
if (! session()->get('logged_in')) {
|
||||
return redirect()->to(site_url('login'))->with('error', '로그인이 필요합니다.');
|
||||
}
|
||||
|
||||
$level = (int) session()->get('mb_level');
|
||||
if ($level !== Roles::LEVEL_SUPER_ADMIN && $level !== Roles::LEVEL_LOCAL_ADMIN) {
|
||||
return redirect()->to(site_url('/'))->with('error', '관리자만 접근할 수 있습니다.');
|
||||
}
|
||||
|
||||
// Super admin: 지자체 미선택 시 지자체 선택 페이지로 유도 (지자체 선택·지자체 CRUD는 미선택도 허용)
|
||||
$uri = $request->getUri();
|
||||
$seg2 = $uri->getSegment(2);
|
||||
$allowedWithoutSelection = ['select-local-government', 'local-governments'];
|
||||
if ($level === Roles::LEVEL_SUPER_ADMIN && ! in_array($seg2, $allowedWithoutSelection, true)) {
|
||||
$selected = session()->get('admin_selected_lg_idx');
|
||||
if ($selected === null || $selected === '') {
|
||||
return redirect()->to(site_url('admin/select-local-government'))->with('error', '작업할 지자체를 먼저 선택해 주세요.');
|
||||
}
|
||||
}
|
||||
|
||||
helper('admin');
|
||||
return null;
|
||||
}
|
||||
|
||||
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
|
||||
{
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user