pull/3/head
Rustem 2025-01-30 11:17:17 +05:00
parent 1ae185bbc6
commit 28e9dc6366
8 changed files with 119 additions and 6 deletions

View File

@ -34,6 +34,7 @@ class PipiCarInstallCommands extends InstallCommand
'owners', // Владелец авто 'owners', // Владелец авто
'auto', // авто 'auto', // авто
'applications', //Заявки 'applications', //Заявки
'pipi_users' // Добавление логики для пользователей
]; ];
} }

View File

@ -51,9 +51,25 @@ class MobileApiController extends Controller
$data = $request->all(); $data = $request->all();
$data['started_at'] = Carbon::parse($data['started_at'])?->format('Y-m-d H:i:s'); $data['started_at'] = Carbon::parse($data['started_at'])?->format('Y-m-d H:i:s');
$data['ended_at'] = Carbon::parse($data['ended_at'])?->format('Y-m-d H:i:s'); $data['ended_at'] = Carbon::parse($data['ended_at'])?->format('Y-m-d H:i:s');
$data['user_id'] = UniModel::model('core_users') $authToken = null;
->where('email',$data['email'])->first()?->id;
$data['car_id'] = null; $data['car_id'] = null;
if ($request->header('Authorization')) {
$user = auth()->guard('api')->user();
$data['user_id'] = $user ? $user->id : null;
} else {
$user = UniModel::model('core_users')
->where('email', $data['email'])
->first();
if ($user) {
$data['user_id'] = $user->id;
$tokenResult = $user->createToken('auth_token');
$authToken = $tokenResult->accessToken;
} else {
$data['user_id'] = null;
}
}
UniModel::model('pipi_applications')->create([ UniModel::model('pipi_applications')->create([
'rent_day' => $data['rent_day'], 'rent_day' => $data['rent_day'],
'started_at' => $data['started_at'], 'started_at' => $data['started_at'],
@ -67,14 +83,47 @@ class MobileApiController extends Controller
'status' => ApplicationStatus::pending->value 'status' => ApplicationStatus::pending->value
]); ]);
if (!isset($data['user_id'])) { $response = [
return response()->json(['status' => 'OK', 'message' => 'Заявка создана, с вами свяжется наш оператор']); 'status' => 'OK',
'message' => 'Заявка создана',
];
if ($authToken) {
$response['auth_token'] = $authToken;
$response['message'] = 'Заявка создана, и вы были автоматически авторизованы';
} elseif (!isset($data['user_id'])) {
$response['message'] = 'Заявка создана, с вами свяжется наш оператор';
} }
return response()->json(['status' => 'OK', 'message' => 'Заявка создана']);
return response()->json($response);
} }
public function getApplications(): JsonResponse public function getApplications(): JsonResponse
{ {
return response()->json(UniModel::model('pipi_applications')->get()); return response()->json(UniModel::model('pipi_applications')->get());
} }
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (auth()->attempt($credentials)) {
$user = auth()->user();
$tokenResult = $user->createToken('auth_token');
$response = [
'access_token' => $tokenResult->plainTextToken,
'token_type' => 'Bearer',
'user' => [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
],
];
return response()->json($response, 200);
} else {
return response()->json(['error' => 'Unauthorized'], 401);
}
}
} }

View File

@ -40,7 +40,7 @@ class Kernel extends HttpKernel
], ],
'api' => [ 'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Routing\Middleware\SubstituteBindings::class,
], ],

View File

@ -40,6 +40,11 @@ return [
'driver' => 'session', 'driver' => 'session',
'provider' => 'users', 'provider' => 'users',
], ],
'api' => [
'driver' => 'sanctum',
'provider' => 'users',
],
], ],
/* /*

View File

@ -0,0 +1,9 @@
{
"admin": [
"default",
"add",
"show",
"edit",
"delete"
]
}

View File

@ -0,0 +1,8 @@
{
"module": "pipicar",
"name": "users",
"title": "Избранное",
"description": "'Учет.Главная'",
"type": "custom",
"class": "App.Modules.main.Applications.Main"
}

View File

@ -0,0 +1,40 @@
<?php
use A7kz\Platform\Models\UniModel;
use A7kz\Platform\Modules\Platform\Core\Facades\Core;
use A7kz\Platform\Modules\Platform\Segment\Facades\Segment;
use Carbon\Carbon;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;
use \A7kz\Platform\Commands\InstallScript;
return new class extends \A7kz\Platform\Commands\InstallScript {
public function install($module_name, $module_version)
{
}
public function update($module_name, $module_version): void
{
$this->upgrade();
}
private function upgrade(): void
{
$segments = Segment::listActive();
foreach ($segments as $segment) {
if (!Schema::connection($segment->connector)->hasColumn('core_users', 'auth_token')) {
Schema::connection($segment->connector)->table('core_users', static function (Blueprint $table) {
$table->string('auth_token')->nullable()->unique();
});
}
if (!Schema::connection($segment->connector)->hasColumn('personal_access_tokens', 'expires_at')) {
Schema::connection($segment->connector)->table('personal_access_tokens', static function (Blueprint $table) {
$table->timestamp('expires_at')->nullable();
});
}
}
}
};

View File

@ -26,4 +26,5 @@ Route::prefix('mobile')->group(function () {
Route::get('getMarks', [MobileApiController::class, 'getMarks']); Route::get('getMarks', [MobileApiController::class, 'getMarks']);
Route::post('sendApplication', [MobileApiController::class, 'sendApplication']); Route::post('sendApplication', [MobileApiController::class, 'sendApplication']);
Route::post('getApplications', [MobileApiController::class, 'getApplications']); Route::post('getApplications', [MobileApiController::class, 'getApplications']);
Route::post('login', [MobileApiController::class, 'login']);
}); });