[REFACTOR] 簡化權限管理介面,整合權限設定至角色管理,並完成多語系支援

This commit is contained in:
2026-03-16 13:47:16 +08:00
parent 09e1d0dc48
commit 1851e91c86
20 changed files with 411 additions and 296 deletions

View File

@@ -7,93 +7,19 @@ use Illuminate\Http\Request;
class PermissionController extends Controller
{
// APP功能管理
public function appFeatures()
{
return view('admin.placeholder', [
'title' => 'APP功能管理',
'description' => 'APP功能權限設定',
]);
}
// 資料設定權限
public function dataConfig()
{
return view('admin.placeholder', [
'title' => '資料設定權限',
'description' => '資料設定功能權限',
]);
}
// 銷售管理權限
public function sales()
{
return view('admin.placeholder', [
'title' => '銷售管理權限',
'description' => '銷售管理功能權限',
]);
}
// 機台管理權限
public function machines()
{
return view('admin.placeholder', [
'title' => '機台管理權限',
'description' => '機台管理功能權限',
]);
}
// 倉庫管理權限
public function warehouses()
{
return view('admin.placeholder', [
'title' => '倉庫管理權限',
'description' => '倉庫管理功能權限',
]);
}
// 分析管理權限
public function analysis()
{
return view('admin.placeholder', [
'title' => '分析管理權限',
'description' => '分析管理功能權限',
]);
}
// 稽核管理權限
public function audit()
{
return view('admin.placeholder', [
'title' => '稽核管理權限',
'description' => '稽核管理功能權限',
]);
}
// 遠端管理權限
public function remote()
{
return view('admin.placeholder', [
'title' => '遠端管理權限',
'description' => '遠端管理功能權限',
]);
}
// Line管理權限
public function line()
{
return view('admin.placeholder', [
'title' => 'Line管理權限',
'description' => 'Line管理功能權限',
]);
}
// 權限角色設定
public function roles()
{
$limit = request()->input('limit', 10);
$roles = \Spatie\Permission\Models\Role::withCount('users')->latest()->paginate($limit)->withQueryString();
return view('admin.permission.roles', compact('roles'));
$per_page = request()->input('per_page', 10);
$roles = \Spatie\Permission\Models\Role::with(['permissions', 'users'])->latest()->paginate($per_page)->withQueryString();
$all_permissions = \Spatie\Permission\Models\Permission::all()->groupBy(function($perm) {
if (str_starts_with($perm->name, 'menu.')) {
return 'menu';
}
return 'other';
});
return view('admin.permission.roles', compact('roles', 'all_permissions'));
}
/**
@@ -103,14 +29,20 @@ class PermissionController extends Controller
{
$validated = $request->validate([
'name' => 'required|string|max:255|unique:roles,name',
'permissions' => 'nullable|array',
'permissions.*' => 'string|exists:permissions,name',
]);
\Spatie\Permission\Models\Role::create([
$role = \Spatie\Permission\Models\Role::create([
'name' => $validated['name'],
'guard_name' => 'web',
'is_system' => false,
]);
if (!empty($validated['permissions'])) {
$role->syncPermissions($validated['permissions']);
}
return redirect()->back()->with('success', __('Role created successfully.'));
}
@@ -121,15 +53,17 @@ class PermissionController extends Controller
{
$role = \Spatie\Permission\Models\Role::findOrFail($id);
if ($role->is_system) {
return redirect()->back()->with('error', __('System roles cannot be renamed.'));
}
$validated = $request->validate([
'name' => 'required|string|max:255|unique:roles,name,' . $id,
'permissions' => 'nullable|array',
'permissions.*' => 'string|exists:permissions,name',
]);
$role->update(['name' => $validated['name']]);
if (!$role->is_system) {
$role->update(['name' => $validated['name']]);
}
$role->syncPermissions($validated['permissions'] ?? []);
return redirect()->back()->with('success', __('Role updated successfully.'));
}
@@ -154,15 +88,6 @@ class PermissionController extends Controller
return redirect()->back()->with('success', __('Role deleted successfully.'));
}
// 其他功能管理
public function others()
{
return view('admin.placeholder', [
'title' => '其他功能管理',
'description' => '其他特殊功能權限',
]);
}
// 帳號管理
public function accounts(Request $request)
{
@@ -187,11 +112,12 @@ class PermissionController extends Controller
$query->where('company_id', $request->company_id);
}
$limit = $request->input('limit', 10);
$users = $query->latest()->paginate($limit)->withQueryString();
$per_page = $request->input('per_page', 10);
$users = $query->latest()->paginate($per_page)->withQueryString();
$companies = auth()->user()->isSystemAdmin() ? \App\Models\System\Company::all() : collect();
$roles = \Spatie\Permission\Models\Role::all();
return view('admin.data-config.accounts', compact('users', 'companies'));
return view('admin.data-config.accounts', compact('users', 'companies', 'roles'));
}
/**
@@ -281,13 +207,4 @@ class PermissionController extends Controller
return redirect()->back()->with('success', __('Account deleted successfully.'));
}
// AI智能預測
public function aiPrediction()
{
return view('admin.placeholder', [
'title' => 'AI智能預測',
'description' => 'AI功能權限設定',
]);
}
}