284
common/routes/api.php
Executable file
284
common/routes/api.php
Executable file
@@ -0,0 +1,284 @@
|
||||
<?php
|
||||
|
||||
use Common\Admin\AdminSetupAlertsController;
|
||||
use Common\Admin\Analytics\AnalyticsController;
|
||||
use Common\Admin\Appearance\Controllers\AppearanceController;
|
||||
use Common\Admin\Appearance\Controllers\SeoTagsController;
|
||||
use Common\Admin\CacheController;
|
||||
use Common\Admin\ImpersonateUserController;
|
||||
use Common\Admin\Sitemap\SitemapController;
|
||||
use Common\Auth\Controllers\AccessTokenController;
|
||||
use Common\Auth\Controllers\BanController;
|
||||
use Common\Auth\Controllers\EmailVerificationController;
|
||||
use Common\Auth\Controllers\MobileAuthController;
|
||||
use Common\Auth\Controllers\SocialAuthController;
|
||||
use Common\Auth\Controllers\UserAvatarController;
|
||||
use Common\Auth\Controllers\UserController;
|
||||
use Common\Auth\Controllers\UserFollowedUsersController;
|
||||
use Common\Auth\Controllers\UserFollowersController;
|
||||
use Common\Auth\Controllers\UserSessionsController;
|
||||
use Common\Auth\Middleware\VerifyApiAccessMiddleware;
|
||||
use Common\Auth\Roles\RolesController;
|
||||
use Common\Billing\Gateways\Paypal\PaypalController;
|
||||
use Common\Billing\Gateways\Stripe\StripeController;
|
||||
use Common\Billing\Gateways\SyncProductsController;
|
||||
use Common\Billing\Invoices\InvoiceController;
|
||||
use Common\Billing\Products\ProductsController;
|
||||
use Common\Billing\Subscriptions\SubscriptionsController;
|
||||
use Common\Comments\Controllers\CommentableController;
|
||||
use Common\Comments\Controllers\CommentController;
|
||||
use Common\Core\Controllers\BootstrapController;
|
||||
use Common\Core\Values\ValueListsController;
|
||||
use Common\Csv\CommonCsvExportController;
|
||||
use Common\Domains\CustomDomainController;
|
||||
use Common\Files\Controllers\AddPreviewTokenController;
|
||||
use Common\Files\Controllers\DownloadFileController;
|
||||
use Common\Files\Controllers\FileEntriesController;
|
||||
use Common\Files\Controllers\RestoreDeletedEntriesController;
|
||||
use Common\Files\Controllers\ServerMaxUploadSizeController;
|
||||
use Common\Files\S3\S3CorsController;
|
||||
use Common\Files\S3\S3FileEntryController;
|
||||
use Common\Files\S3\S3MultipartUploadController;
|
||||
use Common\Files\S3\S3SimpleUploadController;
|
||||
use Common\Files\Tus\TusFileEntryController;
|
||||
use Common\Files\Tus\TusServer;
|
||||
use Common\Localizations\LocalizationsController;
|
||||
use Common\Localizations\UserLocaleController;
|
||||
use Common\Logging\Error\ErrorLogController;
|
||||
use Common\Logging\Mail\OutgoingEmailLogController;
|
||||
use Common\Logging\Schedule\ScheduleLogController;
|
||||
use Common\Notifications\NotificationController;
|
||||
use Common\Notifications\NotificationSubscriptionsController;
|
||||
use Common\Pages\ContactPageController;
|
||||
use Common\Pages\CustomPageController;
|
||||
use Common\Reports\ReportController;
|
||||
use Common\Search\Controllers\NormalizedModelsController;
|
||||
use Common\Search\Controllers\SearchSettingsController;
|
||||
use Common\Settings\SettingsController;
|
||||
use Common\Settings\Uploading\DropboxRefreshTokenController;
|
||||
use Common\Tags\TagController;
|
||||
use Common\Validation\RecaptchaController;
|
||||
use Common\Votes\VoteController;
|
||||
use Common\Workspaces\Controllers\WorkspaceController;
|
||||
use Common\Workspaces\Controllers\WorkspaceInvitesController;
|
||||
use Common\Workspaces\Controllers\WorkspaceMembersController;
|
||||
use Common\Workspaces\UserWorkspacesController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Laravel\Fortify\Http\Controllers\PasswordResetLinkController;
|
||||
|
||||
// prettier-ignore
|
||||
Route::group(['prefix' => 'v1'], function () {
|
||||
Route::group(['middleware' => ['optionalAuth:sanctum', 'verified', 'verifyApiAccess']], function () {
|
||||
// FILE ENTRIES
|
||||
Route::get('file-entries/{fileEntry}/model', [FileEntriesController::class, 'showModel']);
|
||||
Route::get('file-entries/{fileEntry}', [FileEntriesController::class, 'show'])
|
||||
->withoutMiddleware(VerifyApiAccessMiddleware::class);
|
||||
Route::get('file-entries', [FileEntriesController::class, 'index']);
|
||||
Route::post('file-entries/delete', [FileEntriesController::class, 'destroy']);
|
||||
Route::delete('file-entries/{entryIds}', [FileEntriesController::class, 'destroy']);
|
||||
Route::get('file-entries/download/{hashes}', [DownloadFileController::class, 'download']);
|
||||
Route::post('file-entries/{id}/add-preview-token', [AddPreviewTokenController::class, 'store']);
|
||||
Route::post('file-entries/restore', [RestoreDeletedEntriesController::class, 'restore']);
|
||||
|
||||
// for swagger api docs
|
||||
Route::post('uploads', [FileEntriesController::class, 'store']);
|
||||
Route::post('file-entries', [FileEntriesController::class, 'store']);
|
||||
Route::put('file-entries/{id}', [FileEntriesController::class, 'update']);
|
||||
|
||||
// S3 UPLOADS
|
||||
Route::post('s3/multipart/create', [S3MultipartUploadController::class, 'create']);
|
||||
Route::post('s3/multipart/batch-sign-part-urls', [S3MultipartUploadController::class, 'batchSignPartUrls']);
|
||||
Route::post('s3/multipart/get-uploaded-parts', [S3MultipartUploadController::class, 'getUploadedParts']);
|
||||
Route::post('s3/multipart/complete', [S3MultipartUploadController::class, 'complete']);
|
||||
Route::post('s3/multipart/abort', [S3MultipartUploadController::class, 'abort']);
|
||||
Route::post('s3/simple/presign', [S3SimpleUploadController::class, 'presignPost']);
|
||||
Route::post('s3/entries', [S3FileEntryController::class, 'store']);
|
||||
Route::post('s3/cors/upload', [S3CorsController::class, 'uploadCors']);
|
||||
|
||||
// TUS UPLOADS
|
||||
Route::post('tus/entries', [TusFileEntryController::class, 'store']);
|
||||
Route::any('/tus/upload/{any?}', function () {
|
||||
return app(TusServer::class)->serve();
|
||||
})->where('any', '.*');
|
||||
|
||||
// NOTIFICATIONS
|
||||
Route::get('notifications', [NotificationController::class, 'index']);
|
||||
Route::delete('notifications/{ids}', [NotificationController::class, 'destroy']);
|
||||
Route::post('notifications/mark-as-read', [NotificationController::class, 'markAsRead']);
|
||||
Route::get('notifications/{user}/subscriptions', [NotificationSubscriptionsController::class, 'index']);
|
||||
Route::put('notifications/{user}/subscriptions', [NotificationSubscriptionsController::class, 'update']);
|
||||
|
||||
//ROLES
|
||||
Route::get('roles', [RolesController::class, 'index']);
|
||||
Route::get('roles/{role}', [RolesController::class, 'show']);
|
||||
Route::post('roles', [RolesController::class, 'store']);
|
||||
Route::put('roles/{id}', [RolesController::class, 'update']);
|
||||
Route::delete('roles/{id}', [RolesController::class, 'destroy']);
|
||||
Route::post('roles/{id}/add-users', [RolesController::class, 'addUsers']);
|
||||
Route::post('roles/{id}/remove-users', [RolesController::class, 'removeUsers']);
|
||||
Route::post('roles/csv/export', [CommonCsvExportController::class, 'exportRoles']);
|
||||
|
||||
//USERS
|
||||
Route::get('users/{user}', [UserController::class, 'show'])->withoutMiddleware('verified');
|
||||
Route::apiResource('users', UserController::class)->except(['destroy', 'show']);
|
||||
Route::delete('users/{ids}', [UserController::class, 'destroy']);
|
||||
Route::post('access-tokens', [AccessTokenController::class, 'store']);
|
||||
Route::delete('access-tokens/{tokenId}', [AccessTokenController::class, 'destroy']);
|
||||
Route::post('users/csv/export', [CommonCsvExportController::class, 'exportUsers']);
|
||||
Route::get('users/{user}/followers', [UserFollowersController::class, 'index']);
|
||||
Route::post('users/{user}/follow', [UserFollowersController::class, 'follow']);
|
||||
Route::post('users/{user}/unfollow', [UserFollowersController::class, 'unfollow']);
|
||||
Route::get('users/{user}/followed-users', [UserFollowedUsersController::class, 'index']);
|
||||
Route::get('users/{user}/followed-users/ids', [UserFollowedUsersController::class, 'ids']);
|
||||
Route::post('resend-email-verification', [EmailVerificationController::class, 'resendVerificationEmail'])->middleware(['throttle:6,1']);
|
||||
Route::post('validate-email-verification-otp', [EmailVerificationController::class, 'validateOtp'])->middleware(['throttle:6,1']);
|
||||
|
||||
//USER AVATAR
|
||||
Route::post('users/{user}/avatar', [UserAvatarController::class, 'store']);
|
||||
Route::delete('users/{user}/avatar', [UserAvatarController::class, 'destroy']);
|
||||
|
||||
//USER BANS
|
||||
Route::post('users/{user}/ban', [BanController::class, 'store']);
|
||||
Route::delete('users/{user}/unban', [BanController::class, 'destroy']);
|
||||
|
||||
// USER SESSIONS
|
||||
Route::get('user-sessions', [UserSessionsController::class, 'index'])->middleware('auth');
|
||||
Route::post('user-sessions/logout-other', [UserSessionsController::class, 'LogoutOtherSessions'])->middleware(['auth', 'password.confirm']);
|
||||
|
||||
// TAGS
|
||||
Route::get('tags', [TagController::class, 'index']);
|
||||
Route::post('tags', [TagController::class, 'store']);
|
||||
Route::put('tags/{id}', [TagController::class, 'update']);
|
||||
Route::delete('tags/{tagIds}', [TagController::class, 'destroy']);
|
||||
|
||||
// WORKSPACES
|
||||
Route::apiResource('workspace', WorkspaceController::class);
|
||||
Route::get('me/workspaces', [UserWorkspacesController::class, 'index']);
|
||||
Route::delete('workspace/{workspace}/member/{userId}', [WorkspaceMembersController::class, 'destroy']);
|
||||
Route::post('workspace/{workspace}/invite', [WorkspaceInvitesController::class, 'store']);
|
||||
Route::post('workspace/{workspace}/{workspaceInvite}/resend', [WorkspaceInvitesController::class, 'resend']);
|
||||
Route::post('workspace/{workspace}/member/{memberId}/change-role', [WorkspaceMembersController::class, 'changeRole']);
|
||||
Route::post('workspace/{workspace}/invite/{inviteId}/change-role', [WorkspaceInvitesController::class, 'changeRole']);
|
||||
Route::delete('workspace/invite/{workspaceInvite}', [WorkspaceInvitesController::class, 'destroy']);
|
||||
Route::get('workspace/join/{workspaceInvite}', [WorkspaceMembersController::class, 'join']);
|
||||
|
||||
// SETTINGS
|
||||
Route::get('settings', [SettingsController::class, 'index']);
|
||||
Route::post('settings', [SettingsController::class, 'persist']);
|
||||
Route::post('settings/uploading/dropbox-refresh-token', [DropboxRefreshTokenController::class, 'generate']);
|
||||
|
||||
// SITEMAP
|
||||
Route::post('sitemap/generate', [SitemapController::class, 'generate']);
|
||||
|
||||
// APPEARANCE EDITOR
|
||||
Route::post('admin/appearance', [AppearanceController::class, 'save']);
|
||||
Route::get('admin/appearance/values', [AppearanceController::class, 'getValues']);
|
||||
Route::get('admin/appearance/seo-tags/{name}', [SeoTagsController::class, 'show']);
|
||||
Route::put('admin/appearance/seo-tags/{name}', [SeoTagsController::class, 'update']);
|
||||
|
||||
// CUSTOM PAGES
|
||||
Route::apiResource('custom-pages', CustomPageController::class);
|
||||
|
||||
// COMMENTS
|
||||
Route::apiResource('comment', CommentController::class);
|
||||
Route::post('comment/restore', [CommentController::class, 'restore']);
|
||||
Route::get('commentable/comments', [CommentableController::class, 'index']);
|
||||
|
||||
// VOTES
|
||||
Route::post('vote', [VoteController::class, 'store']);
|
||||
|
||||
// REPORTS
|
||||
Route::post('report', [ReportController::class, 'store']);
|
||||
Route::delete('report/{modelType}/{modelId}', [ReportController::class, 'destroy']);
|
||||
|
||||
// CONTACT PAGE
|
||||
Route::post('contact-page', [ContactPageController::class, 'sendMessage']);
|
||||
|
||||
// SEARCH
|
||||
Route::get('normalized-models/{modelType}', [NormalizedModelsController::class, 'index']);
|
||||
Route::get('normalized-models/{modelType}/{modelId}', [NormalizedModelsController::class, 'show']);
|
||||
|
||||
// PRODUCTS
|
||||
Route::apiResource('billing/products', ProductsController::class);
|
||||
Route::post('billing/products/sync', [SyncProductsController::class, 'syncProducts']);
|
||||
|
||||
// SUBSCRIPTIONS
|
||||
Route::get('billing/subscriptions', [SubscriptionsController::class, 'index']);
|
||||
Route::post('billing/subscriptions', [SubscriptionsController::class, 'store']);
|
||||
Route::post('billing/subscriptions/{subscription}/cancel', [SubscriptionsController::class, 'cancel']);
|
||||
Route::put('billing/subscriptions/{subscription}', [SubscriptionsController::class, 'update']);
|
||||
Route::post('billing/subscriptions/{subscription}/resume', [SubscriptionsController::class, 'resume']);
|
||||
Route::post('billing/subscriptions/{subscription}/change-plan', [SubscriptionsController::class, 'changePlan']);
|
||||
Route::post('billing/stripe/create-partial-subscription', [StripeController::class, 'createPartialSubscription']);
|
||||
Route::post('billing/stripe/create-setup-intent', [StripeController::class, 'createSetupIntent']);
|
||||
Route::post('billing/stripe/change-default-payment-method', [StripeController::class, 'changeDefaultPaymentMethod']);
|
||||
Route::post('billing/stripe/store-subscription-details-locally', [StripeController::class, 'storeSubscriptionDetailsLocally']);
|
||||
Route::post('billing/paypal/store-subscription-details-locally', [PaypalController::class, 'storeSubscriptionDetailsLocally']);
|
||||
|
||||
// INVOICES
|
||||
Route::get('billing/invoices', [InvoiceController::class, 'index']);
|
||||
|
||||
// CUSTOM DOMAINS
|
||||
Route::apiResource('custom-domain', CustomDomainController::class)->middleware('customDomainsEnabled');
|
||||
|
||||
// ADMIN
|
||||
Route::get('uploads/server-max-file-size', [ServerMaxUploadSizeController::class, 'index']);
|
||||
Route::get('admin/setup-alerts', [AdminSetupAlertsController::class, 'index']);
|
||||
Route::get('admin/reports', [AnalyticsController::class, 'report']);
|
||||
Route::get('admin/reports/header', [AnalyticsController::class, 'headerReport']);
|
||||
Route::get('admin/reports/sessions', [AnalyticsController::class, 'sessionsReport']);
|
||||
Route::post('cache/flush', [CacheController::class, 'flush']);
|
||||
Route::post('admin/users/impersonate/{userId}', [ImpersonateUserController::class, 'impersonate']);
|
||||
Route::get('admin/search/models', [SearchSettingsController::class, 'getSearchableModels']);
|
||||
Route::post('admin/search/import', [SearchSettingsController::class, 'import']);
|
||||
|
||||
// LOCALIZATIONS
|
||||
Route::post('localizations', [LocalizationsController::class, 'store']);
|
||||
Route::put('localizations/{langCode}', [LocalizationsController::class, 'update']);
|
||||
Route::delete('localizations/{id}', [LocalizationsController::class, 'destroy']);
|
||||
Route::get('localizations/{id}/download', [LocalizationsController::class, 'download']);
|
||||
Route::post('localizations/{id}/upload', [LocalizationsController::class, 'upload']);
|
||||
Route::post('users/me/locale', [UserLocaleController::class, 'update']);
|
||||
Route::get('localizations', [LocalizationsController::class, 'index']);
|
||||
Route::get('localizations/{idOrLangCode}', [LocalizationsController::class, 'show']);
|
||||
|
||||
// VALUE LISTS
|
||||
Route::get('value-lists/{names}', [ValueListsController::class, 'index'])->withoutMiddleware('verified');
|
||||
|
||||
// RECAPTCHA
|
||||
Route::post('recaptcha/verify', [RecaptchaController::class, 'verify']);
|
||||
|
||||
// SCHEDULE LOG
|
||||
Route::get('logs/schedule', [ScheduleLogController::class, 'index']);
|
||||
Route::post('logs/schedule/rerun/{id}', [ScheduleLogController::class, 'rerun']);
|
||||
Route::get('logs/schedule/download', [ScheduleLogController::class, 'download']);
|
||||
|
||||
// OUTGOING EMAIL LOG
|
||||
Route::get('logs/outgoing-email/download', [OutgoingEmailLogController::class, 'downloadLog']);
|
||||
Route::get('logs/outgoing-email/{id}', [OutgoingEmailLogController::class, 'show']);
|
||||
Route::get('logs/outgoing-email', [OutgoingEmailLogController::class, 'index']);
|
||||
Route::get('logs/outgoing-email/{id}/download', [OutgoingEmailLogController::class, 'downloadLogItem']);
|
||||
|
||||
// ERROR LOG
|
||||
Route::get('logs/error', [ErrorLogController::class, 'index']);
|
||||
Route::get('logs/error/{identifier}/download', [ErrorLogController::class, 'download']);
|
||||
Route::get('logs/error/download-latest', [ErrorLogController::class, 'downloadLatest']);
|
||||
Route::delete('logs/error/{identifier}', [ErrorLogController::class, 'destroy']);
|
||||
|
||||
// BOOTSTRAP
|
||||
Route::get('bootstrap-data', [BootstrapController::class, 'getBootstrapData']);
|
||||
Route::get('remote-config/mobile', [BootstrapController::class, 'getMobileBootstrapData']);
|
||||
|
||||
$verificationLimiter = config('fortify.limiters.verification', '6,1');
|
||||
Route::post('auth/email/verification-notification', [MobileAuthController::class, 'sendEmailVerificationNotification'])->middleware(['throttle:'.$verificationLimiter]);
|
||||
});
|
||||
|
||||
// Mobile app auth
|
||||
$limiter = config('fortify.limiters.login');
|
||||
Route::post('auth/login', [MobileAuthController::class, 'login'])->middleware(array_filter([
|
||||
$limiter ? 'throttle:'.$limiter : null,
|
||||
]))->withoutMiddleware('verifyApiAccess');
|
||||
Route::post('auth/register', [MobileAuthController::class, 'register'])->withoutMiddleware('verifyApiAccess');
|
||||
Route::get('auth/social/{provider}/callback', [SocialAuthController::class, 'loginCallback']);
|
||||
Route::post('auth/password/email', [PasswordResetLinkController::class, 'store'])->middleware(['guest:'.config('fortify.guard')]);
|
||||
});
|
||||
129
common/routes/web.php
Executable file
129
common/routes/web.php
Executable file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
use Common\Auth\Controllers\SocialAuthController;
|
||||
use Common\Auth\Controllers\TwoFactorQrCodeController;
|
||||
use Common\Billing\Invoices\InvoiceController;
|
||||
use Common\Core\Controllers\HomeController;
|
||||
use Common\Core\Install\InstallController;
|
||||
use Common\Core\Install\UpdateController;
|
||||
use Common\Csv\BaseCsvExportController;
|
||||
use Common\Domains\CustomDomainController;
|
||||
use Common\Files\Controllers\DownloadFileController;
|
||||
use Common\Settings\Mail\ConnectGmailAccountController;
|
||||
use Common\Workspaces\Controllers\WorkspaceMembersController;
|
||||
|
||||
Route::group(['middleware' => 'web'], function () {
|
||||
// Download
|
||||
Route::get('file-entries/download/{hashes}', [
|
||||
DownloadFileController::class,
|
||||
'download',
|
||||
]);
|
||||
|
||||
// UPDATE
|
||||
Route::get('update', [UpdateController::class, 'show']);
|
||||
Route::get('update/perform', [UpdateController::class, 'performUpdate']);
|
||||
|
||||
// make sure workspace version of login and register pages are shown on frontend
|
||||
Route::get('workspace/join/login', [HomeController::class, 'show']);
|
||||
Route::get('workspace/join/register', [HomeController::class, 'show']);
|
||||
|
||||
// WORKSPACES
|
||||
Route::get('workspace/join/{workspaceInvite}', [
|
||||
WorkspaceMembersController::class,
|
||||
'join',
|
||||
]);
|
||||
|
||||
// CSV
|
||||
Route::get('csv/download/{csvExport}', [
|
||||
BaseCsvExportController::class,
|
||||
'download',
|
||||
]);
|
||||
|
||||
// INVOICES
|
||||
Route::get('billing/invoices/{uuid}', [InvoiceController::class, 'show']);
|
||||
|
||||
// SOCIAL AUTH
|
||||
Route::group(['prefix' => 'secure'], function () {
|
||||
Route::get('auth/social/{provider}/connect', [
|
||||
SocialAuthController::class,
|
||||
'connect',
|
||||
]);
|
||||
Route::get('auth/social/{provider}/login', [
|
||||
SocialAuthController::class,
|
||||
'login',
|
||||
]);
|
||||
Route::post('auth/social/connect', [
|
||||
SocialAuthController::class,
|
||||
'connectWithPassword',
|
||||
]);
|
||||
Route::get('auth/social/{provider}/retrieve-profile', [
|
||||
SocialAuthController::class,
|
||||
'retrieveProfile',
|
||||
]);
|
||||
Route::get('auth/social/{provider}/callback', [
|
||||
SocialAuthController::class,
|
||||
'loginCallback',
|
||||
]);
|
||||
Route::post('auth/social/{provider}/disconnect', [
|
||||
SocialAuthController::class,
|
||||
'disconnect',
|
||||
]);
|
||||
Route::get('settings/mail/gmail/connect', [
|
||||
ConnectGmailAccountController::class,
|
||||
'connectGmail',
|
||||
]);
|
||||
});
|
||||
|
||||
// CUSTOM DOMAINS
|
||||
Route::group(
|
||||
['prefix' => 'secure', 'middleware' => 'customDomainsEnabled'],
|
||||
function () {
|
||||
Route::post('custom-domain/authorize/{method}', [
|
||||
CustomDomainController::class,
|
||||
'authorizeCrupdate',
|
||||
])->where('method', 'store|update');
|
||||
Route::post('custom-domain/validate/2BrM45vvfS/api', [
|
||||
CustomDomainController::class,
|
||||
'validateDomainApi',
|
||||
]);
|
||||
Route::get('custom-domain/validate/2BrM45vvfS', [
|
||||
CustomDomainController::class,
|
||||
'validateDomain',
|
||||
]);
|
||||
},
|
||||
);
|
||||
|
||||
// TWO FACTOR AUTH
|
||||
Route::get('auth/user/two-factor/qr-code', [
|
||||
TwoFactorQrCodeController::class,
|
||||
'show',
|
||||
])->middleware(['auth']);
|
||||
|
||||
// Laravel Auth routes with names so route('login') and similar calls don't error out
|
||||
Route::get('login', [HomeController::class, 'show'])->name('login');
|
||||
Route::get('register', [HomeController::class, 'show'])->name('register');
|
||||
});
|
||||
|
||||
if (!config('common.site.installed')) {
|
||||
Route::fallback(function () {
|
||||
dd('x');
|
||||
});
|
||||
Route::get('install', [InstallController::class, 'introductionStep'])->name(
|
||||
'install',
|
||||
);
|
||||
Route::get('install/requirements', [
|
||||
InstallController::class,
|
||||
'requirementsStep',
|
||||
]);
|
||||
Route::get('install/database', [InstallController::class, 'databaseStep']);
|
||||
Route::post('install/database/validate', [
|
||||
InstallController::class,
|
||||
'insertAndValidateDatabaseCredentials',
|
||||
]);
|
||||
Route::get('install/admin', [InstallController::class, 'adminStep']);
|
||||
Route::post('install/admin/validate', [
|
||||
InstallController::class,
|
||||
'validateAdminCredentials',
|
||||
]);
|
||||
Route::get('install/finalize', [InstallController::class, 'finalizeStep']);
|
||||
}
|
||||
17
common/routes/webhooks.php
Executable file
17
common/routes/webhooks.php
Executable file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
use Common\Billing\Gateways\Paypal\PaypalWebhookController;
|
||||
use Common\Billing\Gateways\Stripe\StripeWebhookController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
// PAYPAL
|
||||
Route::post('billing/paypal/webhook', [
|
||||
PaypalWebhookController::class,
|
||||
'handleWebhook',
|
||||
]);
|
||||
|
||||
// STRIPE
|
||||
Route::post('billing/stripe/webhook', [
|
||||
StripeWebhookController::class,
|
||||
'handleWebhook',
|
||||
]);
|
||||
Reference in New Issue
Block a user