ajout app

This commit is contained in:
2024-04-17 20:22:30 +02:00
parent cc017cfc5e
commit f9d05a2fd3
8025 changed files with 729805 additions and 0 deletions

1223
SNIPE-IT/routes/api.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
<?php
use App\Models\Setting;
use Illuminate\Foundation\Inspiring;
/*
|--------------------------------------------------------------------------
| Console Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of your Closure based console
| commands. Each Closure is bound to a command instance allowing a
| simple approach to interacting with each command's IO methods.
|
*/
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
Artisan::command('snipeit:travisci-install', function () {
if (! Setting::setupCompleted()) {
$settings = new Setting();
$settings->site_name = 'test-ci';
$settings->alert_email = 'test@example.com';
$settings->alerts_enabled = 1;
$settings->brand = 1;
$settings->locale = 'en';
$settings->default_currency = 'USD';
$settings->user_id = 1;
$settings->email_domain = 'example.com';
$settings->email_format = 'filastname';
$settings->save();
} else {
$this->comment('Setup already ran');
}
})->purpose('Travis-cli install script for unit tests');

38
SNIPE-IT/routes/scim.php Normal file
View File

@ -0,0 +1,38 @@
<?php
use ArieTimmerman\Laravel\SCIMServer\RouteProvider as SCIMRouteProvider;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| SCIM Routes
|--------------------------------------------------------------------------
|
| These are the routes that we have to explicitly inject from the
| laravel-scim-server project, which gives Snipe-IT SCIM support
|
*/
SCIMRouteProvider::publicRoutes(); // Make sure to load public routes *FIRST*
Route::middleware(['auth:api','authorize:superadmin'])->group(function () {
SCIMRouteProvider::routes(
[
/*
* If we leave public_routes as 'true', the public routes will load *now* and
* be jammed into the same middleware that these private routes are loaded
* with. That's bad, because these routes are *supposed* to be public.
*
* We loaded them a few lines above, *first*, otherwise the various
* fallback routes in the library defined within these *secured* routes
* will "take over" the above routes - and then you will end up losing
* like 4 hours of your life trying to figure out why the public routes
* aren't quite working right. Ask me how I know (BMW, 3/19/2022)
*/
'public_routes' => false
]
);
SCIMRouteProvider::meRoutes();
}); // ->can('superuser');

543
SNIPE-IT/routes/web.php Normal file
View File

@ -0,0 +1,543 @@
<?php
use App\Http\Controllers\Account;
use App\Http\Controllers\ActionlogController;
use App\Http\Controllers\CategoriesController;
use App\Http\Controllers\CompaniesController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\DepartmentsController;
use App\Http\Controllers\DepreciationsController;
use App\Http\Controllers\GroupsController;
use App\Http\Controllers\HealthController;
use App\Http\Controllers\ImportsController;
use App\Http\Controllers\LabelsController;
use App\Http\Controllers\LocationsController;
use App\Http\Controllers\ManufacturersController;
use App\Http\Controllers\ModalController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\ReportsController;
use App\Http\Controllers\SettingsController;
use App\Http\Controllers\StatuslabelsController;
use App\Http\Controllers\SuppliersController;
use App\Http\Controllers\ViewAssetsController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\Auth\ResetPasswordController;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
Route::group(['middleware' => 'auth'], function () {
/*
* Companies
*/
Route::resource('companies', CompaniesController::class, [
'parameters' => ['company' => 'company_id'],
]);
/*
* Categories
*/
Route::resource('categories', CategoriesController::class, [
'parameters' => ['category' => 'category_id'],
]);
/*
* Labels
*/
Route::get(
'labels/{labelName}',
[LabelsController::class, 'show']
)->where('labelName', '.*')->name('labels.show');
/*
* Locations
*/
Route::group(['prefix' => 'locations', 'middleware' => ['auth']], function () {
Route::post(
'bulkdelete',
[LocationsController::class, 'postBulkDelete']
)->name('locations.bulkdelete.show');
Route::post(
'bulkedit',
[LocationsController::class, 'postBulkDeleteStore']
)->name('locations.bulkdelete.store');
Route::get('{locationId}/clone',
[LocationsController::class, 'getClone']
)->name('clone/location');
Route::get(
'{locationId}/printassigned',
[LocationsController::class, 'print_assigned']
)->name('locations.print_assigned');
Route::get(
'{locationId}/printallassigned',
[LocationsController::class, 'print_all_assigned']
)->name('locations.print_all_assigned');
});
Route::resource('locations', LocationsController::class, [
'parameters' => ['location' => 'location_id'],
]);
/*
* Manufacturers
*/
Route::group(['prefix' => 'manufacturers', 'middleware' => ['auth']], function () {
Route::post('{manufacturers_id}/restore', [ManufacturersController::class, 'restore'] )->name('restore/manufacturer');
});
Route::resource('manufacturers', ManufacturersController::class, [
'parameters' => ['manufacturer' => 'manufacturers_id'],
]);
/*
* Suppliers
*/
Route::resource('suppliers', SuppliersController::class, [
'parameters' => ['supplier' => 'supplier_id'],
]);
/*
* Depreciations
*/
Route::resource('depreciations', DepreciationsController::class, [
'parameters' => ['depreciation' => 'depreciation_id'],
]);
/*
* Status Labels
*/
Route::resource('statuslabels', StatuslabelsController::class, [
'parameters' => ['statuslabel' => 'statuslabel_id'],
]);
/*
* Departments
*/
Route::resource('departments', DepartmentsController::class, [
'parameters' => ['department' => 'department_id'],
]);
});
/*
|
|--------------------------------------------------------------------------
| Re-Usable Modal Dialog routes.
|--------------------------------------------------------------------------
|
| Routes for various modal dialogs to interstitially create various things
|
*/
Route::group(['middleware' => 'auth', 'prefix' => 'modals'], function () {
Route::get('{type}/{itemId?}', [ModalController::class, 'show'] )->name('modal.show');
});
/*
|--------------------------------------------------------------------------
| Log Routes
|--------------------------------------------------------------------------
|
| Register all the admin routes.
|
*/
Route::group(['middleware' => 'auth'], function () {
Route::get(
'display-sig/{filename}',
[ActionlogController::class, 'displaySig']
)->name('log.signature.view');
Route::get(
'stored-eula-file/{filename}',
[ActionlogController::class, 'getStoredEula']
)->name('log.storedeula.download');
});
/*
|--------------------------------------------------------------------------
| Admin Routes
|--------------------------------------------------------------------------
|
| Register all the admin routes.
|
*/
Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'authorize:superuser']], function () {
Route::get('settings', [SettingsController::class, 'getSettings'])->name('settings.general.index');
Route::post('settings', [SettingsController::class, 'postSettings'])->name('settings.general.save');
Route::get('branding', [SettingsController::class, 'getBranding'])->name('settings.branding.index');
Route::post('branding', [SettingsController::class, 'postBranding'])->name('settings.branding.save');
Route::get('security', [SettingsController::class, 'getSecurity'])->name('settings.security.index');
Route::post('security', [SettingsController::class, 'postSecurity'])->name('settings.security.save');
Route::get('groups', [GroupsController::class, 'index'])->name('settings.groups.index');
Route::get('localization', [SettingsController::class, 'getLocalization'])->name('settings.localization.index');
Route::post('localization', [SettingsController::class, 'postLocalization'])->name('settings.localization.save');
Route::get('notifications', [SettingsController::class, 'getAlerts'])->name('settings.alerts.index');
Route::post('notifications', [SettingsController::class, 'postAlerts'])->name('settings.alerts.save');
Route::get('slack', [SettingsController::class, 'getSlack'])->name('settings.slack.index');
Route::post('slack', [SettingsController::class, 'postSlack'])->name('settings.slack.save');
Route::get('asset_tags', [SettingsController::class, 'getAssetTags'])->name('settings.asset_tags.index');
Route::post('asset_tags', [SettingsController::class, 'postAssetTags'])->name('settings.asset_tags.save');
Route::get('barcodes', [SettingsController::class, 'getBarcodes'])->name('settings.barcodes.index');
Route::post('barcodes', [SettingsController::class, 'postBarcodes'])->name('settings.barcodes.save');
Route::get('labels', [SettingsController::class, 'getLabels'])->name('settings.labels.index');
Route::post('labels', [SettingsController::class, 'postLabels'])->name('settings.labels.save');
Route::get('ldap', [SettingsController::class, 'getLdapSettings'])->name('settings.ldap.index');
Route::post('ldap', [SettingsController::class, 'postLdapSettings'])->name('settings.ldap.save');
Route::get('phpinfo', [SettingsController::class, 'getPhpInfo'])->name('settings.phpinfo.index');
Route::get('oauth', [SettingsController::class, 'api'])->name('settings.oauth.index');
Route::get('google', [SettingsController::class, 'getGoogleLoginSettings'])->name('settings.google.index');
Route::post('google', [SettingsController::class, 'postGoogleLoginSettings'])->name('settings.google.save');
Route::get('purge', [SettingsController::class, 'getPurge'])->name('settings.purge.index');
Route::post('purge', [SettingsController::class, 'postPurge'])->name('settings.purge.save');
Route::get('login-attempts', [SettingsController::class, 'getLoginAttempts'])->name('settings.logins.index');
// Backups
Route::group(['prefix' => 'backups', 'middleware' => 'auth'], function () {
Route::get('download/{filename}',
[SettingsController::class, 'downloadFile'])->name('settings.backups.download');
Route::delete('delete/{filename}',
[SettingsController::class, 'deleteFile'])->name('settings.backups.destroy');
Route::post('/',
[SettingsController::class, 'postBackups']
)->name('settings.backups.create');
Route::post('/restore/{filename}',
[SettingsController::class, 'postRestore']
)->name('settings.backups.restore');
Route::post('/upload',
[SettingsController::class, 'postUploadBackup']
)->name('settings.backups.upload');
// Handle redirect from after POST request from backup restore
Route::get('/restore/{filename?}', function () {
return redirect(route('settings.backups.index'));
});
Route::get('/', [SettingsController::class, 'getBackups'])->name('settings.backups.index');
});
Route::resource('groups', GroupsController::class, [
'middleware' => ['auth'],
'parameters' => ['group' => 'group_id'],
]);
Route::get('/', [SettingsController::class, 'index'])->name('settings.index');
});
/*
|--------------------------------------------------------------------------
| Importer Routes
|--------------------------------------------------------------------------
|
|
|
*/
Route::get('/import',
\App\Http\Livewire\Importer::class
)->middleware('auth')->name('imports.index');
/*
|--------------------------------------------------------------------------
| Account Routes
|--------------------------------------------------------------------------
|
|
|
*/
Route::group(['prefix' => 'account', 'middleware' => ['auth']], function () {
// Profile
Route::get('profile', [ProfileController::class, 'getIndex'])->name('profile');
Route::post('profile', [ProfileController::class, 'postIndex']);
Route::get('menu', [ProfileController::class, 'getMenuState'])->name('account.menuprefs');
Route::get('password', [ProfileController::class, 'password'])->name('account.password.index');
Route::post('password', [ProfileController::class, 'passwordSave']);
Route::get('api', [ProfileController::class, 'api'])->name('user.api');
// View Assets
Route::get('view-assets', [ViewAssetsController::class, 'getIndex'])->name('view-assets');
Route::get('requested', [ViewAssetsController::class, 'getRequestedAssets'])->name('account.requested');
// Profile
Route::get(
'requestable-assets',
[ViewAssetsController::class, 'getRequestableIndex']
)->name('requestable-assets');
Route::post(
'request-asset/{assetId}',
[ViewAssetsController::class, 'getRequestAsset']
)->name('account/request-asset');
Route::post(
'request/{itemType}/{itemId}/{cancel_by_admin?}/{requestingUser?}',
[ViewAssetsController::class, 'getRequestItem']
)->name('account/request-item');
// Account Dashboard
Route::get('/', [ViewAssetsController::class, 'getIndex'])->name('account');
Route::get('accept', [Account\AcceptanceController::class, 'index'])
->name('account.accept');
Route::get('accept/{id}', [Account\AcceptanceController::class, 'create'])
->name('account.accept.item');
Route::post('accept/{id}', [Account\AcceptanceController::class, 'store'])
->name('account.store-acceptance');
Route::get(
'print',
[
ProfileController::class,
'printInventory'
]
)->name('profile.print');
Route::post(
'email',
[
ProfileController::class,
'emailAssetList'
]
)->name('profile.email_assets');
});
Route::group(['middleware' => ['auth']], function () {
Route::get('reports/audit',
[ReportsController::class, 'audit']
)->name('reports.audit');
Route::get(
'reports/depreciation',
[ReportsController::class, 'getDeprecationReport']
)->name('reports/depreciation');
Route::get(
'reports/export/depreciation',
[ReportsController::class, 'exportDeprecationReport']
)->name('reports/export/depreciation');
Route::get(
'reports/asset_maintenances',
[ReportsController::class, 'getAssetMaintenancesReport']
)->name('reports/asset_maintenances');
Route::get(
'reports/export/asset_maintenances',
[ReportsController::class, 'exportAssetMaintenancesReport']
)->name('reports/export/asset_maintenances');
Route::get(
'reports/licenses',
[ReportsController::class, 'getLicenseReport']
)->name('reports/licenses');
Route::get(
'reports/export/licenses',
[ReportsController::class, 'exportLicenseReport']
)->name('reports/export/licenses');
Route::get('reports/accessories', [ReportsController::class, 'getAccessoryReport'])->name('reports/accessories');
Route::get(
'reports/export/accessories',
[ReportsController::class, 'exportAccessoryReport']
)->name('reports/export/accessories');
Route::get('reports/custom', [ReportsController::class, 'getCustomReport'])->name('reports/custom');
Route::post('reports/custom', [ReportsController::class, 'postCustom']);
Route::get(
'reports/activity',
[ReportsController::class, 'getActivityReport']
)->name('reports.activity');
Route::post('reports/activity', [ReportsController::class, 'postActivityReport']);
Route::get(
'reports/unaccepted_assets/{deleted?}',
[ReportsController::class, 'getAssetAcceptanceReport']
)->name('reports/unaccepted_assets');
Route::post(
'reports/unaccepted_assets/sent_reminder',
[ReportsController::class, 'sentAssetAcceptanceReminder']
)->name('reports/unaccepted_assets_sent_reminder');
Route::delete(
'reports/unaccepted_assets/{acceptanceId}/delete',
[ReportsController::class, 'deleteAssetAcceptance']
)->name('reports/unaccepted_assets_delete');
Route::post(
'reports/unaccepted_assets/{deleted?}',
[ReportsController::class, 'postAssetAcceptanceReport']
)->name('reports/export/unaccepted_assets');
});
Route::get(
'auth/signin',
[LoginController::class, 'legacyAuthRedirect']
);
/*
|--------------------------------------------------------------------------
| Setup Routes
|--------------------------------------------------------------------------
|
|
|
*/
Route::group(['prefix' => 'setup', 'middleware' => 'web'], function () {
Route::get(
'user',
[SettingsController::class, 'getSetupUser']
)->name('setup.user');
Route::post(
'user',
[SettingsController::class, 'postSaveFirstAdmin']
)->name('setup.user.save');
Route::get(
'migrate',
[SettingsController::class, 'getSetupMigrate']
)->name('setup.migrate');
Route::get(
'done',
[SettingsController::class, 'getSetupDone']
)->name('setup.done');
Route::get(
'mailtest',
[SettingsController::class, 'ajaxTestEmail']
)->name('setup.mailtest');
Route::get(
'/',
[SettingsController::class, 'getSetupIndex']
)->name('setup');
});
Route::group(['middleware' => 'web'], function () {
Route::get(
'login',
[LoginController::class, 'showLoginForm']
)->name("login");
Route::post(
'login',
[LoginController::class, 'login']
);
Route::get(
'two-factor-enroll',
[LoginController::class, 'getTwoFactorEnroll']
)->name('two-factor-enroll');
Route::get(
'two-factor',
[LoginController::class, 'getTwoFactorAuth']
)->name('two-factor');
Route::post(
'two-factor',
[LoginController::class, 'postTwoFactorAuth']
);
Route::post(
'password/email',
[ForgotPasswordController::class, 'sendResetLinkEmail']
)->name('password.email')->middleware('throttle:forgotten_password');
Route::get(
'password/reset',
[ForgotPasswordController::class, 'showLinkRequestForm']
)->name('password.request')->middleware('throttle:forgotten_password');
Route::post(
'password/reset',
[ResetPasswordController::class, 'reset']
)->name('password.update')->middleware('throttle:forgotten_password');
Route::get(
'password/reset/{token}',
[ResetPasswordController::class, 'showResetForm']
)->name('password.reset');
Route::post(
'password/email',
[ForgotPasswordController::class, 'sendResetLinkEmail']
)->name('password.email')->middleware('throttle:forgotten_password');
// Socialite Google login
Route::get('google', 'App\Http\Controllers\GoogleAuthController@redirectToGoogle')->name('google.redirect');
Route::get('google/callback', 'App\Http\Controllers\GoogleAuthController@handleGoogleCallback')->name('google.callback');
Route::get(
'/',
[
'as' => 'home',
'middleware' => ['auth'],
'uses' => 'DashboardController@getIndex' ]
);
// need to keep GET /logout for SAML SLO
Route::get(
'logout',
[LoginController::class, 'logout']
)->name('logout.get');
Route::post(
'logout',
[LoginController::class, 'logout']
)->name('logout.post');
});
//Auth::routes();
Route::get(
'/health',
[HealthController::class, 'get']
)->name('health');
Route::middleware(['auth'])->get(
'/',
[DashboardController::class, 'index']
)->name('home');

View File

@ -0,0 +1,58 @@
<?php
use App\Http\Controllers\Accessories;
use Illuminate\Support\Facades\Route;
/*
* Accessories
*/
Route::group(['prefix' => 'accessories', 'middleware' => ['auth']], function () {
Route::get(
'{accessoryID}/checkout',
[Accessories\AccessoryCheckoutController::class, 'create']
)->name('accessories.checkout.show');
Route::post(
'{accessoryID}/checkout',
[Accessories\AccessoryCheckoutController::class, 'store']
)->name('accessories.checkout.store');
Route::get(
'{accessoryID}/checkin/{backto?}',
[Accessories\AccessoryCheckinController::class, 'create']
)->name('accessories.checkin.show');
Route::post(
'{accessoryID}/checkin/{backto?}',
[Accessories\AccessoryCheckinController::class, 'store']
)->name('accessories.checkin.store');
Route::post(
'{accessoryId}/upload',
[Accessories\AccessoriesFilesController::class, 'store']
)->name('upload/accessory');
Route::delete(
'{accessoryId}/deletefile/{fileId}',
[Accessories\AccessoriesFilesController::class, 'destroy']
)->name('delete/accessoryfile');
Route::get(
'{accessoryId}/showfile/{fileId}/{download?}',
[Accessories\AccessoriesFilesController::class, 'show']
)->name('show.accessoryfile');
Route::get('{accessoryId}/clone',
[Accessories\AccessoriesController::class, 'getClone']
)->name('clone/accessories');
Route::post('{accessoryId}/clone',
[Accessories\AccessoriesController::class, 'postCreate']
);
});
Route::resource('accessories', Accessories\AccessoriesController::class, [
'middleware' => ['auth'],
'parameters' => ['accessory' => 'accessory_id'],
]);

View File

@ -0,0 +1,48 @@
<?php
use App\Http\Controllers\Components;
use Illuminate\Support\Facades\Route;
// Components
Route::group(['prefix' => 'components', 'middleware' => ['auth']], function () {
Route::get(
'{componentID}/checkout',
[Components\ComponentCheckoutController::class, 'create']
)->name('components.checkout.show');
Route::post(
'{componentID}/checkout',
[Components\ComponentCheckoutController::class, 'store']
)->name('components.checkout.store');
Route::get(
'{componentID}/checkin/{backto?}',
[Components\ComponentCheckinController::class, 'create']
)->name('components.checkin.show');
Route::post(
'{componentID}/checkin/{backto?}',
[Components\ComponentCheckinController::class, 'store']
)->name('components.checkin.store');
Route::post(
'{componentId}/upload',
[Components\ComponentsFilesController::class, 'store']
)->name('upload/component');
Route::delete(
'{componentId}/deletefile/{fileId}',
[Components\ComponentsFilesController::class, 'destroy']
)->name('delete/componentfile');
Route::get(
'{componentId}/showfile/{fileId}/{download?}',
[Components\ComponentsFilesController::class, 'show']
)->name('show.componentfile');
});
Route::resource('components', Components\ComponentsController::class, [
'middleware' => ['auth'],
'parameters' => ['component' => 'component_id'],
]);

View File

@ -0,0 +1,40 @@
<?php
use App\Http\Controllers\Consumables;
use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'consumables', 'middleware' => ['auth']], function () {
Route::get(
'{consumablesID}/checkout',
[Consumables\ConsumableCheckoutController::class, 'create']
)->name('consumables.checkout.show');
Route::post(
'{consumablesID}/checkout',
[Consumables\ConsumableCheckoutController::class, 'store']
)->name('consumables.checkout.store');
Route::post(
'{consumableId}/upload',
[Consumables\ConsumablesFilesController::class, 'store']
)->name('upload/consumable');
Route::delete(
'{consumableId}/deletefile/{fileId}',
[Consumables\ConsumablesFilesController::class, 'destroy']
)->name('delete/consumablefile');
Route::get(
'{consumableId}/showfile/{fileId}/{download?}',
[Consumables\ConsumablesFilesController::class, 'show']
)->name('show.consumablefile');
});
Route::resource('consumables', Consumables\ConsumablesController::class, [
'middleware' => ['auth'],
'parameters' => ['consumable' => 'consumable_id'],
]);

View File

@ -0,0 +1,46 @@
<?php
use App\Http\Controllers\CustomFieldsController;
use App\Http\Controllers\CustomFieldsetsController;
use Illuminate\Support\Facades\Route;
/*
* Custom Fields Routes
*/
Route::group([ 'prefix' => 'fields','middleware' => ['auth'] ], function () {
Route::post(
'required/{fieldset_id}/{field_id}',
[CustomFieldsetsController::class, 'makeFieldRequired']
)->name('fields.required');
Route::post(
'optional/{fieldset_id}/{field_id}',
[CustomFieldsetsController::class, 'makeFieldOptional']
)->name('fields.optional');
Route::post(
'{field_id}/fieldset/{fieldset_id}/disassociate',
[CustomFieldsController::class, 'deleteFieldFromFieldset']
)->name('fields.disassociate');
Route::post(
'fieldsets/{id}/associate',
[CustomFieldsetsController::class, 'associate']
)->name('fieldsets.associate');
Route::resource('fieldsets', CustomFieldsetsController::class, [
'parameters' => ['fieldset' => 'field_id', 'field' => 'field_id']
]);
});
Route::resource('fields', CustomFieldsController::class, [
'middleware' => ['auth'],
'parameters' => ['field' => 'field_id', 'fieldset' => 'fieldset_id'],
]);

View File

@ -0,0 +1,198 @@
<?php
use App\Http\Controllers\AssetMaintenancesController;
use App\Http\Controllers\Assets\AssetsController;
use App\Http\Controllers\Assets\BulkAssetsController;
use App\Http\Controllers\Assets\AssetCheckoutController;
use App\Http\Controllers\Assets\AssetCheckinController;
use App\Http\Controllers\Assets\AssetFilesController;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Asset Routes
|--------------------------------------------------------------------------
|
| Register all the asset routes.
|
*/
Route::group(
[
'prefix' => 'hardware',
'middleware' => ['auth'],
],
function () {
Route::get('bulkaudit',
[AssetsController::class, 'quickScan']
)->name('assets.bulkaudit');
Route::get('quickscancheckin',
[AssetsController::class, 'quickScanCheckin']
)->name('hardware/quickscancheckin');
// Asset Maintenances
Route::resource('maintenances',
AssetMaintenancesController::class, [
'parameters' => ['maintenance' => 'maintenance_id', 'asset' => 'asset_id'],
]);
Route::get('requested', [
AssetsController::class, 'getRequestedIndex']
)->name('assets.requested');
Route::get('scan',
[AssetsController::class, 'scan']
)->name('asset.scan');
Route::get('audit/due',
[AssetsController::class, 'dueForAudit']
)->name('assets.audit.due');
Route::get('audit/overdue',
[AssetsController::class, 'overdueForAudit']
)->name('assets.audit.overdue');
Route::get('audit/due',
[AssetsController::class, 'dueForAudit']
)->name('assets.audit.due');
Route::get('audit/overdue',
[AssetsController::class, 'overdueForAudit']
)->name('assets.audit.overdue');
Route::get('audit/due',
[AssetsController::class, 'dueForAudit']
)->name('assets.audit.due');
Route::get('audit/overdue',
[AssetsController::class, 'overdueForAudit']
)->name('assets.audit.overdue');
Route::get('audit/{id}',
[AssetsController::class, 'audit']
)->name('asset.audit.create');
Route::post('audit/{id}',
[AssetsController::class, 'auditStore']
)->name('asset.audit.store');
Route::get('history',
[AssetsController::class, 'getImportHistory']
)->name('asset.import-history');
Route::post('history',
[AssetsController::class, 'postImportHistory']
)->name('asset.process-import-history');
Route::get('bytag/{any?}',
[AssetsController::class, 'getAssetByTag']
)->where('any', '.*')->name('findbytag/hardware');
Route::get('byserial/{any?}',
[AssetsController::class, 'getAssetBySerial']
)->where('any', '.*')->name('findbyserial/hardware');
Route::get('{assetId}/clone',
[AssetsController::class, 'getClone']
)->name('clone/hardware');
Route::get('{assetId}/label',
[AssetsController::class, 'getLabel']
)->name('label/hardware');
Route::post('{assetId}/clone',
[AssetsController::class, 'postCreate']
);
Route::get('{assetId}/checkout',
[AssetCheckoutController::class, 'create']
)->name('hardware.checkout.create');
Route::post('{assetId}/checkout',
[AssetCheckoutController::class, 'store']
)->name('hardware.checkout.store');
Route::get('{assetId}/checkin/{backto?}',
[AssetCheckinController::class, 'create']
)->name('hardware.checkin.create');
Route::post('{assetId}/checkin/{backto?}',
[AssetCheckinController::class, 'store']
)->name('hardware.checkin.store');
// Redirect old legacy /asset_id/view urls to the resource route version
Route::get('{assetId}/view', function ($assetId) {
return redirect()->route('hardware.show', ['hardware' => $assetId]);
});
Route::get('{assetId}/qr_code',
[AssetsController::class, 'getQrCode']
)->name('qr_code/hardware');
Route::get('{assetId}/barcode',
[AssetsController::class, 'getBarCode']
)->name('barcode/hardware');
Route::post('{assetId}/restore',
[AssetsController::class, 'getRestore']
)->name('restore/hardware');
Route::post('{assetId}/upload',
[AssetFilesController::class, 'store']
)->name('upload/asset');
Route::get('{assetId}/showfile/{fileId}/{download?}',
[AssetFilesController::class, 'show']
)->name('show/assetfile');
Route::delete('{assetId}/showfile/{fileId}/delete',
[AssetFilesController::class, 'destroy']
)->name('delete/assetfile');
Route::post(
'bulkedit',
[BulkAssetsController::class, 'edit']
)->name('hardware/bulkedit');
Route::post(
'bulkdelete',
[BulkAssetsController::class, 'destroy']
)->name('hardware/bulkdelete');
Route::post(
'bulkrestore',
[BulkAssetsController::class, 'restore']
)->name('hardware/bulkrestore');
Route::post(
'bulksave',
[BulkAssetsController::class, 'update']
)->name('hardware/bulksave');
// Bulk checkout / checkin
Route::get('bulkcheckout',
[BulkAssetsController::class, 'showCheckout']
)->name('hardware.bulkcheckout.show');
Route::post('bulkcheckout',
[BulkAssetsController::class, 'storeCheckout']
)->name('hardware.bulkcheckout.store');
});
Route::resource('hardware',
AssetsController::class,
[
'middleware' => ['auth'],
'parameters' => ['asset' => 'asset_id',
'names' => [
'show' => 'view',
],
],
]);
Route::get('ht/{any?}',
[AssetsController::class, 'getAssetByTag']
)->where('any', '.*')->name('ht/assetTag');

View File

@ -0,0 +1,80 @@
<?php
use App\Http\Controllers\Kits;
use Illuminate\Support\Facades\Route;
// Predefined Kit Management
Route::resource('kits', Kits\PredefinedKitsController::class, [
'middleware' => ['auth'],
'parameters' => ['kit' => 'kit_id'],
]);
Route::group(['prefix' => 'kits/{kit_id}', 'middleware' => ['auth']], function () {
// Route::get('licenses',
// [Kits\PredefinedKitsController::class, 'indexLicenses']
// )->name('kits.licenses.index');
Route::post('licenses',
[Kits\PredefinedKitsController::class, 'storeLicense']
)->name('kits.licenses.store');
Route::put('licenses/{license_id}',
[Kits\PredefinedKitsController::class, 'updateLicense']
)->name('kits.licenses.update');
Route::get('licenses/{license_id}/edit',
[Kits\PredefinedKitsController::class, 'editLicense']
)->name('kits.licenses.edit');
Route::delete('licenses/{license_id}',
[Kits\PredefinedKitsController::class, 'detachLicense']
)->name('kits.licenses.detach');
// Models
Route::put('models/{model_id}',
[Kits\PredefinedKitsController::class, 'updateModel']
)/* ->parameters([2 => 'kit_id', 1 => 'model_id'])*/->name('kits.models.update');
Route::get('models/{model_id}/edit',
[Kits\PredefinedKitsController::class, 'editModel']
)->name('kits.models.edit');
Route::delete('models/{model_id}',
[Kits\PredefinedKitsController::class, 'detachModel']
)->name('kits.models.detach');
// Consumables
Route::put('consumables/{consumable_id}',
[Kits\PredefinedKitsController::class, 'updateConsumable']
)/*->parameters([2 => 'kit_id', 1 => 'consumable_id'])*/->name('kits.consumables.update');
Route::get('consumables/{consumable_id}/edit',
[Kits\PredefinedKitsController::class, 'editConsumable']
)->name('kits.consumables.edit');
Route::delete('consumables/{consumable_id}',
[Kits\PredefinedKitsController::class, 'detachConsumable']
)->name('kits.consumables.detach');
// Accessories
Route::put('accessories/{accessory_id}',
[Kits\PredefinedKitsController::class, 'updateAccessory']
)/*->parameters([2 => 'kit_id', 1 => 'accessory_id'])*/->name('kits.accessories.update');
Route::get('accessories/{accessory_id}/edit',
[Kits\PredefinedKitsController::class, 'editAccessory']
)->name('kits.accessories.edit');
Route::delete('accessories/{accessory_id}',
[Kits\PredefinedKitsController::class, 'detachAccessory']
)->name('kits.accessories.detach');
Route::get('checkout',
[Kits\CheckoutKitController::class, 'showCheckout']
)->name('kits.checkout.show');
Route::post('checkout',
[Kits\CheckoutKitController::class, 'store']
)->name('kits.checkout.store');
}); // kits

View File

@ -0,0 +1,56 @@
<?php
use App\Http\Controllers\Licenses;
use Illuminate\Support\Facades\Route;
// Licenses
Route::group(['prefix' => 'licenses', 'middleware' => ['auth']], function () {
Route::get('{licenseId}/clone', [Licenses\LicensesController::class, 'getClone'])->name('clone/license');
Route::get('{licenseId}/freecheckout',
[Licenses\LicensesController::class, 'getFreeLicense']
)->name('licenses.freecheckout');
Route::get('{licenseId}/checkout/{seatId?}',
[Licenses\LicenseCheckoutController::class, 'create']
)->name('licenses.checkout');
Route::post(
'{licenseId}/checkout/{seatId?}',
[Licenses\LicenseCheckoutController::class, 'store']
); //name() would duplicate here, so we skip it.
Route::get('{licenseSeatId}/checkin/{backto?}',
[Licenses\LicenseCheckinController::class, 'create']
)->name('licenses.checkin');
Route::post('{licenseId}/checkin/{backto?}',
[Licenses\LicenseCheckinController::class, 'store']
)->name('licenses.checkin.save');
Route::post(
'{licenseId}/bulkcheckin',
[Licenses\LicenseCheckinController::class, 'bulkCheckin']
)->name('licenses.bulkcheckin');
Route::post(
'{licenseId}/bulkcheckout',
[Licenses\LicenseCheckoutController::class, 'bulkCheckout']
)->name('licenses.bulkcheckout');
Route::post(
'{licenseId}/upload',
[Licenses\LicenseFilesController::class, 'store']
)->name('upload/license');
Route::delete(
'{licenseId}/deletefile/{fileId}',
[Licenses\LicenseFilesController::class, 'destroy']
)->name('delete/licensefile');
Route::get(
'{licenseId}/showfile/{fileId}/{download?}',
[Licenses\LicenseFilesController::class, 'show']
)->name('show.licensefile');
});
Route::resource('licenses', Licenses\LicensesController::class, [
'middleware' => ['auth'],
'parameters' => ['license' => 'license_id'],
]);

View File

@ -0,0 +1,96 @@
<?php
use App\Http\Controllers\AssetModelsController;
use App\Http\Controllers\AssetModelsFilesController;
use App\Http\Controllers\BulkAssetModelsController;
use Illuminate\Support\Facades\Route;
// Asset Model Management
Route::group(['prefix' => 'models', 'middleware' => ['auth']], function () {
Route::post('{modelID}/upload',
[AssetModelsFilesController::class, 'store']
)->name('upload/models');
Route::get('{modelID}/showfile/{fileId}/{download?}',
[AssetModelsFilesController::class, 'show']
)->name('show/modelfile');
Route::delete('{modelID}/showfile/{fileId}/delete',
[AssetModelsFilesController::class, 'destroy']
)->name('delete/modelfile');
Route::get(
'{modelId}/clone',
[
AssetModelsController::class,
'getClone'
]
)->name('models.clone.create');
Route::post(
'{modelId}/clone',
[
AssetModelsController::class,
'postCreate'
]
)->name('models.clone.store');
Route::get(
'{modelId}/view',
[
AssetModelsController::class,
'getView'
]
)->name('view/model');
Route::post(
'{modelID}/restore',
[
AssetModelsController::class,
'getRestore'
]
)->name('models.restore.store');
Route::get(
'{modelId}/custom_fields',
[
AssetModelsController::class,
'getCustomFields'
]
)->name('custom_fields/model');
Route::post(
'bulkedit',
[
BulkAssetModelsController::class,
'edit'
]
)->name('models.bulkedit.index');
Route::post(
'bulksave',
[
BulkAssetModelsController::class,
'update'
]
)->name('models.bulkedit.store');
Route::post(
'bulkdelete',
[
BulkAssetModelsController::class,
'destroy'
]
)->name('models.bulkdelete.store');
});
Route::resource('models', AssetModelsController::class, [
'middleware' => ['auth'],
'parameters' => ['model' => 'model_id'],
]);

View File

@ -0,0 +1,154 @@
<?php
use App\Http\Controllers\Users;
use App\Http\Controllers\Users\UserFilesController;
use Illuminate\Support\Facades\Route;
// User Management
Route::group(['prefix' => 'users', 'middleware' => ['auth']], function () {
Route::get(
'ldap',
[
Users\LDAPImportController::class,
'create'
]
)->name('ldap/user');
Route::post(
'ldap',
[
Users\LDAPImportController::class,
'store'
]
);
Route::get(
'export',
[
Users\UsersController::class,
'getExportUserCsv'
]
)->name('users.export');
Route::get(
'{userId}/clone',
[
Users\UsersController::class,
'getClone'
]
)->name('users.clone.show');
Route::post(
'{userId}/clone',
[
Users\UsersController::class,
'postCreate'
]
)->name('users.clone.store');
Route::post(
'{userId}/restore',
[
Users\UsersController::class,
'getRestore'
]
)->name('users.restore.store');
Route::get(
'{userId}/unsuspend',
[
Users\UsersController::class,
'getUnsuspend'
]
)->name('unsuspend/user');
Route::post(
'{userId}/upload',
[
Users\UserFilesController::class,
'store'
]
)->name('upload/user');
Route::delete(
'{userId}/deletefile/{fileId}',
[
Users\UserFilesController::class,
'destroy'
]
)->name('userfile.destroy');
Route::get(
'{userId}/showfile/{fileId}',
[
Users\UserFilesController::class,
'show'
]
)->name('show/userfile');
Route::post(
'{userId}/password',
[
Users\UsersController::class,
'sendPasswordReset'
]
)->name('users.password');
Route::get(
'{userId}/print',
[
Users\UsersController::class,
'printInventory'
]
)->name('users.print');
Route::post(
'{userId}/email',
[
Users\UsersController::class,
'emailAssetList'
]
)->name('users.email');
Route::post(
'bulkedit',
[
Users\BulkUsersController::class,
'edit'
]
)->name('users/bulkedit');
Route::post(
'merge',
[
Users\BulkUsersController::class,
'merge'
]
)->name('users.merge.save');
Route::post(
'bulksave',
[
Users\BulkUsersController::class,
'destroy'
]
)->name('users/bulksave');
Route::post(
'bulkeditsave',
[
Users\BulkUsersController::class,
'update'
]
)->name('users/bulkeditsave');
});
Route::resource('users', Users\UsersController::class, [
'middleware' => ['auth'],
'parameters' => ['user' => 'user_id'],
]);