- API routes refactoring part 2

This commit is contained in:
Peter Papp
2021-02-26 17:03:00 +01:00
parent 55ba82442a
commit 00e515e995
5 changed files with 170 additions and 158 deletions

View File

@@ -30,8 +30,6 @@ class RouteServiceProvider extends ServiceProvider
*/
public function boot()
{
//
parent::boot();
}
@@ -46,7 +44,11 @@ class RouteServiceProvider extends ServiceProvider
$this->mapWebRoutes();
//
$this->mapAdminApiRoutes();
$this->mapSetupWizardApiRoutes();
$this->mapUserApiRoutes();
}
/**
@@ -59,8 +61,8 @@ class RouteServiceProvider extends ServiceProvider
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
/**
@@ -73,8 +75,32 @@ class RouteServiceProvider extends ServiceProvider
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
protected function mapAdminApiRoutes()
{
Route::prefix('api/admin')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/admin.php'));
}
protected function mapUserApiRoutes()
{
Route::prefix('api/user')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/user.php'));
}
protected function mapSetupWizardApiRoutes()
{
Route::prefix('api/setup')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/setup.php'));
}
}

61
routes/admin.php Normal file
View File

@@ -0,0 +1,61 @@
<?php
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\SettingController;
// Dashboard
Route::group(['prefix' => 'dashboard'], function () {
Route::get('/new-users', [DashboardController::class, 'new_registrations']);
Route::get('/', [DashboardController::class, 'index']);
});
// 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::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::group(['prefix' => 'pages'], function () {
Route::patch('/{slug}', [PagesController::class, 'update']);
Route::get('/{slug}', [PagesController::class, 'show']);
Route::get('/', [PagesController::class, 'index']);
});
// Invoices
Route::group(['prefix' => 'invoices'], function () {
Route::get('/{token}', [InvoiceController::class, 'show']);
Route::get('/', [InvoiceController::class, 'index']);
});
// Settings
Route::group(['prefix' => 'settings'], function () {
Route::get('/flush-cache', [AppFunctionsController::class, 'flush_cache']);
Route::post('/stripe', [SettingController::class, 'set_stripe']);
Route::post('/email', [SettingController::class, 'set_email']);
Route::patch('/', [SettingController::class, 'update']);
Route::get('/', [SettingController::class, 'show']);
});

View File

@@ -1,22 +1,6 @@
<?php
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
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;
@@ -25,64 +9,37 @@ 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}', [EditItemsController::class, 'guest_rename_item']);
Route::get('/zip-folder/{unique_id}/public/{token}', [EditItemsController::class, 'guest_zip_folder']);
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::post('/upload/public/{token}', [EditItemsController::class, 'guest_upload']);
Route::post('/move/public/{token}', [EditItemsController::class, 'guest_move']);
// Edit Functions
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}', [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']);
// Sharing page browsing
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::class, 'contact_form']);
Route::get('/page/{slug}', [AppFunctionsController::class, 'get_page']);
Route::get('/content', [AppFunctionsController::class, 'get_settings']);
// Pages
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']);
// 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']);
});
// Password
Route::group(['prefix' => 'password'], function () {
Route::post('/email', [ForgotPasswordController::class, 'sendResetLinkEmail']);
Route::post('/reset', [ResetPasswordController::class, 'reset']);
});
// User master Routes
@@ -105,38 +62,12 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
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::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::group(['prefix' => 'share'], function () {
Route::post('/{token}/send-email', [ShareController::class, 'shared_send_via_email']);
@@ -146,62 +77,6 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
});
});
// Admin
Route::group(['middleware' => ['auth:api', 'auth.master', 'auth.admin', 'scope:master']], function () {
// Admin
Route::group(['prefix' => 'dashboard'], function () {
Route::get('/', [DashboardController::class, 'index']);
Route::get('/new-users', [DashboardController::class, 'new_registrations']);
});
// 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::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::group(['prefix' => 'pages'], function () {
Route::patch('/{slug}', [PagesController::class, 'update']);
Route::get('/{slug}', [PagesController::class, 'show']);
Route::get('/', [PagesController::class, 'index']);
});
// Invoices
Route::group(['prefix' => 'invoices'], function () {
Route::get('/{token}', [InvoiceController::class, 'show']);
Route::get('/', [InvoiceController::class, 'index']);
});
// Settings
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 () {

12
routes/setup.php Normal file
View File

@@ -0,0 +1,12 @@
<?php
use App\Http\Controllers\General\SetupWizardController;
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']);

38
routes/user.php Normal file
View File

@@ -0,0 +1,38 @@
<?php
use App\Http\Controllers\Auth\AuthController;
use App\Http\Controllers\User\AccountController;
use App\Http\Controllers\User\PaymentMethodsController;
use App\Http\Controllers\User\SubscriptionController;
Route::post('/check', [AuthController::class, 'check_account']);
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
Route::group(['middleware' => ['auth:sanctum']], function () {
// Account
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']);
// 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']);
});
});