Pokud budete chtít Aimeos ovládat z externí aplikace, pravděpodobně bude chtít využít komunikaci přes API (Application Programming Interface). Vzhledem k tomu, že Aimeos není definován jako stand-alone aplikace, není divu, že má kompletní API připravené.
https://aimeos.org/docs/latest/admin/jsonadm/
Jestli jste si Aimeos nainstalovali do vašeho Laravel projektu, popřípadě dle návodu jako kompletní Laravel projekt, musíte nejdřív nastavit API v Laravelu. Důvodem je nutná autorizace, kterou obstarává Laravel, nikoliv Aimeos.
Laravel Sanctum
Balíček Sanctum zajišťuje v Laravelu autorizaci pro mobilní aplikace, single-page aplikace, nebo Bearer token API. Tento token budeme potřebovat při jakémkoliv dotazu na Aimeos JsonAdm API.
Postup instalace
Nejdřív musíme pomocí Composeru nainstalovat Sanctum do vašeho Aimeosu.
composer require laravel/sanctum
Publikujeme konfigurační soubory Laravel Sanctum.
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Spustíme migraci.
php artisan migrate
Modelu User musíme nastavit, aby používal trait třídu HasApiTokens.
// app/Models/User.php use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; }
Tímto máme Laravel Sanctum nainstalovaný a je připraven k použití. Vytvoříme si tedy kontroler, který bude zpracovávat login API requesty. Kontroler nazveme ApiAuthController.php a vytvoříme ho Artisan příkazem:
php artisan make:controller ApiAuthController
Soubor ApiAuthController.php se vytvoří ve složce app/Http/Controllers. Soubor si otevřeme a vytvoříme metodu login().
// app/Http/Controllers/AuthController.php use App\Models\User; use Illuminate\Support\Facades\Auth; public function login(Request $request) { if (!Auth::attempt($request->only('email', 'password'))) { return response()->json([ 'message' => 'Invalid login details' ], 401); } $user = User::where('email', $request['email'])->firstOrFail(); $token = $user->createToken('auth_token')->plainTextToken; return response()->json([ 'access_token' => $token, 'token_type' => 'Bearer', ]); }
Do souboru routes/api.php přidáme routu, na kterou budeme odesílat login request.
// routes/api.php use Illuminate\Http\Request; use App\Http\Controllers\ApiAuthController; Route::post('/login', [ApiAuthController::class, 'login']);
Testování
Nyní si přihlášení přes API vyzkoušíme. Pro testování API requestů můžeme využít program Postman.
Pro přihlášení odešlete POST request na <vaše-url-doména>/api/login s přihlašovacími údaji ‚email‘ a ‚password‘ jako plain text.
Pokud je vše správně, vrátí se vám odpověď s Bearer tokenem, který poté využijete při dotazech na Aimeos API.
{ "access_token": "12|gCK4vwOA187yuBidPCG9CyCX1rwUXHCOgSS3aFKC", "token_type": "Bearer" }
Úprava Aimos JsonAdm API
Nyní už se umíme autorizovat přes API. Zíksáme Bearer token, který použijeme při requestech na Aimeos API. Musíme ale ještě Aimeosu říct, aby také využíval Sanctum pro autorizaci.
To uděláme tak, že upravíme routy pro JsonAdm API. Ty se nacházejí zde: \vendor\aimeos\aimeos-laravel\src\routes.php
Přibližně na řádku 64 začíná podmínka, která definuje routy pro JsonAdm API:
if( ( $conf = config( 'shop.routes.jsonadm', ['prefix' => 'admin/{site}/jsonadm', 'middleware' => ['web', 'auth']] ) ) !== false )
Zde pouze upravíte middleware, tak využíval authorizaci Sanctum:
if( ( $conf = config( 'shop.routes.jsonadm', ['prefix' => 'admin/{site}/jsonadm', 'middleware' => ['web', 'auth:sanctum']] ) ) !== false )
Testování JsonAdm API
Teď už můžeme vyzkoušet dotaz na Aimeos JsonAdm API. Pro autorizaci musíme využít získaný Bearer token. Jak má request vypadat si dohledáme v dokumentaci: https://aimeos.org/docs/latest/admin/jsonadm/
Pro ukázku, takto získáme informace o produktu ID:1