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;
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();
}
}

View File

@@ -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,
];
}

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
*
* @authenticated
*/
public function delete(): JsonResponse
{

View File

@@ -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();
}

View File

@@ -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']);