Lae/app/Http/Controllers/Admin/AdminController.php

133 lines
3.2 KiB
PHP
Raw Normal View History

2022-11-21 07:47:07 +00:00
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\View\View;
class AdminController extends Controller
{
/**
* Display a listing of the resource.
*
* @return View
*/
public function index(): View
{
2023-01-10 13:42:27 +00:00
$admins = (new Admin)->paginate(50);
2022-11-21 07:47:07 +00:00
return view('admin.admins.index', compact('admins'));
}
/**
* Store a newly created resource in storage.
*
2023-02-07 09:03:47 +00:00
* @param Request $request
*
2022-11-21 07:47:07 +00:00
* @return RedirectResponse
*/
public function store(Request $request): RedirectResponse
{
$request->validate([
'email' => 'required|email|unique:admins,email',
2023-01-05 14:36:19 +00:00
'name' => 'required|string|max:30',
2022-11-21 07:47:07 +00:00
]);
// 随机密码
2022-12-11 11:47:30 +00:00
$password = Str::random();
2022-11-21 07:47:07 +00:00
2023-01-10 13:42:27 +00:00
$admin = (new Admin)->create([
2023-01-05 14:36:19 +00:00
'email' => $request->input('email'),
2022-11-21 07:47:07 +00:00
'password' => bcrypt($password),
]);
2023-02-07 09:03:47 +00:00
return redirect()->route('admin.admins.edit', $admin)->with('success', '管理员创建成功,密码为:' . $password . '。');
2022-11-21 07:47:07 +00:00
}
2022-12-27 16:25:22 +00:00
/**
* Show the form for creating a new resource.
*
* @return View
*/
public function create(): View
{
return view('admin.admins.create');
}
2022-11-21 07:47:07 +00:00
/**
* Show the form for editing the specified resource.
*
2023-02-07 09:03:47 +00:00
* @param Admin $admin
*
2022-11-21 07:47:07 +00:00
* @return View
*/
public function edit(Admin $admin): View
{
return view('admin.admins.edit', compact('admin'));
}
/**
* Update the specified resource in storage.
*
2023-02-07 09:03:47 +00:00
* @param Request $request
* @param Admin $admin
*
2022-11-21 07:47:07 +00:00
* @return RedirectResponse
*/
public function update(Request $request, Admin $admin): RedirectResponse
{
$request->validate([
2023-02-07 09:03:47 +00:00
'email' => 'required|email|unique:admins,email,' . $admin->id,
2023-01-05 14:36:19 +00:00
'name' => 'required|string|max:30',
2022-11-21 07:47:07 +00:00
]);
$msg = '管理员信息更新成功';
if ($request->filled('reset_password')) {
// 随机密码
2022-12-11 11:47:30 +00:00
$password = Str::random();
2022-11-21 07:47:07 +00:00
2023-02-07 09:03:47 +00:00
$msg .= ',新的密码为:' . $password;
2022-11-21 07:47:07 +00:00
$admin->password = bcrypt($password);
}
$msg .= '。';
2023-01-05 14:36:19 +00:00
$admin->name = $request->input('name');
$admin->email = $request->input('email');
2022-11-21 07:47:07 +00:00
$admin->save();
return redirect()->back()->with('success', $msg);
}
/**
* Remove the specified resource from storage.
*
2023-02-07 09:03:47 +00:00
* @param Admin $admin
*
2022-11-21 07:47:07 +00:00
* @return RedirectResponse
*/
public function destroy(Admin $admin): RedirectResponse
{
// 不能删除自己
if ($admin->id == auth('admin')->id()) {
return redirect()->back()->with('error', '不能删除自己。');
}
// 不能删除最后一个管理员
2023-01-10 13:42:27 +00:00
if ((new Admin)->count() == 1) {
2022-11-21 07:47:07 +00:00
return redirect()->back()->with('error', '不能删除最后一个管理员。');
}
$admin->delete();
return redirect()->route('admin.admins.index')->with('success', '管理员已删除。');
}
}