[REFACTOR] 簡化權限管理介面,整合權限設定至角色管理,並完成多語系支援
This commit is contained in:
@@ -29,8 +29,8 @@ class CompanyController extends Controller
|
||||
$query->where('status', $request->status);
|
||||
}
|
||||
|
||||
$limit = $request->input('limit', 10);
|
||||
$companies = $query->latest()->paginate($limit)->withQueryString();
|
||||
$per_page = $request->input('per_page', 10);
|
||||
$companies = $query->latest()->paginate($per_page)->withQueryString();
|
||||
|
||||
return view('admin.companies.index', compact('companies'));
|
||||
}
|
||||
|
||||
@@ -11,8 +11,9 @@ class DashboardController extends Controller
|
||||
public function index(Request $request)
|
||||
{
|
||||
// 每頁顯示筆數限制 (預設為 10)
|
||||
$perPage = $request->get('limit', 10);
|
||||
|
||||
$perPage = (int) request()->input('per_page', 10);
|
||||
if ($perPage <= 0) $perPage = 10;
|
||||
|
||||
// 從資料庫獲取真實統計數據
|
||||
$totalRevenue = \App\Models\Member\MemberWallet::sum('balance');
|
||||
$activeMachines = Machine::where('status', 'online')->count();
|
||||
|
||||
@@ -29,7 +29,7 @@ class DataConfigController extends Controller
|
||||
public function adminProducts()
|
||||
{
|
||||
return view('admin.placeholder', [
|
||||
'title' => '管理者可賣商品',
|
||||
'title' => '商品狀態',
|
||||
'description' => '管理者商品銷售權限',
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -13,13 +13,13 @@ class MachineController extends AdminController
|
||||
*/
|
||||
public function index(Request $request): View
|
||||
{
|
||||
$limit = $request->input('limit', 10);
|
||||
$per_page = $request->input('per_page', 10);
|
||||
$machines = Machine::query()
|
||||
->when($request->status, function ($query, $status) {
|
||||
return $query->where('status', $status);
|
||||
})
|
||||
->latest()
|
||||
->paginate($limit)
|
||||
->paginate($per_page)
|
||||
->withQueryString();
|
||||
|
||||
return view('admin.machines.index', compact('machines'));
|
||||
@@ -42,7 +42,7 @@ class MachineController extends AdminController
|
||||
*/
|
||||
public function logs(Request $request): View
|
||||
{
|
||||
$limit = $request->input('limit', 20);
|
||||
$per_page = $request->input('per_page', 20);
|
||||
$logs = \App\Models\Machine\MachineLog::with('machine')
|
||||
->when($request->level, function ($query, $level) {
|
||||
return $query->where('level', $level);
|
||||
@@ -51,7 +51,7 @@ class MachineController extends AdminController
|
||||
return $query->where('machine_id', $machineId);
|
||||
})
|
||||
->latest()
|
||||
->paginate($limit)->withQueryString();
|
||||
->paginate($per_page)->withQueryString();
|
||||
|
||||
$machines = Machine::select('id', 'name')->get();
|
||||
|
||||
|
||||
@@ -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功能權限設定',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user