$this->permissionService->assignmentMap(User::class), 'permissionOptions' => PermissionOptionResource::collection( $this->permissionService->permissionOptions(User::class, null), )->resolve(), 'status' => session('status'), 'users' => UserResource::collection( User::query() ->orderBy('name') ->get(), )->resolve(), ]); } public function create(): Response { return Inertia::render('admin/users/Create'); } public function store(StoreManagedUserRequest $request): RedirectResponse { $validated = $request->validated(); $user = User::query()->create([ 'name' => Arr::get($validated, 'name'), 'email' => Arr::get($validated, 'email'), 'password' => Arr::get($validated, 'password'), 'must_change_password_on_next_login' => (bool) Arr::get($validated, 'must_change_password_on_next_login', true), ]); $this->avatars->generate($user); return to_route('admin.users.index') ->with('status', 'User was created.'); } public function edit(User $user): Response { return Inertia::render('admin/users/Edit', [ 'user' => UserResource::make($user)->resolve(), ]); } public function save(UpdateManagedUserRequest $request, User $user): RedirectResponse { $validated = $request->validated(); $user->fill([ 'name' => Arr::get($validated, 'name'), 'email' => Arr::get($validated, 'email'), 'must_change_password_on_next_login' => (bool) Arr::get($validated, 'must_change_password_on_next_login', true), ]); if (filled(Arr::get($validated, 'password'))) { $user->password = Arr::get($validated, 'password'); } $user->save(); return to_route('admin.users.index') ->with('status', "{$user->name} was updated."); } public function update(SyncUserGlobalPermissionsRequest $request, User $user): RedirectResponse { $validated = $request->validated(); $permissions = Arr::get($validated, 'permissions', []); $this->permissionService->sync($user, null, $permissions); return to_route('admin.users.index') ->with('status', "{$user->name} global permissions were updated."); } }