feat: 인증 및 권한 시스템 개선

- LoginController: 로그인 처리 개선
- UserPermissionController: 권한 관리 기능 개선
- User 모델: 권한 관련 메서드 추가
- AuthService: 인증 서비스 로직 개선
- Middleware 추가
- bootstrap/app.php: 미들웨어 등록
- 권한 관리 뷰 개선 (user-permissions, users)
This commit is contained in:
2025-11-30 21:04:32 +09:00
parent 76c8a94e4f
commit 127c2fe877
10 changed files with 234 additions and 16 deletions

View File

@@ -15,6 +15,21 @@ public function __construct(UserPermissionService $userPermissionService)
$this->userPermissionService = $userPermissionService;
}
/**
* Guard 이름 검증 (일반 관리자는 API만 사용 가능)
*/
protected function getValidatedGuardName(Request $request): string
{
$guardName = $request->input('guard_name', 'api');
// 슈퍼관리자가 아니면 web guard 사용 불가
if (! auth()->user()?->is_super_admin && $guardName === 'web') {
return 'api';
}
return $guardName;
}
/**
* 사용자의 tenant_id 조회 (세션이 'all'이거나 미선택일 때 사용)
*/
@@ -41,7 +56,7 @@ protected function getEffectiveTenantId(Request $request, ?int $userId = null):
public function getMatrix(Request $request)
{
$userId = $request->input('user_id');
$guardName = $request->input('guard_name', 'api');
$guardName = $this->getValidatedGuardName($request);
if (! $userId) {
return view('user-permissions.partials.empty-state');
@@ -71,7 +86,7 @@ public function toggle(Request $request)
$userId = $request->input('user_id');
$menuId = $request->input('menu_id');
$permissionType = $request->input('permission_type');
$guardName = $request->input('guard_name', 'api');
$guardName = $this->getValidatedGuardName($request);
$tenantId = $this->getEffectiveTenantId($request, $userId);
$newValue = $this->userPermissionService->togglePermission(
@@ -99,7 +114,7 @@ public function toggle(Request $request)
public function allowAll(Request $request)
{
$userId = $request->input('user_id');
$guardName = $request->input('guard_name', 'api');
$guardName = $this->getValidatedGuardName($request);
$tenantId = $this->getEffectiveTenantId($request, $userId);
$this->userPermissionService->allowAllPermissions($userId, $tenantId, $guardName);
@@ -121,7 +136,7 @@ public function allowAll(Request $request)
public function denyAll(Request $request)
{
$userId = $request->input('user_id');
$guardName = $request->input('guard_name', 'api');
$guardName = $this->getValidatedGuardName($request);
$tenantId = $this->getEffectiveTenantId($request, $userId);
$this->userPermissionService->denyAllPermissions($userId, $tenantId, $guardName);
@@ -143,7 +158,7 @@ public function denyAll(Request $request)
public function reset(Request $request)
{
$userId = $request->input('user_id');
$guardName = $request->input('guard_name', 'api');
$guardName = $this->getValidatedGuardName($request);
$tenantId = $this->getEffectiveTenantId($request, $userId);
$this->userPermissionService->resetToDefaultPermissions($userId, $tenantId, $guardName);