This commit is contained in:
2024-09-09 23:04:59 +05:00
parent bd992d87fb
commit a7a7eaa08d
7 changed files with 80 additions and 21 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Http\Requests\UpdateUserProfileRequest;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -9,36 +10,27 @@ use Illuminate\Validation\Rule;
class ProfileController extends Controller class ProfileController extends Controller
{ {
/** /**
* Users profile * Get user profile
*/ */
public function index(): JsonResponse public function index(): JsonResponse
{ {
$user = auth()->user(); $user = auth()->user();
return response()->rest([ return response()->json([
'first_name' => $user->first_name, 'name' => $user->name,
'last_name' => $user->last_name, 'phone' => $user->phone,
'phone_number' => $user->phone_number,
'address' => $user->options->get('address'),
]); ]);
} }
/** /**
* Store * Update user profile
*/ */
public function store(Request $request) public function store(UpdateUserProfileRequest $request)
{ {
$request->validate([ auth()->user()->update($request->validated());
'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([ return response()->json([
'first_name' => $request->name, 'message' => __('Successfully updated profile')
'phone_number' => $request->phone_number,
]); ]);
return response()->rest();
} }
} }

View File

@@ -66,5 +66,6 @@ class Kernel extends HttpKernel
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'unVerified' => \App\Http\Middleware\RedirectIfPhoneIsVerified::class, 'unVerified' => \App\Http\Middleware\RedirectIfPhoneIsVerified::class,
'setLocale' => \App\Http\Middleware\SetLocale::class, 'setLocale' => \App\Http\Middleware\SetLocale::class,
'not_banned' => \App\Http\Middleware\CheckIfUserIsBanned::class,
]; ];
} }

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckIfUserIsBanned
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
return $next($request);
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class UpdateUserProfileRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|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']
];
}
}

View File

@@ -62,8 +62,6 @@ class ApiAuthController extends Controller
/** /**
* (Auth)* Delete user * (Auth)* Delete user
*
* @authenticated
*/ */
public function delete(): JsonResponse public function delete(): JsonResponse
{ {

View File

@@ -2,6 +2,9 @@
namespace App\Providers; 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\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Event;
@@ -32,6 +35,11 @@ class AppServiceProvider extends ServiceProvider
$this->loadMigrationsFrom($this->findModuleMigrations()); $this->loadMigrationsFrom($this->findModuleMigrations());
Scramble::afterOpenApiGenerated(function (OpenApi $openApi) {
$openApi->secure(SecurityScheme::http('bearer'));
});
// $this->listenDB(); // $this->listenDB();
} }

View File

@@ -22,7 +22,7 @@ Route::post('auth/verify', [ApiAuthController::class, 'verify']);
Route::middleware('auth:sanctum') Route::middleware('auth:sanctum')
->post('auth/delete-user', [ApiAuthController::class, 'delete']); ->post('auth/delete-user', [ApiAuthController::class, 'delete']);
Route::middleware(['auth:sanctum', 'banned'])->group(function () { Route::middleware(['auth:sanctum', 'not_banned'])->group(function () {
// Profile... // Profile...
Route::get('profile', [ProfileController::class, 'index']); Route::get('profile', [ProfileController::class, 'index']);
Route::post('profile', [ProfileController::class, 'store']); Route::post('profile', [ProfileController::class, 'store']);