- API routes refactoring

- setup:dev artisan command
This commit is contained in:
Peter Papp
2021-02-25 21:32:32 +01:00
parent 2f332197e6
commit 55ba82442a
24 changed files with 559 additions and 366 deletions

View File

@@ -10,190 +10,220 @@
|
*/
/*
|--------------------------------------------------------------------------
| Public API Routes
|--------------------------------------------------------------------------
*/
// Setup Wizard
Route::group(['middleware' => ['api'], 'prefix' => 'setup'], function () {
Route::post('/purchase-code', 'General\SetupWizardController@verify_purchase_code');
Route::post('/database', 'General\SetupWizardController@setup_database');
Route::post('/stripe-credentials', 'General\SetupWizardController@store_stripe_credentials');
Route::post('/stripe-billings', 'General\SetupWizardController@store_stripe_billings');
Route::post('/stripe-plans', 'General\SetupWizardController@store_stripe_plans');
Route::post('/environment-setup', 'General\SetupWizardController@store_environment_setup');
Route::post('/app-setup', 'General\SetupWizardController@store_app_settings');
Route::post('/admin-setup', 'General\SetupWizardController@create_admin_account');
});
// Upgrade App
Route::group(['middleware' => ['api'], 'prefix' => 'upgrade'], function () {
Route::post('/app', 'General\UpgradeAppController@upgrade');
});
// Plans
Route::group(['middleware' => ['api'], 'prefix' => 'public'], function () {
Route::get('/pricing', 'General\PricingController@index');
});
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\InvoiceController;
use App\Http\Controllers\Admin\PagesController;
use App\Http\Controllers\Admin\PlanController;
use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\AppFunctionsController;
use App\Http\Controllers\Auth\AuthController;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\Auth\ResetPasswordController;
use App\Http\Controllers\FileBrowser\BrowseController;
use App\Http\Controllers\FileFunctions\EditItemsController;
use App\Http\Controllers\FileFunctions\FavouriteController;
use App\Http\Controllers\FileFunctions\ShareController;
use App\Http\Controllers\FileFunctions\TrashController;
use App\Http\Controllers\General\PricingController;
use App\Http\Controllers\General\SetupWizardController;
use App\Http\Controllers\Sharing\FileSharingController;
use App\Http\Controllers\User\AccountController;
use App\Http\Controllers\User\PaymentMethodsController;
use App\Http\Controllers\User\SubscriptionController;
// Public routes
Route::group(['middleware' => ['api']], function () {
// Edit Functions
Route::patch('/rename-item/{unique_id}/public/{token}', 'FileFunctions\EditItemsController@guest_rename_item');
Route::post('/create-folder/public/{token}', 'FileFunctions\EditItemsController@guest_create_folder');
Route::post('/remove-item/public/{token}', 'FileFunctions\EditItemsController@guest_delete_item');
Route::post('/zip/public/{token}', 'FileFunctions\EditItemsController@guest_zip_multiple_files');
Route::get('/zip-folder/{unique_id}/public/{token}', 'FileFunctions\EditItemsController@guest_zip_folder');
Route::post('/upload/public/{token}', 'FileFunctions\EditItemsController@guest_upload');
Route::post('/move/public/{token}', 'FileFunctions\EditItemsController@guest_move');
Route::patch('/rename-item/{unique_id}/public/{token}', [EditItemsController::class, 'guest_rename_item']);
Route::post('/create-folder/public/{token}', [EditItemsController::class, 'guest_create_folder']);
Route::post('/remove-item/public/{token}', [EditItemsController::class, 'guest_delete_item']);
Route::post('/zip/public/{token}', [EditItemsController::class, 'guest_zip_multiple_files']);
Route::get('/zip-folder/{unique_id}/public/{token}', [EditItemsController::class, 'guest_zip_folder']);
Route::post('/upload/public/{token}', [EditItemsController::class, 'guest_upload']);
Route::post('/move/public/{token}', [EditItemsController::class, 'guest_move']);
// Sharing page browsing
Route::get('/folders/{unique_id}/public/{token}', 'Sharing\FileSharingController@get_public_folders');
Route::get('/navigation/public/{token}', 'Sharing\FileSharingController@get_public_navigation_tree');
Route::post('/shared/authenticate/{token}', 'Sharing\FileSharingController@authenticate');
Route::get('/search/public/{token}', 'Sharing\FileSharingController@search_public');
Route::get('/files/{token}/public', 'Sharing\FileSharingController@file_public');
Route::get('/shared/{token}', 'FileFunctions\ShareController@show');
// User reset password
Route::post('/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
Route::post('/password/reset', 'Auth\ResetPasswordController@reset');
// User authentication
Route::post('/user/check', 'Auth\AuthController@check_account');
Route::post('/user/register', 'Auth\AuthController@register');
Route::post('/user/login', 'Auth\AuthController@login');
Route::get('/folders/{unique_id}/public/{token}', [FileSharingController::class, 'get_public_folders']);
Route::get('/navigation/public/{token}', [FileSharingController::class, 'get_public_navigation_tree']);
Route::post('/shared/authenticate/{token}', [FileSharingController::class, 'authenticate']);
Route::get('/search/public/{token}', [FileSharingController::class, 'search_public']);
Route::get('/files/{token}/public', [FileSharingController::class, 'file_public']);
Route::get('/shared/{token}', [ShareController::class, 'show']);
// Pages
Route::post('/contact', 'AppFunctionsController@contact_form');
Route::get('/page/{slug}', 'AppFunctionsController@get_page');
Route::get('/content', 'AppFunctionsController@get_settings');
Route::post('/contact', [AppFunctionsController::class, 'contact_form']);
Route::get('/page/{slug}', [AppFunctionsController::class, 'get_page']);
Route::get('/content', [AppFunctionsController::class, 'get_settings']);
// Stripe
Route::get('/pricing', [PricingController::class, 'index']);
// Password
Route::group(['prefix' => 'password'], function () {
Route::post('/email', [ForgotPasswordController::class, 'sendResetLinkEmail']);
Route::post('/reset', [ResetPasswordController::class, 'reset']);
});
// User
Route::group(['prefix' => '/user'], function () {
Route::post('/check', [AuthController::class, 'check_account']);
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
});
// Setup Wizard
Route::group(['prefix' => 'setup'], function () {
Route::post('/purchase-code', [SetupWizardController::class, 'verify_purchase_code']);
Route::post('/database', [SetupWizardController::class, 'setup_database']);
Route::post('/stripe-credentials', [SetupWizardController::class, 'store_stripe_credentials']);
Route::post('/stripe-billings', [SetupWizardController::class, 'store_stripe_billings']);
Route::post('/stripe-plans', [SetupWizardController::class, 'store_stripe_plans']);
Route::post('/environment-setup', [SetupWizardController::class, 'store_environment_setup']);
Route::post('/app-setup', [SetupWizardController::class, 'store_app_settings']);
Route::post('/admin-setup', [SetupWizardController::class, 'create_admin_account']);
});
});
// User master Routes
Route::group(['middleware' => ['auth:api', 'auth.master', 'scope:master']], function () {
// User
Route::patch('/user/relationships/settings', 'User\AccountController@update_user_settings');
Route::post('/user/password', 'User\AccountController@change_password');
Route::patch('/user/profile', 'User\AccountController@update_profile');
Route::get('/user/subscription', 'User\SubscriptionController@show');
Route::get('/user/invoices', 'User\AccountController@invoices');
Route::get('/user/storage', 'User\AccountController@storage');
Route::get('/user', 'User\AccountController@user');
// Payment cards
Route::delete('/user/payment-cards/{id}', 'User\PaymentMethodsController@delete');
Route::patch('/user/payment-cards/{id}', 'User\PaymentMethodsController@update');
Route::post('/user/payment-cards', 'User\PaymentMethodsController@store');
Route::get('/user/payments', 'User\PaymentMethodsController@index');
// Subscription
Route::get('/stripe/setup-intent', 'User\SubscriptionController@stripe_setup_intent');
Route::post('/subscription/upgrade', 'User\SubscriptionController@upgrade');
Route::post('/subscription/cancel', 'User\SubscriptionController@cancel');
Route::post('/subscription/resume', 'User\SubscriptionController@resume');
Route::group(['middleware' => ['auth:sanctum']], function () {
// Browse
Route::get('/participant-uploads', 'FileBrowser\BrowseController@participant_uploads');
Route::get('/navigation', 'FileBrowser\BrowseController@navigation_tree');
Route::get('/folders/{unique_id}', 'FileBrowser\BrowseController@folder');
Route::get('/shared-all', 'FileBrowser\BrowseController@shared');
Route::get('/latest', 'FileBrowser\BrowseController@latest');
Route::get('/search', 'FileBrowser\BrowseController@search');
Route::get('/trash', 'FileBrowser\BrowseController@trash');
Route::group(['prefix' => 'browse'], function () {
Route::get('/participant-uploads', [BrowseController::class, 'participant_uploads']);
Route::get('/navigation', [BrowseController::class, 'navigation_tree']);
Route::get('/folders/{unique_id}', [BrowseController::class, 'folder']);
Route::get('/shared-all', [BrowseController::class, 'shared']);
Route::get('/latest', [BrowseController::class, 'latest']);
Route::get('/search', [BrowseController::class, 'search']);
});
// Trash
Route::post('/restore-items', 'FileFunctions\TrashController@restore');
Route::delete('/empty-trash', 'FileFunctions\TrashController@clear');
Route::group(['prefix' => 'trash'], function () {
Route::post('/restore-items', [TrashController::class, 'restore']);
Route::delete('/empty-trash', [TrashController::class, 'clear']);
Route::get('/', [BrowseController::class, 'trash']);
});
// Subscription
Route::group(['prefix' => 'subscription'], function () {
Route::get('/setup-intent', [SubscriptionController::class, 'stripe_setup_intent']);
Route::post('/upgrade', [SubscriptionController::class, 'upgrade']);
Route::post('/cancel', [SubscriptionController::class, 'cancel']);
Route::post('/resume', [SubscriptionController::class, 'resume']);
});
// Favourites
Route::delete('/folders/favourites/{unique_id}', 'FileFunctions\FavouriteController@destroy');
Route::post('/folders/favourites', 'FileFunctions\FavouriteController@store');
Route::group(['prefix' => 'folders'], function () {
Route::delete('/favourites/{unique_id}', [FavouriteController::class, 'destroy']);
Route::post('/favourites', [FavouriteController::class, 'store']);
});
// User
Route::group(['prefix' => 'user'], function () {
Route::patch('/relationships/settings', [AccountController::class, 'update_user_settings']);
Route::post('/password', [AccountController::class, 'change_password']);
Route::patch('/profile', [AccountController::class, 'update_profile']);
Route::get('/subscription', [SubscriptionController::class, 'show']);
Route::get('/invoices', [AccountController::class, 'invoices']);
Route::get('/storage', [AccountController::class, 'storage']);
Route::get('/logout', [AuthController::class, 'logout']);
Route::get('/', [AccountController::class, 'user']);
// Payment cards
Route::delete('/payment-cards/{id}', [PaymentMethodsController::class, 'delete']);
Route::patch('/payment-cards/{id}', [PaymentMethodsController::class, 'update']);
Route::post('/payment-cards', [PaymentMethodsController::class, 'store']);
Route::get('/payments', [PaymentMethodsController::class, 'index']);
});
// Share
Route::post('/share/{token}/send-email', 'FileFunctions\ShareController@shared_send_via_email');
Route::post('/share/cancel', 'FileFunctions\ShareController@destroy');
Route::patch('/share/{token}', 'FileFunctions\ShareController@update');
Route::post('/share', 'FileFunctions\ShareController@store');
// Auth
Route::get('/logout', 'Auth\AuthController@logout');
Route::group(['prefix' => 'share'], function () {
Route::post('/{token}/send-email', [ShareController::class, 'shared_send_via_email']);
Route::post('/cancel', [ShareController::class, 'destroy']);
Route::patch('/{token}', [ShareController::class, 'update']);
Route::post('/', [ShareController::class, 'store']);
});
});
// Admin
Route::group(['middleware' => ['auth:api', 'auth.master', 'auth.admin', 'scope:master']], function () {
// Admin
Route::get('/dashboard', 'Admin\DashboardController@index');
Route::get('/dashboard/new-users', 'Admin\DashboardController@new_registrations');
Route::group(['prefix' => 'dashboard'], function () {
Route::get('/', [DashboardController::class, 'index']);
Route::get('/new-users', [DashboardController::class, 'new_registrations']);
});
// Get users info
Route::get('/users/{id}/subscription', 'Admin\UserController@subscription');
Route::get('/users/{id}/storage', 'Admin\UserController@storage');
Route::get('/users/{id}/detail', 'Admin\UserController@details');
Route::get('/users', 'Admin\UserController@users');
// Edit users
Route::post('/users/{id}/send-password-email', 'Admin\UserController@send_password_reset_email');
Route::patch('/users/{id}/capacity', 'Admin\UserController@change_storage_capacity');
Route::delete('/users/{id}/delete', 'Admin\UserController@delete_user');
Route::patch('/users/{id}/role', 'Admin\UserController@change_role');
Route::get('/users/{id}/invoices', 'Admin\UserController@invoices');
Route::post('/users/create', 'Admin\UserController@create_user');
// Users
Route::group(['prefix' => 'users'], function () {
Route::post('/{id}/send-password-email', [UserController::class, 'send_password_reset_email']);
Route::patch('/{id}/capacity', [UserController::class, 'change_storage_capacity']);
Route::get('/{id}/subscription', [UserController::class, 'subscription']);
Route::delete('/{id}/delete', [UserController::class, 'delete_user']);
Route::patch('/{id}/role', [UserController::class, 'change_role']);
Route::get('/{id}/invoices', [UserController::class, 'invoices']);
Route::get('/{id}/storage', [UserController::class, 'storage']);
Route::post('/create', [UserController::class, 'create_user']);
Route::get('/{id}/detail', [UserController::class, 'details']);
Route::get('/', [UserController::class, 'users']);
});
// Plans
Route::get('/plans/{id}/subscribers', 'Admin\PlanController@subscribers');
Route::patch('/plans/{id}/update', 'Admin\PlanController@update');
Route::delete('/plans/{id}', 'Admin\PlanController@delete');
Route::post('/plans/store', 'Admin\PlanController@store');
Route::get('/plans/{id}', 'Admin\PlanController@show');
Route::get('/plans', 'Admin\PlanController@index');
Route::group(['prefix' => 'plans'], function () {
Route::get('/{id}/subscribers', [PlanController::class, 'subscribers']);
Route::patch('/{id}/update', [PlanController::class, 'update']);
Route::delete('/{id}', [PlanController::class, 'delete']);
Route::post('/store', [PlanController::class, 'store']);
Route::get('/{id}', [PlanController::class, 'show']);
Route::get('/', [PlanController::class, 'index']);
});
// Pages
Route::get('/pages', 'Admin\PagesController@index');
Route::get('/pages/{slug}', 'Admin\PagesController@show');
Route::patch('/pages/{slug}', 'Admin\PagesController@update');
Route::group(['prefix' => 'pages'], function () {
Route::patch('/{slug}', [PagesController::class, 'update']);
Route::get('/{slug}', [PagesController::class, 'show']);
Route::get('/', [PagesController::class, 'index']);
});
// Invoices
Route::get('/invoices/{token}', 'Admin\InvoiceController@show');
Route::get('/invoices', 'Admin\InvoiceController@index');
Route::group(['prefix' => 'invoices'], function () {
Route::get('/{token}', [InvoiceController::class, 'show']);
Route::get('/', [InvoiceController::class, 'index']);
});
// Settings
Route::post('/settings/email', 'SettingController@set_email');
Route::post('/settings/stripe', 'SettingController@set_stripe');
Route::patch('/settings', 'SettingController@update');
Route::get('/settings', 'SettingController@show');
Route::get('/flush-cache', 'AppFunctionsController@flush_cache');
Route::group(['prefix' => 'settings'], function () {
Route::post('/email', [InvoiceController::class, 'set_email']);
Route::post('/stripe', [InvoiceController::class, 'set_stripe']);
Route::patch('/', [InvoiceController::class, 'update']);
Route::get('/', [InvoiceController::class, 'show']);
Route::get('/flush-cache', [AppFunctionsController::class, 'flush_cache']);
});
});
// Protected sharing routes for authenticated user
Route::group(['middleware' => ['auth:api', 'auth.shared', 'scope:visitor,editor']], function () {
// Browse folders & files
Route::get('/folders/{unique_id}/private', 'Sharing\FileSharingController@get_private_folders');
Route::get('/navigation/private', 'Sharing\FileSharingController@get_private_navigation_tree');
Route::get('/search/private', 'Sharing\FileSharingController@search_private');
Route::get('/files/private', 'Sharing\FileSharingController@file_private');
Route::get('/folders/{unique_id}/private', [FileSharingController::class, 'get_private_folders']);
Route::get('/navigation/private', [FileSharingController::class, 'get_private_navigation_tree']);
Route::get('/search/private', [FileSharingController::class, 'search_private']);
Route::get('/files/private', [FileSharingController::class, 'file_private']);
});
// User master,editor routes
Route::group(['middleware' => ['auth:api', 'auth.shared', 'auth.master', 'scope:master,editor']], function () {
// Edit items
Route::patch('/rename-item/{unique_id}', 'FileFunctions\EditItemsController@user_rename_item');
Route::post('/create-folder', 'FileFunctions\EditItemsController@user_create_folder');
Route::post('/remove-item', 'FileFunctions\EditItemsController@user_delete_item');
Route::post('/zip', 'FileFunctions\EditItemsController@user_zip_multiple_files');
Route::get('/zip-folder/{unique_id}', 'FileFunctions\EditItemsController@user_zip_folder');
Route::post('/upload', 'FileFunctions\EditItemsController@user_upload');
Route::post('/move', 'FileFunctions\EditItemsController@user_move');
Route::patch('/rename-item/{unique_id}', [EditItemsController::class, 'user_rename_item']);
Route::post('/create-folder', [EditItemsController::class, 'user_create_folder']);
Route::post('/remove-item', [EditItemsController::class, 'user_delete_item']);
Route::post('/zip', [EditItemsController::class, 'user_zip_multiple_files']);
Route::get('/zip-folder/{unique_id}', [EditItemsController::class, 'user_zip_folder']);
Route::post('/upload', [EditItemsController::class, 'user_upload']);
Route::post('/move', [EditItemsController::class, 'user_move']);
//Get Emojis List
Route::get('/emojis-list', 'AppFunctionsController@get_emojis_list');
Route::get('/emojis-list', [AppFunctionsController::class, 'get_emojis_list']);
});

View File

@@ -12,6 +12,8 @@
*/
// Stripe WebHook
use App\Http\Controllers\General\UpgradeAppController;
Route::post('/stripe/webhook', 'WebhookController@handleWebhook');
// Deployment WebHook URL
@@ -39,10 +41,10 @@ Route::group(['middleware' => ['auth:api', 'auth.master', 'scope:master']], func
});
// Admin system tools
Route::get('/service/upgrade', 'General\UpgradeAppController@upgrade');
Route::group(['middleware' => ['auth:api', 'auth.master', 'auth.admin', 'scope:master'], 'prefix' => 'service'], function () {
Route::get('/down', 'General\UpgradeAppController@down');
Route::get('/up', 'General\UpgradeAppController@up');
Route::post('/upgrade', [UpgradeAppController::class, 'upgrade']);
Route::get('/down', [UpgradeAppController::class, 'down']);
Route::get('/up', [UpgradeAppController::class, 'up']);
});
// Get og site for web crawlers