update($request->input('attributes')); return new UserResource($user); } /** * Change user storage capacity * * @param Request $request * @param $id * @return UserStorageResource */ public function change_storage_capacity(Request $request, $id) { // TODO: validacia $user = User::findOrFail($id); $user->settings()->update($request->input('attributes')); return new UserStorageResource($user); } /** * Send user password reset link * * @param $id * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response */ public function send_password_reset_email($id) { $user = User::findOrFail($id); $user->sendPasswordResetNotification(Str::random(60)); return response('Done!', 204); } /** * Delete user with all user data * * @param Request $request * @param $id * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response * @throws \Exception */ public function delete_user(Request $request, $id) { $user = User::findOrFail($id); // Check for self deleted account if ($user->id === Auth::id()) { abort(406, 'You can\'t delete your account'); } // Validate user name if ( $user->name !== $request->name) abort(403); $files = FileManagerFile::where('user_id', $user->id)->get(); $shares = Share::where('user_id', $user->id)->get(); $folders = FileManagerFolder::where('user_id', $user->id)->get(); // Remove all files and thumbnails $files->each(function ($file) { // Delete file Storage::delete('/file-manager/' . $file->basename); // Delete thumbnail if exist if (!is_null($file->thumbnail)) { Storage::delete('/file-manager/' . $file->getOriginal('thumbnail')); } // Delete file permanently $file->forceDelete(); }); // Remove avatar if ($user->avatar) { Storage::delete('/avatars/' . $user->avatar); } // Remove folders & shares $folders->each->forceDelete(); $shares->each->forceDelete(); // Remove favourites $user->settings->delete(); $user->favourites()->sync([]); // Delete user $user->delete(); return response('Done!', 204); } }