Skip to content

Instantly share code, notes, and snippets.

@Nex-Otaku
Created March 20, 2021 16:22
Show Gist options
  • Save Nex-Otaku/c926293176b11881254ee3731bcdec6a to your computer and use it in GitHub Desktop.
Save Nex-Otaku/c926293176b11881254ee3731bcdec6a to your computer and use it in GitHub Desktop.
Yii3 routes example
<?php
declare(strict_types=1);
use App\Auth\AuthController;
use App\User\UserController;
use App\Middleware\ApiDataWrapper;
use App\Middleware\CorsHeaders;
use App\Middleware\RequestFormParser;
use App\RequestForm\SignupForm;
use App\RequestForm\ResetPassword;
use App\RequestForm\RestorePasswordForm;
use App\RequestForm\VerifyResetPasswordToken;
use Psr\Http\Message\ResponseFactoryInterface;
use Yiisoft\Auth\Middleware\Authentication;
use Yiisoft\DataResponse\Middleware\FormatDataResponseAsJson;
use Yiisoft\Http\Status;
use Yiisoft\Request\Body\RequestBodyParser;
use Yiisoft\Router\Group;
use Yiisoft\Router\Route;
return [
Group::create('/api', [
Route::post('/login', [AuthController::class, 'login'])
->name('api/login'),
Route::post('/logout', [AuthController::class, 'logout'])
->name('api/logout'),
Route::get('/refresh-token', [AuthController::class, 'refreshToken'])
->name('api/refresh-token'),
Route::post('/send-email-verification', [AuthController::class, 'sendEmailVerification'])
->name('api/send-email-verification'),
Route::get('/verify-email', [AuthController::class, 'verifyEmail'])
->name('api/verify-email'),
Route::post('/send-reset-password-email', [AuthController::class, 'sendResetPasswordEmail'])
->name('api/send-reset-password-email')
->addMiddleware(fn(RequestFormParser $formParser) => $formParser->withRequestForm(RestorePasswordForm::class)),
Route::post('/verify-reset-password-token', [AuthController::class, 'verifyResetPasswordToken'])
->name('api/verify-reset-password-token')
->addMiddleware(fn(RequestFormParser $formParser) => $formParser->withRequestForm(VerifyResetPasswordToken::class)),
Route::post('/reset-password', [AuthController::class, 'resetPassword'])
->name('api/reset-password')
->addMiddleware(fn(RequestFormParser $formParser) => $formParser->withRequestForm(ResetPassword::class)),
Route::post('/signup', [UserController::class, 'signup'])
->name('api/signup')
->addMiddleware(fn(RequestFormParser $formParser) => $formParser->withRequestForm(SignupForm::class)),
Group::create('/user', require "routes/user.php")->addMiddleware(Authentication::class),
Group::create('/account', require "routes/account.php")->addMiddleware(Authentication::class),
Group::create('/payment', require "routes/payment.php")->addMiddleware(Authentication::class),
Group::create('/currency', require "routes/currency.php"),
Route::options('/{action:.+}', fn(ResponseFactoryInterface $r) => $r->createResponse(Status::NO_CONTENT))
->name('options/api'),
])
->addMiddleware(RequestBodyParser::class)
->addMiddleware(ApiDataWrapper::class)
->addMiddleware(FormatDataResponseAsJson::class)
->addMiddleware(CorsHeaders::class),
];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment