Files
sam-manage/app/Http/Controllers/RoleController.php

74 lines
1.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Services\RoleService;
use Illuminate\Http\Request;
use Illuminate\View\View;
class RoleController extends Controller
{
public function __construct(
private readonly RoleService $roleService
) {}
/**
* 역할 목록 (Blade 화면만)
*/
public function index(Request $request): View
{
return view('roles.index');
}
/**
* 역할 생성 화면
*/
public function create(): View
{
$tenantId = session('selected_tenant_id');
// 권한 목록 조회 (현재 테넌트 또는 전체)
$query = \Spatie\Permission\Models\Permission::query()
->where('guard_name', 'web')
->orderBy('name');
if ($tenantId) {
$query->where('tenant_id', $tenantId);
}
$permissions = $query->get(['id', 'name']);
return view('roles.create', compact('permissions'));
}
/**
* 역할 수정 화면
*/
public function edit(int $id): View
{
$role = $this->roleService->getRoleById($id);
if (! $role) {
abort(404, '역할을 찾을 수 없습니다.');
}
$tenantId = session('selected_tenant_id');
// 권한 목록 조회 (현재 테넌트 또는 전체)
$query = \Spatie\Permission\Models\Permission::query()
->where('guard_name', 'web')
->orderBy('name');
if ($tenantId) {
$query->where('tenant_id', $tenantId);
}
$permissions = $query->get(['id', 'name']);
// 현재 역할이 가진 권한 ID 목록
$rolePermissionIds = $role->permissions->pluck('id')->toArray();
return view('roles.edit', compact('role', 'permissions', 'rolePermissionIds'));
}
}