diff --git a/app/Http/Controllers/API/AdminController.php b/app/Http/Controllers/API/AdminController.php new file mode 100644 index 0000000..2cfaf35 --- /dev/null +++ b/app/Http/Controllers/API/AdminController.php @@ -0,0 +1,102 @@ +admin) { + throw new HTTPException("Need Admin Access"); + } + + $user = User::all(); + + + return $response->withData(\App\Http\Resources\API\User::collection($user)); + } + + public function getUserDetails(Request $request, Response $response, $id) { + if(!Auth::check()) { + abort(401); + } + + if(!Auth::user()->admin) { + throw new HTTPException("Need Admin Access"); + } + + $user = User::query()->where("id", "=", $id)->firstOrFail(); + + $mails = Mail::query()->where("user_id", "=", $id)->get(); + + $data = []; + $data["details"] = new \App\Http\Resources\API\User($user); + $data["mails"] = $mails; + + return $response->withData($data); + } + + public function saveUserDetails(Request $request, Response $response, $id) { + if(!Auth::user()->admin) { + throw new HTTPException("Need Admin Access"); + } + $user = User::query()->where("id", "=", $id)->firstOrFail(); + + $user->admin = (bool)$request->input("admin", false); + $user->developer = (bool)$request->input("developer", false); + $user->username = $request->input("username"); + + $user->saveOrFail(); + + return $response; + } + + public function resendValidationMail(Request $request, Response $response, $id) { + if(!Auth::user()->admin) { + throw new HTTPException("Need Admin Access"); + } + $mail = Mail::query()->where("id", "=", $id)->firstOrFail(); + + $this->dispatch(new ValidateMailAddressJob($mail)); + + $response->setStatusCode(201); + + return $response; + } + + public function changeMailStatus(Request $request, Response $response, $id) { + if(!Auth::user()->admin) { + throw new HTTPException("Need Admin Access"); + } + $mail = Mail::query()->where("id", "=", $id)->firstOrFail(); + + $mail->status = $request->input("status"); + + if($mail->status == "valide") { + $user = User::query()->where("id", "=", $mail->user_id)->firstOrFail(); + if($user->getMail() == null) { + $mail->primary = true; + } + } + + + $mail->saveOrFail(); + $response->setStatusCode(200); + + return $response; + } +} diff --git a/routes/web.php b/routes/web.php index 40e5fcc..93182fe 100644 --- a/routes/web.php +++ b/routes/web.php @@ -84,6 +84,11 @@ $router->group(['prefix' => 'api'], function () use ($router) { $router->group(['prefix' => 'admin'], function () use ($router) { $router->post("/settings", ["uses" => "API\ServerController@saveSettings"]); + $router->get("/user", ["uses" => "API\AdminController@listAllUsers"]); + $router->get("/user/{id}", ["uses" => "API\AdminController@getUserDetails"]); + $router->put("/user/{id}", ["uses" => "API\AdminController@saveUserDetails"]); + $router->post("/mail/{id}/resend", ["uses" => "API\AdminController@resendValidationMail"]); + $router->put("/mail/{id}/status", ["uses" => "API\AdminController@changeMailStatus"]); }); }); });