From a7a7eaa08dc65fe91e635bae6dc9c88faa01421e Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Mon, 9 Sep 2024 23:04:59 +0500 Subject: [PATCH] fix apis --- app/Http/Controllers/ProfileController.php | 28 +++++-------- app/Http/Kernel.php | 1 + app/Http/Middleware/CheckIfUserIsBanned.php | 20 ++++++++++ .../Requests/UpdateUserProfileRequest.php | 40 +++++++++++++++++++ .../ApiAuth/Controllers/ApiAuthController.php | 2 - app/Providers/AppServiceProvider.php | 8 ++++ routes/api.php | 2 +- 7 files changed, 80 insertions(+), 21 deletions(-) create mode 100644 app/Http/Middleware/CheckIfUserIsBanned.php create mode 100644 app/Http/Requests/UpdateUserProfileRequest.php diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index fda7e97..8ddf982 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Http\Requests\UpdateUserProfileRequest; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Validation\Rule; @@ -9,36 +10,27 @@ use Illuminate\Validation\Rule; class ProfileController extends Controller { /** - * Users profile + * Get user profile */ public function index(): JsonResponse { $user = auth()->user(); - return response()->rest([ - 'first_name' => $user->first_name, - 'last_name' => $user->last_name, - 'phone_number' => $user->phone_number, - 'address' => $user->options->get('address'), + return response()->json([ + 'name' => $user->name, + 'phone' => $user->phone, ]); } /** - * Store + * Update user profile */ - public function store(Request $request) + public function store(UpdateUserProfileRequest $request) { - $request->validate([ - 'name' => ['required', 'string', 'max:255'], - 'phone_number' => ['required', 'int', 'between:61000000,71999999', Rule::unique('users', 'phone_number')->ignore(auth()->id())], - 'address' => ['required', 'string', 'max:255'], - ]); + auth()->user()->update($request->validated()); - auth()->user()->update([ - 'first_name' => $request->name, - 'phone_number' => $request->phone_number, + return response()->json([ + 'message' => __('Successfully updated profile') ]); - - return response()->rest(); } } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 5bcd7fa..01ea1a9 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -66,5 +66,6 @@ class Kernel extends HttpKernel 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'unVerified' => \App\Http\Middleware\RedirectIfPhoneIsVerified::class, 'setLocale' => \App\Http\Middleware\SetLocale::class, + 'not_banned' => \App\Http\Middleware\CheckIfUserIsBanned::class, ]; } diff --git a/app/Http/Middleware/CheckIfUserIsBanned.php b/app/Http/Middleware/CheckIfUserIsBanned.php new file mode 100644 index 0000000..db1912f --- /dev/null +++ b/app/Http/Middleware/CheckIfUserIsBanned.php @@ -0,0 +1,20 @@ +|string> + */ + public function rules(): array + { + return [ + /** + * Phone number to authenticate + * + * @example Mahmyt Allaberdiyev + */ + 'name' => ['required', 'string', 'max:255'], + + /** + * Phone number to authenticate + * + * @example 65707012 + */ + 'phone' => ['required', 'int', 'between:61000000,71999999', Rule::unique('users', 'phone')->ignore(auth()->id())], + + /** + * Password (leave empty to save it same) + * + * @example Mpassword + */ + 'password' => ['nullable', 'string'] + ]; + } +} diff --git a/app/Modules/ApiAuth/Controllers/ApiAuthController.php b/app/Modules/ApiAuth/Controllers/ApiAuthController.php index a293e3f..756973b 100644 --- a/app/Modules/ApiAuth/Controllers/ApiAuthController.php +++ b/app/Modules/ApiAuth/Controllers/ApiAuthController.php @@ -62,8 +62,6 @@ class ApiAuthController extends Controller /** * (Auth)* Delete user - * - * @authenticated */ public function delete(): JsonResponse { diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 36a9645..4c034b5 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,9 @@ namespace App\Providers; +use Dedoc\Scramble\Scramble; +use Dedoc\Scramble\Support\Generator\OpenApi; +use Dedoc\Scramble\Support\Generator\SecurityScheme; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Event; @@ -32,6 +35,11 @@ class AppServiceProvider extends ServiceProvider $this->loadMigrationsFrom($this->findModuleMigrations()); + + Scramble::afterOpenApiGenerated(function (OpenApi $openApi) { + $openApi->secure(SecurityScheme::http('bearer')); + }); + // $this->listenDB(); } diff --git a/routes/api.php b/routes/api.php index f96b3e5..17cad37 100644 --- a/routes/api.php +++ b/routes/api.php @@ -22,7 +22,7 @@ Route::post('auth/verify', [ApiAuthController::class, 'verify']); Route::middleware('auth:sanctum') ->post('auth/delete-user', [ApiAuthController::class, 'delete']); -Route::middleware(['auth:sanctum', 'banned'])->group(function () { +Route::middleware(['auth:sanctum', 'not_banned'])->group(function () { // Profile... Route::get('profile', [ProfileController::class, 'index']); Route::post('profile', [ProfileController::class, 'store']);