pterodactyl = $pterodactyl; } /** * Display a listing of the resource. * * @param Request $request * @return Application|Factory|View|Response */ public function index(Request $request) { return view('admin.users.index'); } /** * Display the specified resource. * * @param User $user * @return Application|Factory|View|Response */ public function show(User $user) { return view('admin.users.show')->with([ 'user' => $user ]); } /** * Show the form for editing the specified resource. * * @param User $user * @return Application|Factory|View|Response */ public function edit(User $user) { return view('admin.users.edit')->with([ 'user' => $user ]); } /** * Update the specified resource in storage. * * @param Request $request * @param User $user * @return RedirectResponse * @throws Exception */ public function update(Request $request, User $user) { $request->validate([ "name" => "required|string|min:4|max:30", "pterodactyl_id" => "required|numeric|unique:users,pterodactyl_id,{$user->id}", "email" => "required|string|email", "credits" => "required|numeric|min:0|max:99999999", "server_limit" => "required|numeric|min:0|max:1000000", "role" => Rule::in(['admin', 'mod', 'client', 'member']), ]); if (isset($this->pterodactyl->getUser($request->input('pterodactyl_id'))['errors'])) { throw ValidationException::withMessages([ 'pterodactyl_id' => ["User does not exists on pterodactyl's panel"] ]); } if (!is_null($request->input('new_password'))) { $request->validate([ 'new_password' => 'required|string|min:8', 'new_password_confirmation' => 'required|same:new_password' ]); $user->update([ 'password' => Hash::make($request->input('new_password')), ]); } $user->update($request->all()); return redirect()->route('admin.users.index')->with('success', 'User updated!'); } /** * Remove the specified resource from storage. * * @param User $user * @return RedirectResponse */ public function destroy(User $user) { $user->delete(); return redirect()->back()->with('success', 'user has been removed!'); } /** * @param Request $request * @param User $user * @return RedirectResponse */ public function loginAs(Request $request, User $user) { $request->session()->put('previousUser', Auth::user()->id); Auth::login($user); return redirect()->route('home'); } /** * @param Request $request * @return RedirectResponse */ public function logBackIn(Request $request) { Auth::loginUsingId($request->session()->get('previousUser'), true); $request->session()->remove('previousUser'); return redirect()->route('admin.users.index'); } /** * * @throws Exception */ public function dataTable() { $query = User::with(['discordUser', 'servers'])->select('users.*'); return datatables($query) ->addColumn('avatar', function (User $user) { return ''; }) ->addColumn('credits', function (User $user) { return ' ' . $user->credits(); }) ->addColumn('usage', function (User $user) { return ' ' . $user->creditUsage(); }) ->addColumn('verified', function (User $user) { return $user->getVerifiedStatus(); }) ->addColumn('servers', function (User $user) { return $user->servers->count(); }) ->addColumn('discordId', function (User $user) { return $user->discordUser ? $user->discordUser->id : ''; }) ->addColumn('last_seen', function (User $user) { return $user->last_seen ? $user->last_seen->diffForHumans() : ''; }) ->addColumn('actions', function (User $user) { return '
' . csrf_field() . ' ' . method_field("DELETE") . '
'; }) ->editColumn('role', function (User $user) { switch ($user->role) { case 'admin' : $badgeColor = 'badge-danger'; break; case 'mod' : $badgeColor = 'badge-info'; break; case 'client' : $badgeColor = 'badge-success'; break; default : $badgeColor = 'badge-secondary'; break; } return '' . $user->role . ''; }) ->editColumn('name', function (User $user) { return '' . $user->name . ''; }) ->orderColumn('last_seen', function ($query, $order) { $query->orderBy('last_seen', $order); }) ->rawColumns(['avatar', 'name', 'credits', 'role', 'usage', 'actions', 'last_seen']) ->make(true); } }