mailwolt/routes/api.php

39 lines
2.2 KiB
PHP

<?php
use App\Http\Controllers\Api\V1\AliasController;
use App\Http\Controllers\Api\V1\DomainController;
use App\Http\Controllers\Api\V1\MailboxController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::middleware(['auth:sanctum', \App\Http\Middleware\InjectSandboxMode::class])->prefix('v1')->name('api.v1.')->group(function () {
// Mailboxes
Route::get('/mailboxes', [MailboxController::class, 'index'])->middleware('ability:mailboxes:read');
Route::get('/mailboxes/{id}', [MailboxController::class, 'show'])->middleware('ability:mailboxes:read');
Route::post('/mailboxes', [MailboxController::class, 'store'])->middleware('ability:mailboxes:write');
Route::patch('/mailboxes/{id}',[MailboxController::class, 'update'])->middleware('ability:mailboxes:write');
Route::delete('/mailboxes/{id}',[MailboxController::class, 'destroy'])->middleware('ability:mailboxes:write');
// Aliases
Route::get('/aliases', [AliasController::class, 'index'])->middleware('ability:aliases:read');
Route::get('/aliases/{id}', [AliasController::class, 'show'])->middleware('ability:aliases:read');
Route::post('/aliases', [AliasController::class, 'store'])->middleware('ability:aliases:write');
Route::delete('/aliases/{id}', [AliasController::class, 'destroy'])->middleware('ability:aliases:write');
// Domains
Route::get('/domains', [DomainController::class, 'index'])->middleware('ability:domains:read');
Route::get('/domains/{id}', [DomainController::class, 'show'])->middleware('ability:domains:read');
Route::post('/domains', [DomainController::class, 'store'])->middleware('ability:domains:write');
Route::delete('/domains/{id}', [DomainController::class, 'destroy'])->middleware('ability:domains:write');
// Auth info
Route::get('/me', function (Request $request) {
$token = $request->user()->currentAccessToken();
return response()->json([
'user' => ['id' => $request->user()->id, 'name' => $request->user()->name, 'email' => $request->user()->email],
'token' => ['name' => $token->name, 'abilities' => $token->abilities, 'sandbox' => $token->sandbox],
]);
});
});