Added breadcrumbs on more web routes

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2025-02-19 14:05:12 +00:00
parent 32b89e937c
commit e264907157

View file

@ -2,6 +2,9 @@
use App\Http\Controllers\Account; use App\Http\Controllers\Account;
use App\Http\Controllers\ActionlogController; use App\Http\Controllers\ActionlogController;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\ResetPasswordController;
use App\Http\Controllers\CategoriesController; use App\Http\Controllers\CategoriesController;
use App\Http\Controllers\CompaniesController; use App\Http\Controllers\CompaniesController;
use App\Http\Controllers\DashboardController; use App\Http\Controllers\DashboardController;
@ -9,25 +12,21 @@ use App\Http\Controllers\DepartmentsController;
use App\Http\Controllers\DepreciationsController; use App\Http\Controllers\DepreciationsController;
use App\Http\Controllers\GroupsController; use App\Http\Controllers\GroupsController;
use App\Http\Controllers\HealthController; use App\Http\Controllers\HealthController;
use App\Http\Controllers\ImportsController;
use App\Http\Controllers\LabelsController; use App\Http\Controllers\LabelsController;
use App\Http\Controllers\LocationsController; use App\Http\Controllers\LocationsController;
use App\Http\Controllers\ManufacturersController; use App\Http\Controllers\ManufacturersController;
use App\Http\Controllers\ModalController; use App\Http\Controllers\ModalController;
use App\Http\Controllers\ProfileController; use App\Http\Controllers\ProfileController;
use App\Http\Controllers\ReportsController;
use App\Http\Controllers\ReportTemplatesController; use App\Http\Controllers\ReportTemplatesController;
use App\Http\Controllers\ReportsController;
use App\Http\Controllers\SettingsController; use App\Http\Controllers\SettingsController;
use App\Http\Controllers\StatuslabelsController; use App\Http\Controllers\StatuslabelsController;
use App\Http\Controllers\SuppliersController; use App\Http\Controllers\SuppliersController;
use App\Http\Controllers\ViewAssetsController; use App\Http\Controllers\ViewAssetsController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\Auth\ResetPasswordController;
use App\Livewire\Importer; use App\Livewire\Importer;
use App\Models\ReportTemplate;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Tabuna\Breadcrumbs\Trail; use Tabuna\Breadcrumbs\Trail;
use Illuminate\Support\Facades\Auth;
Route::group(['middleware' => 'auth'], function () { Route::group(['middleware' => 'auth'], function () {
/* /*
@ -169,44 +168,124 @@ Route::group(['middleware' => 'auth'], function () {
*/ */
Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'authorize:superuser']], function () { 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::get('settings', [SettingsController::class, 'getSettings'])
Route::post('branding', [SettingsController::class, 'postBranding'])->name('settings.branding.save'); ->name('settings.general.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.general_title'), route('settings.general.index')));
Route::get('security', [SettingsController::class, 'getSecurity'])->name('settings.security.index'); Route::post('settings', [SettingsController::class, 'postSettings'])
Route::post('security', [SettingsController::class, 'postSecurity'])->name('settings.security.save'); ->name('settings.general.save');
Route::get('localization', [SettingsController::class, 'getLocalization'])->name('settings.localization.index'); Route::get('branding', [SettingsController::class, 'getBranding'])
Route::post('localization', [SettingsController::class, 'postLocalization'])->name('settings.localization.save'); ->name('settings.branding.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.branding_title'), route('settings.branding.index')));
Route::get('notifications', [SettingsController::class, 'getAlerts'])->name('settings.alerts.index'); Route::post('branding', [SettingsController::class, 'postBranding'])
Route::post('notifications', [SettingsController::class, 'postAlerts'])->name('settings.alerts.save'); ->name('settings.branding.save');
Route::get('slack', [SettingsController::class, 'getSlack'])->name('settings.slack.index'); Route::get('security', [SettingsController::class, 'getSecurity'])
Route::post('slack', [SettingsController::class, 'postSlack'])->name('settings.slack.save'); ->name('settings.security.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.security_title'), route('settings.security.index')));
Route::get('asset_tags', [SettingsController::class, 'getAssetTags'])->name('settings.asset_tags.index'); Route::post('security', [SettingsController::class, 'postSecurity'])
Route::post('asset_tags', [SettingsController::class, 'postAssetTags'])->name('settings.asset_tags.save'); ->name('settings.security.save');
Route::get('labels', [SettingsController::class, 'getLabels'])->name('settings.labels.index'); Route::get('localization', [SettingsController::class, 'getLocalization'])
Route::post('labels', [SettingsController::class, 'postLabels'])->name('settings.labels.save'); ->name('settings.localization.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.localization_title'), route('settings.localization.index')));
Route::get('ldap', [SettingsController::class, 'getLdapSettings'])->name('settings.ldap.index'); Route::post('localization', [SettingsController::class, 'postLocalization'])
Route::post('ldap', [SettingsController::class, 'postLdapSettings'])->name('settings.ldap.save'); ->name('settings.localization.save');
Route::get('phpinfo', [SettingsController::class, 'getPhpInfo'])->name('settings.phpinfo.index'); Route::get('notifications', [SettingsController::class, 'getAlerts'])
->name('settings.alerts.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.alert_title'), route('settings.alerts.index')));
Route::get('oauth', [SettingsController::class, 'api'])->name('settings.oauth.index'); Route::post('notifications', [SettingsController::class, 'postAlerts'])
->name('settings.alerts.save');
Route::get('google', [SettingsController::class, 'getGoogleLoginSettings'])->name('settings.google.index'); Route::get('slack', [SettingsController::class, 'getSlack'])
Route::post('google', [SettingsController::class, 'postGoogleLoginSettings'])->name('settings.google.save'); ->name('settings.slack.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.webhook_title'), route('settings.slack.index')));
Route::get('purge', [SettingsController::class, 'getPurge'])->name('settings.purge.index'); Route::post('slack', [SettingsController::class, 'postSlack'])
Route::post('purge', [SettingsController::class, 'postPurge'])->name('settings.purge.save'); ->name('settings.slack.save');
Route::get('asset_tags', [SettingsController::class, 'getAssetTags'])
->name('settings.asset_tags.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.asset_tag_title'), route('settings.asset_tags.index')));
Route::post('asset_tags', [SettingsController::class, 'postAssetTags'])
->name('settings.asset_tags.save');
Route::get('labels', [SettingsController::class, 'getLabels'])
->name('settings.labels.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.labels_title'), route('settings.labels.index')));
Route::post('labels', [SettingsController::class, 'postLabels'])
->name('settings.labels.save');
Route::get('ldap', [SettingsController::class, 'getLdapSettings'])
->name('settings.ldap.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.ldap_ad'), route('settings.ldap.index')));
Route::post('ldap', [SettingsController::class, 'postLdapSettings'])
->name('settings.ldap.save');
Route::get('phpinfo', [SettingsController::class, 'getPhpInfo'])
->name('settings.phpinfo.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.php_info'), route('settings.phpinfo.index')));
Route::get('oauth', [SettingsController::class, 'api'])
->name('settings.oauth.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.oauth'), route('settings.oauth.index')));
Route::get('google', [SettingsController::class, 'getGoogleLoginSettings'])
->name('settings.google.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.google_login'), route('settings.google.index')));
Route::post('google', [SettingsController::class, 'postGoogleLoginSettings'])
->name('settings.google.save');
Route::get('purge', [SettingsController::class, 'getPurge'])
->name('settings.purge.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.purge'), route('settings.purge.index')));
Route::post('purge', [SettingsController::class, 'postPurge'])
->name('settings.purge.save');
Route::get('login-attempts', [SettingsController::class, 'getLoginAttempts'])
->name('settings.logins.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.login'), route('settings.logins.index')));
Route::get('login-attempts', [SettingsController::class, 'getLoginAttempts'])->name('settings.logins.index');
// Backups // Backups
Route::group(['prefix' => 'backups', 'middleware' => 'auth'], function () { Route::group(['prefix' => 'backups', 'middleware' => 'auth'], function () {
@ -233,12 +312,20 @@ Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'authorize:superuser
return redirect(route('settings.backups.index')); return redirect(route('settings.backups.index'));
}); });
Route::get('/', [SettingsController::class, 'getBackups'])->name('settings.backups.index'); Route::get('/', [SettingsController::class, 'getBackups'])
->name('settings.backups.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('settings.index')
->push(trans('admin/settings/general.backups'), route('settings.backups.index')));
}); });
Route::resource('groups', GroupsController::class); Route::resource('groups', GroupsController::class);
Route::get('/', [SettingsController::class, 'index'])->name('settings.index'); Route::get('/', [SettingsController::class, 'index'])
->name('settings.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.admin'), route('settings.index')));;
}); });
/* /*
@ -250,9 +337,12 @@ Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'authorize:superuser
| |
*/ */
Route::get('/import', Route::get('/import', Importer::class)
Importer::class ->middleware('auth')
)->middleware('auth')->name('imports.index'); ->name('imports.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.import'), route('imports.index')));
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -265,26 +355,54 @@ Route::get('/import',
Route::group(['prefix' => 'account', 'middleware' => ['auth']], function () { Route::group(['prefix' => 'account', 'middleware' => ['auth']], function () {
// Profile // Profile
Route::get('profile', [ProfileController::class, 'getIndex'])->name('profile'); Route::get('profile', [ProfileController::class, 'getIndex'])
Route::post('profile', [ProfileController::class, 'postIndex'])->name('profile.update'); ->name('profile')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.editprofile'), route('profile')));
Route::get('menu', [ProfileController::class, 'getMenuState'])->name('account.menuprefs'); Route::post('profile', [ProfileController::class, 'postIndex'])
->name('profile.update');
Route::get('password', [ProfileController::class, 'password'])->name('account.password.index'); Route::get('menu', [ProfileController::class, 'getMenuState'])
Route::post('password', [ProfileController::class, 'passwordSave'])->name('account.password.update'); ->name('account.menuprefs');
Route::get('api', [ProfileController::class, 'api'])->name('user.api'); Route::get('password', [ProfileController::class, 'password'])
->name('account.password.index')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.changepassword'), route('account.password.index')));
Route::post('password', [ProfileController::class, 'passwordSave'])
->name('account.password.update');
Route::get('api', [ProfileController::class, 'api'])
->name('user.api')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.manage_api_keys'), route('user.api')));
// View Assets // View Assets
Route::get('view-assets', [ViewAssetsController::class, 'getIndex'])->name('view-assets'); Route::get('view-assets', [ViewAssetsController::class, 'getIndex'])
->name('view-assets')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.viewassets'), route('view-assets')));
Route::get('requested', [ViewAssetsController::class, 'getRequestedAssets'])->name('account.requested'); Route::get('requested', [ViewAssetsController::class, 'getRequestedAssets'])
->name('account.requested')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.requested_assets_menu'), route('account.requested')));
// Profile // Profile
Route::get( Route::get(
'requestable-assets', 'requestable-assets', [ViewAssetsController::class, 'getRequestableIndex'])
[ViewAssetsController::class, 'getRequestableIndex'] ->name('requestable-assets')
)->name('requestable-assets'); ->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.requestable_items'), route('requestable-assets')));
Route::post( Route::post(
'request-asset/{assetId}', 'request-asset/{assetId}',
[ViewAssetsController::class, 'getRequestAsset'] [ViewAssetsController::class, 'getRequestAsset']
@ -296,13 +414,20 @@ Route::group(['prefix' => 'account', 'middleware' => ['auth']], function () {
)->name('account/request-item'); )->name('account/request-item');
// Account Dashboard // Account Dashboard
Route::get('/', [ViewAssetsController::class, 'getIndex'])->name('account'); Route::get('/', [ViewAssetsController::class, 'getIndex'])
->name('account');
Route::get('accept', [Account\AcceptanceController::class, 'index']) Route::get('accept', [Account\AcceptanceController::class, 'index'])
->name('account.accept'); ->name('account.accept')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.accept_assets_menu'), route('account.accept')));
Route::get('accept/{id}', [Account\AcceptanceController::class, 'create']) Route::get('accept/{id}', [Account\AcceptanceController::class, 'create'])
->name('account.accept.item'); ->name('account.accept.item')
->breadcrumbs(fn (Trail $trail, $id) =>
$trail->parent('account.accept')
->push(trans('general.accept_item'), route('account.accept.item', $id)));
Route::post('accept/{id}', [Account\AcceptanceController::class, 'store']) Route::post('accept/{id}', [Account\AcceptanceController::class, 'store'])
->name('account.store-acceptance'); ->name('account.store-acceptance');
@ -325,77 +450,129 @@ Route::group(['prefix' => 'account', 'middleware' => ['auth']], function () {
}); });
Route::group(['middleware' => ['auth']], function () {
Route::get('reports/audit', Route::group(['prefix' => 'reports', 'middleware' => ['auth']], function () {
[ReportsController::class, 'audit']
)->name('reports.audit'); Route::get('audit', [ReportsController::class, 'audit'])
->name('reports.audit')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.audit_report'), route('reports.audit')));
Route::get( Route::get(
'reports/depreciation', 'depreciation', [ReportsController::class, 'getDeprecationReport'])
[ReportsController::class, 'getDeprecationReport'] ->name('reports/depreciation')
)->name('reports/depreciation'); ->breadcrumbs(fn (Trail $trail) =>
Route::get( $trail->parent('home')
'reports/export/depreciation', ->push(trans('general.depreciation_report'), route('reports/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::prefix('reports/templates')->name('report-templates')->group(function () { // Is this still used??
Route::post('/', [ReportTemplatesController::class, 'store'])->name('.store'); Route::get(
Route::get('/{reportTemplate}', [ReportTemplatesController::class, 'show'])->name('.show'); 'export/depreciation', [ReportsController::class, 'exportDeprecationReport'])
Route::get('/{reportTemplate}/edit', [ReportTemplatesController::class, 'edit'])->name('.edit'); ->name('reports/export/depreciation')
Route::post('/{reportTemplate}', [ReportTemplatesController::class, 'update'])->name('.update'); ->breadcrumbs(fn (Trail $trail) =>
Route::delete('/{reportTemplate}', [ReportTemplatesController::class, 'destroy'])->name('.destroy'); $trail->parent('home')
->push(trans('general.depreciation_report'), route('reports.audit')));
Route::get(
'asset_maintenances', [ReportsController::class, 'getAssetMaintenancesReport'])
->name('reports/asset_maintenances')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.asset_maintenance_report'), route('reports/asset_maintenances')));
// Is this still used?
Route::get('export/asset_maintenances', [ReportsController::class, 'exportAssetMaintenancesReport'])
->name('reports/export/asset_maintenances')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.asset_maintenance_report'), route('reports/export/asset_maintenances')));
Route::get('licenses', [ReportsController::class, 'getLicenseReport'])
->name('reports/licenses')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.license_report'), route('reports/licenses')));
Route::get('export/licenses', [ReportsController::class, 'exportLicenseReport'])
->name('reports/export/licenses');
Route::get('accessories', [ReportsController::class, 'getAccessoryReport'])
->name('reports/accessories');
Route::get('export/accessories', [ReportsController::class, 'exportAccessoryReport'])
->name('reports/export/accessories');
Route::get('custom', [ReportsController::class, 'getCustomReport'])
->name('reports/custom')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.custom_report'), route('reports/custom')));
Route::post('custom', [ReportsController::class, 'postCustom']);
Route::prefix('templates')
->group(function () {
Route::post('/', [ReportTemplatesController::class, 'store'])
->name('report-templates.store');
// The breadcrumb on this is a little odd for now since we don't have a template index
Route::get('/{reportTemplate}', [ReportTemplatesController::class, 'show'])
->name('report-templates.show')
->breadcrumbs(fn (Trail $trail, ReportTemplate $reportTemplate) =>
$trail->parent('reports/custom')
->push($reportTemplate->name, null)
->push(trans('general.customize_report'), ''));
Route::get('/{reportTemplate}/edit', [ReportTemplatesController::class, 'edit'])
->name('report-templates.edit')
->breadcrumbs(fn (Trail $trail, ReportTemplate $reportTemplate) =>
$trail->parent('reports/custom')
->push($reportTemplate->name, route('report-templates.show', $reportTemplate))
->push(trans('general.customize_report'), ''));
Route::post('/{reportTemplate}', [ReportTemplatesController::class, 'update'])
->name('report-templates.update');
Route::delete('/{reportTemplate}', [ReportTemplatesController::class, 'destroy'])
->name('report-templates.destroy');
}); });
Route::get(
'reports/activity',
[ReportsController::class, 'getActivityReport']
)->name('reports.activity');
Route::post('reports/activity', [ReportsController::class, 'postActivityReport'])->name('reports.activity.post');
Route::get( Route::get(
'reports/unaccepted_assets/{deleted?}', 'activity', [ReportsController::class, 'getActivityReport'])
[ReportsController::class, 'getAssetAcceptanceReport'] ->name('reports.activity')
)->name('reports/unaccepted_assets'); ->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.activity_report'), route('reports.activity')));
Route::post('activity', [ReportsController::class, 'postActivityReport'])
->name('reports.activity.post');
Route::get('unaccepted_assets/{deleted?}', [ReportsController::class, 'getAssetAcceptanceReport'])
->name('reports/unaccepted_assets')
->breadcrumbs(fn (Trail $trail) =>
$trail->parent('home')
->push(trans('general.unaccepted_asset_report'), route('reports/unaccepted_assets')));
Route::post('unaccepted_assets/sent_reminder', [ReportsController::class, 'sentAssetAcceptanceReminder'])
->name('reports/unaccepted_assets_sent_reminder');
Route::delete('unaccepted_assets/{acceptanceId}/delete', [ReportsController::class, 'deleteAssetAcceptance'])
->name('reports/unaccepted_assets_delete');
Route::post( Route::post(
'reports/unaccepted_assets/sent_reminder', 'unaccepted_assets/{deleted?}', [ReportsController::class, 'postAssetAcceptanceReport'])
[ReportsController::class, 'sentAssetAcceptanceReminder'] ->name('reports/export/unaccepted_assets');
)->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( Route::get(
'auth/signin', 'auth/signin',
[LoginController::class, 'legacyAuthRedirect'] [LoginController::class, 'legacyAuthRedirect']