57 lines
2.2 KiB
PHP
57 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Modules\Users\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Validation\Rule;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
final class UserController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
return view('stylist-theme-admin::administration.users.index', ['users' => User::with('roles')->latest()->paginate(20)]);
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
return view('stylist-theme-admin::administration.users.create', ['roles' => Role::orderBy('name')->pluck('name')]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$data = $request->validate(['name' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', 'unique:users,email'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'roles' => ['array'], 'roles.*' => ['string', 'exists:roles,name']]);
|
|
$user = User::create($data);
|
|
$user->syncRoles($data['roles'] ?? []);
|
|
|
|
return redirect()->route('administration.users.index')->with('status', 'User created.');
|
|
}
|
|
|
|
public function edit(User $user)
|
|
{
|
|
return view('stylist-theme-admin::administration.users.edit', ['user' => $user->load('roles'), 'roles' => Role::orderBy('name')->pluck('name')]);
|
|
}
|
|
|
|
public function update(Request $request, User $user)
|
|
{
|
|
$data = $request->validate(['name' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', Rule::unique('users', 'email')->ignore($user)], 'password' => ['nullable', 'string', 'min:8', 'confirmed'], 'roles' => ['array'], 'roles.*' => ['string', 'exists:roles,name']]);
|
|
if (blank($data['password'] ?? null)) {
|
|
unset($data['password']);
|
|
}
|
|
$user->update($data);
|
|
$user->syncRoles($data['roles'] ?? []);
|
|
|
|
return redirect()->route('administration.users.index')->with('status', 'User updated.');
|
|
}
|
|
|
|
public function destroy(User $user)
|
|
{
|
|
abort_if($user->is(auth()->user()), 422, 'You cannot delete your own account.');
|
|
$user->delete();
|
|
|
|
return redirect()->route('administration.users.index')->with('status', 'User deleted.');
|
|
}
|
|
}
|