feat: 인증 및 권한 시스템 개선
- LoginController: 로그인 처리 개선 - UserPermissionController: 권한 관리 기능 개선 - User 모델: 권한 관련 메서드 추가 - AuthService: 인증 서비스 로직 개선 - Middleware 추가 - bootstrap/app.php: 미들웨어 등록 - 권한 관리 뷰 개선 (user-permissions, users)
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user