Merge remote-tracking branch 'origin/develop'

Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/dist/all.css
#	public/mix-manifest.json
This commit is contained in:
snipe 2025-04-29 10:22:21 +01:00
commit 12255979ac
15 changed files with 472 additions and 343 deletions

View file

@ -177,14 +177,10 @@ class Label implements View
// The end result of this will be in this format: // The end result of this will be in this format:
// {labelOne} {valueOne} | {labelTwo} {valueTwo} | {labelThree} {valueThree} // {labelOne} {valueOne} | {labelTwo} {valueTwo} | {labelThree} {valueThree}
$previous['value'] = trim(implode(' | ', [ $previous['value'] = trim(implode(' | ', [
implode(' ', [$previous['label'], $previous['value']]), implode(' ', [null, $previous['value']]),
implode(' ', [$current['label'], $current['value']]), implode(' ', [$current['label'], $current['value']]),
])); ]));
// We'll set the label to an empty string since we
// injected the label into the value field above.
$previous['label'] = '';
return $previous; return $previous;
}); });

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -3,7 +3,7 @@
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=d34ae2483cbe2c77478c45f4006eba55", "/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=d34ae2483cbe2c77478c45f4006eba55",
"/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=6bf62cdec2477f3176df196fd0c99662", "/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=6bf62cdec2477f3176df196fd0c99662",
"/css/build/overrides.css": "/css/build/overrides.css?id=1956dacae986380f376eb30f849d899a", "/css/build/overrides.css": "/css/build/overrides.css?id=1956dacae986380f376eb30f849d899a",
"/css/build/app.css": "/css/build/app.css?id=14158c05ed4795311c028b18ea9a616f", "/css/build/app.css": "/css/build/app.css?id=adad39d650ea189b9a44f8d07df73761",
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=a67bd93bed52e6a29967fe472de66d6c", "/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=a67bd93bed52e6a29967fe472de66d6c",
"/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=fc7adb943668ac69fe4b646625a7571f", "/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=fc7adb943668ac69fe4b646625a7571f",
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=53edc92eb2d272744bc7404ec259930e", "/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=53edc92eb2d272744bc7404ec259930e",
@ -19,7 +19,7 @@
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=091d9625203be910caca3e229afe438f", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=091d9625203be910caca3e229afe438f",
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=18787b3f00a3be7be38ee4e26cbd2a07", "/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=18787b3f00a3be7be38ee4e26cbd2a07",
"/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=1f33ca3d860461c1127ec465ab3ebb6b", "/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=1f33ca3d860461c1127ec465ab3ebb6b",
"/css/dist/all.css": "/css/dist/all.css?id=7bdd2e09505b405c4c2d02d6ebd07278", "/css/dist/all.css": "/css/dist/all.css?id=15fe3863037f44de1c50c30748d0bc09",
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7",
"/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7",
"/js/select2/i18n/af.js": "/js/select2/i18n/af.js?id=4f6fcd73488ce79fae1b7a90aceaecde", "/js/select2/i18n/af.js": "/js/select2/i18n/af.js?id=4f6fcd73488ce79fae1b7a90aceaecde",

View file

@ -384,6 +384,17 @@ a.logo.no-hover a:hover {
background-color: transparent; background-color: transparent;
} }
.index-block {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.index-block:hover{
overflow: visible;
white-space: normal;
height:auto;
}
input:required, select:required, textarea:required { input:required, select:required, textarea:required {
border-right: 6px solid orange; border-right: 6px solid orange;
} }

View file

@ -465,6 +465,9 @@ return [
'logos' => 'Logos & Display', 'logos' => 'Logos & Display',
'colors' => 'Colors & Skins', 'colors' => 'Colors & Skins',
'footer' => 'Footer Preferences', 'footer' => 'Footer Preferences',
'security' => 'Security Preferences',
'general' => 'General',
'intervals' => 'Intervals & Thresholds',
], ],

View file

@ -224,6 +224,17 @@
//now re-populate the custom fields based on the previously saved values //now re-populate the custom fields based on the previously saved values
$('#custom_fields_content').find('input,select').each(function (index,elem) { $('#custom_fields_content').find('input,select').each(function (index,elem) {
if(transformed_oldvals[elem.name]) { if(transformed_oldvals[elem.name]) {
if (elem.type === 'checkbox' || elem.type === 'radio'){
let shouldBeChecked = oldvals.find(oldValElement => {
return oldValElement.name === elem.name && oldValElement.value === $(elem).val();
});
if (shouldBeChecked){
$(elem).prop('checked', true);
}
return;
}
{{-- If there already *is* is a previously-input 'transformed_oldvals' handy, {{-- If there already *is* is a previously-input 'transformed_oldvals' handy,
overwrite with that previously-input value *IF* this is an edit of an existing item *OR* overwrite with that previously-input value *IF* this is an edit of an existing item *OR*
if there is no new default custom field value coming from the model --}} if there is no new default custom field value coming from the model --}}

View file

@ -20,7 +20,6 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
@if ($requestedItems->count() > 0)
<div class="table-responsive"> <div class="table-responsive">
<table <table
name="requestedAssets" name="requestedAssets"
@ -133,14 +132,7 @@
</table> </table>
</div> </div>
@else
<div class="col-md-12">
<div class="alert alert-info alert-block">
<i class="fas fa-info-circle"></i>
{{ trans('general.no_results') }}
</div>
</div>
@endif
</div> </div>
</div> </div>
</div> </div>

View file

@ -1164,7 +1164,6 @@
<div class="row{{($asset->licenses->count() > 0 ) ? '' : ' hidden-print'}}"> <div class="row{{($asset->licenses->count() > 0 ) ? '' : ' hidden-print'}}">
<div class="col-md-12"> <div class="col-md-12">
<!-- Licenses assets table --> <!-- Licenses assets table -->
@if ($asset->licenses->count() > 0)
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
@ -1197,13 +1196,6 @@
@endforeach @endforeach
</tbody> </tbody>
</table> </table>
@else
<div class="alert alert-info alert-block hidden-print">
<x-icon type="info-circle" />
{{ trans('general.no_results') }}
</div>
@endif
</div><!-- /col --> </div><!-- /col -->
</div> <!-- row --> </div> <!-- row -->
</div> <!-- /.tab-pane software --> </div> <!-- /.tab-pane software -->
@ -1212,7 +1204,7 @@
<!-- checked out assets table --> <!-- checked out assets table -->
<div class="row{{($asset->components->count() > 0 ) ? '' : ' hidden-print'}}"> <div class="row{{($asset->components->count() > 0 ) ? '' : ' hidden-print'}}">
<div class="col-md-12"> <div class="col-md-12">
@if($asset->components->count() > 0)
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
<th>{{ trans('general.name') }}</th> <th>{{ trans('general.name') }}</th>
@ -1257,12 +1249,6 @@
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
@else
<div class="alert alert-info alert-block hidden-print">
<x-icon type="info-circle" />
{{ trans('general.no_results') }}
</div>
@endif
</div> </div>
</div> </div>
</div> <!-- /.tab-pane components --> </div> <!-- /.tab-pane components -->
@ -1272,9 +1258,6 @@
<div class="row{{($asset->assignedAssets->count() > 0 ) ? '' : ' hidden-print'}}"> <div class="row{{($asset->assignedAssets->count() > 0 ) ? '' : ' hidden-print'}}">
<div class="col-md-12"> <div class="col-md-12">
@if ($asset->assignedAssets->count() > 0)
<form <form
method="POST" method="POST"
action="{{ route('hardware/bulkedit') }}" action="{{ route('hardware/bulkedit') }}"
@ -1323,14 +1306,6 @@
</form> </form>
</div> </div>
@else
<div class="alert alert-info alert-block hidden-print">
<x-icon type="info-circle" />
{{ trans('general.no_results') }}
</div>
@endif
</div><!-- /col --> </div><!-- /col -->
</div> <!-- row --> </div> <!-- row -->

View file

@ -247,6 +247,7 @@
@include('partials.asset-bulk-actions', ['id_divname' => 'AssignedAssetsBulkEditToolbar', 'id_formname' => 'assignedAssetsBulkForm', 'id_button' => 'AssignedbulkAssetEditButton']) @include('partials.asset-bulk-actions', ['id_divname' => 'AssignedAssetsBulkEditToolbar', 'id_formname' => 'assignedAssetsBulkForm', 'id_button' => 'AssignedbulkAssetEditButton'])
<table <table
role="table"
data-columns="{{ \App\Presenters\AssetPresenter::dataTableLayout() }}" data-columns="{{ \App\Presenters\AssetPresenter::dataTableLayout() }}"
data-cookie-id-table="assetsAssignedListingTable" data-cookie-id-table="assetsAssignedListingTable"
data-pagination="true" data-pagination="true"
@ -261,7 +262,7 @@
data-bulk-button-id="#AssignedbulkAssetEditButton" data-bulk-button-id="#AssignedbulkAssetEditButton"
data-bulk-form-id="#assignedAssetsBulkForm" data-bulk-form-id="#assignedAssetsBulkForm"
data-click-to-select="true" data-click-to-select="true"
id="assetsListingTable" id="assetsAssignedListingTable"
class="table table-striped snipe-table" class="table table-striped snipe-table"
data-url="{{route('api.assets.index', ['assigned_to' => $location->id, 'assigned_type' => 'App\Models\Location']) }}" data-url="{{route('api.assets.index', ['assigned_to' => $location->id, 'assigned_type' => 'App\Models\Location']) }}"
data-export-options='{ data-export-options='{
@ -276,6 +277,7 @@
@include('partials.asset-bulk-actions', ['id_divname' => 'RTDassetsBulkEditToolbar', 'id_formname' => 'RTDassets', 'id_button' => 'RTDbulkAssetEditButton']) @include('partials.asset-bulk-actions', ['id_divname' => 'RTDassetsBulkEditToolbar', 'id_formname' => 'RTDassets', 'id_button' => 'RTDbulkAssetEditButton'])
<table <table
role="table"
data-columns="{{ \App\Presenters\AssetPresenter::dataTableLayout() }}" data-columns="{{ \App\Presenters\AssetPresenter::dataTableLayout() }}"
data-cookie-id-table="RTDassetsListingTable" data-cookie-id-table="RTDassetsListingTable"
data-pagination="true" data-pagination="true"
@ -305,6 +307,7 @@
<div class="tab-pane" id="accessories"> <div class="tab-pane" id="accessories">
<h2 class="box-title">{{ trans('general.accessories') }}</h2> <h2 class="box-title">{{ trans('general.accessories') }}</h2>
<table <table
role="table"
data-columns="{{ \App\Presenters\AccessoryPresenter::dataTableLayout() }}" data-columns="{{ \App\Presenters\AccessoryPresenter::dataTableLayout() }}"
data-cookie-id-table="accessoriesListingTable" data-cookie-id-table="accessoriesListingTable"
data-pagination="true" data-pagination="true"
@ -331,6 +334,7 @@
</h2> </h2>
<table <table
role="table"
data-columns="{{ \App\Presenters\LocationPresenter::assignedAccessoriesDataTableLayout() }}" data-columns="{{ \App\Presenters\LocationPresenter::assignedAccessoriesDataTableLayout() }}"
data-cookie-id-table="accessoriesAssignedListingTable" data-cookie-id-table="accessoriesAssignedListingTable"
data-pagination="true" data-pagination="true"
@ -356,6 +360,7 @@
<div class="tab-pane" id="consumables"> <div class="tab-pane" id="consumables">
<h2 class="box-title">{{ trans('general.consumables') }}</h2> <h2 class="box-title">{{ trans('general.consumables') }}</h2>
<table <table
role="table"
data-columns="{{ \App\Presenters\ConsumablePresenter::dataTableLayout() }}" data-columns="{{ \App\Presenters\ConsumablePresenter::dataTableLayout() }}"
data-cookie-id-table="consumablesListingTable" data-cookie-id-table="consumablesListingTable"
data-pagination="true" data-pagination="true"
@ -379,6 +384,7 @@
<div class="tab-pane" id="components"> <div class="tab-pane" id="components">
<h2 class="box-title">{{ trans('general.components') }}</h2> <h2 class="box-title">{{ trans('general.components') }}</h2>
<table <table
role="table"
data-columns="{{ \App\Presenters\ComponentPresenter::dataTableLayout() }}" data-columns="{{ \App\Presenters\ComponentPresenter::dataTableLayout() }}"
data-cookie-id-table="componentsTable" data-cookie-id-table="componentsTable"
data-pagination="true" data-pagination="true"

View file

@ -18,11 +18,31 @@
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
<label class="sr-only" for="{{ 'permission['.$localPermission['permission'].']' }}">{{ 'permission['.$localPermission['permission'].']' }}</label> <label class="sr-only" for="{{ 'permission['.$localPermission['permission'].']' }}">{{ 'permission['.$localPermission['permission'].']' }}</label>
@if (($localPermission['permission'] == 'superuser') && (!Auth::user()->isSuperUser())) @if (($localPermission['permission'] == 'superuser') && (!Auth::user()->isSuperUser()))
{{ Form::radio('permission['.$localPermission['permission'].']', '1',$userPermissions[$localPermission['permission'] ] == '1',['disabled'=>"disabled", 'aria-label'=> 'permission['.$localPermission['permission'].']']) }} <input
disabled="disabled"
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '1')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="1"
/>
@elseif (($localPermission['permission'] == 'admin') && (!Auth::user()->hasAccess('admin'))) @elseif (($localPermission['permission'] == 'admin') && (!Auth::user()->hasAccess('admin')))
{{ Form::radio('permission['.$localPermission['permission'].']', '1',$userPermissions[$localPermission['permission'] ] == '1',['disabled'=>"disabled", 'aria-label'=> 'permission['.$localPermission['permission'].']']) }} <input
disabled="disabled"
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '1')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="1"
/>
@else @else
{{ Form::radio('permission['.$localPermission['permission'].']', '1',$userPermissions[$localPermission['permission'] ] == '1',['value'=>"grant", 'aria-label'=> 'permission['.$localPermission['permission'].']']) }} <input
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '1')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="1"
/>
@endif @endif
@ -30,22 +50,62 @@
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
<label class="sr-only" for="{{ 'permission['.$localPermission['permission'].']' }}">{{ 'permission['.$localPermission['permission'].']' }}</label> <label class="sr-only" for="{{ 'permission['.$localPermission['permission'].']' }}">{{ 'permission['.$localPermission['permission'].']' }}</label>
@if (($localPermission['permission'] == 'superuser') && (!Auth::user()->isSuperUser())) @if (($localPermission['permission'] == 'superuser') && (!Auth::user()->isSuperUser()))
{{ Form::radio('permission['.$localPermission['permission'].']', '-1',$userPermissions[$localPermission['permission'] ] == '-1',['disabled'=>"disabled", 'aria-label'=> 'permission['.$localPermission['permission'].']']) }} <input
disabled="disabled"
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '-1')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="-1"
/>
@elseif (($localPermission['permission'] == 'admin') && (!Auth::user()->hasAccess('admin'))) @elseif (($localPermission['permission'] == 'admin') && (!Auth::user()->hasAccess('admin')))
{{ Form::radio('permission['.$localPermission['permission'].']', '-1',$userPermissions[$localPermission['permission'] ] == '-1',['disabled'=>"disabled", 'aria-label'=> 'permission['.$localPermission['permission'].']']) }} <input
disabled="disabled"
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '-1')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="-1"
/>
@else @else
{{ Form::radio('permission['.$localPermission['permission'].']', '-1',$userPermissions[$localPermission['permission'] ] == '-1',['value'=>"deny", 'aria-label'=> 'permission['.$localPermission['permission'].']']) }} <input
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '-1')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="-1"
/>
@endif @endif
</td> </td>
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
<label class="sr-only" for="{{ 'permission['.$localPermission['permission'].']' }}"> <label class="sr-only" for="{{ 'permission['.$localPermission['permission'].']' }}">
{{ 'permission['.$localPermission['permission'].']' }}</label> {{ 'permission['.$localPermission['permission'].']' }}</label>
@if (($localPermission['permission'] == 'superuser') && (!Auth::user()->isSuperUser())) @if (($localPermission['permission'] == 'superuser') && (!Auth::user()->isSuperUser()))
{{ Form::radio('permission['.$localPermission['permission'].']','0',$userPermissions[$localPermission['permission'] ] == '0',['disabled'=>"disabled", 'aria-label'=> 'permission['.$localPermission['permission'].']'] ) }} <input
disabled="disabled"
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '0')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="0"
/>
@elseif (($localPermission['permission'] == 'admin') && (!Auth::user()->hasAccess('admin'))) @elseif (($localPermission['permission'] == 'admin') && (!Auth::user()->hasAccess('admin')))
{{ Form::radio('permission['.$localPermission['permission'].']','0',$userPermissions[$localPermission['permission'] ] == '0',['disabled'=>"disabled", 'aria-label'=> 'permission['.$localPermission['permission'].']'] ) }} <input
disabled="disabled"
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '0')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="0"
/>
@else @else
{{ Form::radio('permission['.$localPermission['permission'].']','0',$userPermissions[$localPermission['permission'] ] == '0',['value'=>"inherit", 'aria-label'=> 'permission['.$localPermission['permission'].']'] ) }} <input
aria-label="permission[{{ $localPermission['permission'] }}]"
@checked($userPermissions[$localPermission['permission']] == '0')
name="permission[{{ $localPermission['permission'] }}]"
type="radio"
value="0"
/>
@endif @endif
</td> </td>
</tr> </tr>
@ -59,15 +119,33 @@
</td> </td>
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
<label for="{{ $area }}" class="sr-only">{{ $area }}</label> <label for="{{ $area }}" class="sr-only">{{ $area }}</label>
{{ Form::radio("$area", '1',false,['value'=>"grant", 'data-checker-group' => str_slug($area), 'aria-label' => $area]) }} <input
value="1"
data-checker-group="{{ str_slug($area) }}"
aria-label="{{ $area }}"
name="{{ $area }}"
type="radio"
/>
</td> </td>
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
<label for="{{ $area }}" class="sr-only">{{ $area }}</label> <label for="{{ $area }}" class="sr-only">{{ $area }}</label>
{{ Form::radio("$area", '-1',false,['value'=>"deny", 'data-checker-group' => str_slug($area), 'aria-label' => $area]) }} <input
value="-1"
data-checker-group="{{ str_slug($area) }}"
aria-label="{{ $area }}"
name="{{ $area }}"
type="radio"
/>
</td> </td>
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
<label for="{{ $area }}" class="sr-only">{{ $area }}</label> <label for="{{ $area }}" class="sr-only">{{ $area }}</label>
{{ Form::radio("$area", '0',false,['value'=>"inherit", 'data-checker-group' => str_slug($area), 'aria-label' => $area] ) }} <input
value="0"
data-checker-group="{{ str_slug($area) }}"
aria-label="{{ $area }}"
name="{{ $area }}"
type="radio"
/>
</td> </td>
</tr> </tr>
@ -84,26 +162,37 @@
</td> </td>
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
<label class="sr-only" for="{{ 'permission['.$permission['permission'].']' }}">{{ 'permission['.$permission['permission'].']' }}</label> <label class="sr-only" for="{{ 'permission['.$permission['permission'].']' }}">{{ 'permission['.$permission['permission'].']' }}</label>
<input
@if (($permission['permission'] == 'superuser') && (!Auth::user()->isSuperUser())) value="1"
{{ Form::radio('permission['.$permission['permission'].']', '1', $userPermissions[$permission['permission'] ] == '1', ["value"=>"grant", 'disabled'=>'disabled', 'class'=>'radiochecker-'.str_slug($area), 'aria-label'=>'permission['.$permission['permission'].']']) }} class="radiochecker-{{ str_slug($area) }}"
@else aria-label="permission[{{ $permission['permission'] }}]"
{{ Form::radio('permission['.$permission['permission'].']', '1', $userPermissions[ $permission['permission'] ] == '1', ["value"=>"grant",'class'=>'radiochecker-'.str_slug($area), 'aria-label' =>'permission['.$permission['permission'].']']) }} @checked($userPermissions[$permission['permission']] == '1')
@endif @disabled(($permission['permission'] == 'superuser') && (!Auth::user()->isSuperUser()))
name="permission[{{ $permission['permission'] }}]"
type="radio"
/>
</td> </td>
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
@if (($permission['permission'] == 'superuser') && (!Auth::user()->isSuperUser())) <input
{{ Form::radio('permission['.$permission['permission'].']', '-1', $userPermissions[$permission['permission'] ] == '-1', ["value"=>"deny", 'disabled'=>'disabled', 'class'=>'radiochecker-'.str_slug($area), 'aria-label'=>'permission['.$permission['permission'].']']) }} value="-1"
@else class="radiochecker-{{ str_slug($area) }}"
{{ Form::radio('permission['.$permission['permission'].']', '-1', $userPermissions[$permission['permission'] ] == '-1', ["value"=>"deny",'class'=>'radiochecker-'.str_slug($area), 'aria-label'=>'permission['.$permission['permission'].']']) }} aria-label="permission[{{ $permission['permission'] }}]"
@endif @checked($userPermissions[$permission['permission']] == '-1')
@disabled(($permission['permission'] == 'superuser') && (!Auth::user()->isSuperUser()))
name="permission[{{ $permission['permission'] }}]"
type="radio"
/>
</td> </td>
<td class="col-md-1 permissions-item"> <td class="col-md-1 permissions-item">
@if (($permission['permission'] == 'superuser') && (!Auth::user()->isSuperUser())) <input
{{ Form::radio('permission['.$permission['permission'].']', '0', $userPermissions[$permission['permission']] =='0', ["value"=>"inherit", 'disabled'=>'disabled', 'class'=>'radiochecker-'.str_slug($area), 'aria-label'=>'permission['.$permission['permission'].']']) }} value="0"
@else class="radiochecker-{{ str_slug($area) }}"
{{ Form::radio('permission['.$permission['permission'].']', '0', $userPermissions[$permission['permission']] =='0', ["value"=>"inherit", 'class'=>'radiochecker-'.str_slug($area), 'aria-label'=>'permission['.$permission['permission'].']']) }} aria-label="permission[{{ $permission['permission'] }}]"
@endif @checked($userPermissions[$permission['permission']] =='0')
@disabled(($permission['permission'] == 'superuser') && (!Auth::user()->isSuperUser()))
name="permission[{{ $permission['permission'] }}]"
type="radio"
/>
</td> </td>
@endif @endif
</tr> </tr>

View file

@ -38,129 +38,147 @@
</div> </div>
<div class="box-body"> <div class="box-body">
<div class="col-md-12">
<div class="col-md-11 col-md-offset-1">
<!-- Alerts Enabled --> <fieldset name="remote-login" class="bottom-padded">
<div class="form-group {{ $errors->has('alerts_enabled') ? 'error' : '' }}"> <legend class="highlight">
<div class="col-md-9 col-md-offset-3"> {{ trans('admin/settings/general.legends.general') }}
<label class="form-control"> </legend>
<input type="checkbox" name="alerts_enabled" value="1" @checked(old('alerts_enabled', $setting->alerts_enabled))>
{{ trans('admin/settings/general.alerts_enabled') }} <!-- Menu Alerts Enabled -->
</label> <div class="form-group {{ $errors->has('show_alerts_in_menu') ? 'error' : '' }}">
<div class="col-md-9 col-md-offset-3">
<label class="form-control">
<input type="checkbox" name="show_alerts_in_menu" value="1" @checked(old('show_alerts_in_menu', $setting->show_alerts_in_menu))>
{{ trans('admin/settings/general.show_alerts_in_menu') }}
</label>
</div>
</div> </div>
<!-- Alerts Enabled -->
<div class="form-group {{ $errors->has('alerts_enabled') ? 'error' : '' }}">
<div class="col-md-9 col-md-offset-3">
<label class="form-control">
<input type="checkbox" name="alerts_enabled" value="1" @checked(old('alerts_enabled', $setting->alerts_enabled))>
{{ trans('admin/settings/general.alerts_enabled') }}
</label>
</div>
</div>
</fieldset>
<fieldset name="remote-login" class="bottom-padded">
<legend class="highlight">
{{ trans('admin/settings/general.legends.email') }}
</legend>
<!-- Alert Email -->
<div class="form-group {{ $errors->has('alert_email') ? 'error' : '' }}">
<div class="col-md-3">
<label for="alert_email">{{ trans('admin/settings/general.alert_email') }}</label>
</div>
<div class="col-md-7">
<input type="text" name="alert_email" value="{{ old('alert_email', $setting->alert_email) }}" class="form-control" placeholder="admin@yourcompany.com,it@yourcompany.com" maxlength="191">
{!! $errors->first('alert_email', '<span class="alert-msg" aria-hidden="true">:message</span><br>') !!}
<p class="help-block">{{ trans('admin/settings/general.alert_email_help') }}</p>
</div>
</div>
<!-- Admin CC Email -->
<div class="form-group {{ $errors->has('admin_cc_email') ? 'error' : '' }}">
<div class="col-md-3">
<label for="admin_cc_email">{{ trans('admin/settings/general.admin_cc_email') }}</label>
</div>
<div class="col-md-7">
<input type="email" name="admin_cc_email" value="{{ old('admin_cc_email', $setting->admin_cc_email) }}" class="form-control" placeholder="admin@yourcompany.com" maxlength="191">
{!! $errors->first('admin_cc_email', '<span class="alert-msg" aria-hidden="true">:message</span><br>') !!}
<p class="help-block">{{ trans('admin/settings/general.admin_cc_email_help') }}</p>
</div>
</div>
</fieldset>
<fieldset name="remote-login" class="bottom-padded">
<legend class="highlight">
{{ trans('admin/settings/general.legends.intervals') }}
</legend>
<!-- Alert interval -->
<div class="form-group {{ $errors->has('alert_interval') ? 'error' : '' }}">
<div class="col-md-3">
<label for="alert_interval">{{ trans('admin/settings/general.alert_interval') }}</label>
</div>
<div class="col-md-9">
<input class="form-control" placeholder="30" maxlength="3" style="width: 70px;" name="alert_interval" type="number" value="{{ old('alert_interval', $setting->alert_interval) }}" id="alert_interval">
{!! $errors->first('alert_interval', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div>
<!-- Alert threshold -->
<div class="form-group {{ $errors->has('alert_threshold') ? 'error' : '' }}">
<div class="col-md-3">
<label for="alert_threshold">{{ trans('admin/settings/general.alert_inv_threshold') }}</label>
</div>
<div class="col-md-8">
<input class="form-control" placeholder="5" maxlength="3" style="width: 70px;" name="alert_threshold" type="number" value="{{ old('alert_threshold', $setting->alert_threshold) }}" id="alert_threshold">
{!! $errors->first('alert_threshold', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div>
<!-- Audit interval -->
<div class="form-group {{ $errors->has('audit_interval') ? 'error' : '' }}">
<div class="col-md-3">
<label for="audit_interval">{{ trans('admin/settings/general.audit_interval') }}</label>
</div>
<div class="input-group col-xs-10 col-sm-6 col-md-6 col-lg-2 col-xl-2">
<input class="form-control" placeholder="12" maxlength="3" name="audit_interval" type="number" id="audit_interval" value="{{ old('audit_interval', $setting->audit_interval) }}">
<span class="input-group-addon">{{ trans('general.months') }}</span>
</div>
<div class="col-md-8 col-md-offset-3">
{!! $errors->first('audit_interval', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">{{ trans('admin/settings/general.audit_interval_help') }}</p>
</div>
</div>
<!-- Alert threshold -->
<div class="form-group {{ $errors->has('audit_warning_days') ? 'error' : '' }}">
<div class="col-md-3">
<label for="audit_warning_days">{{ trans('admin/settings/general.audit_warning_days') }}</label>
</div>
<div class="input-group col-xs-10 col-sm-6 col-md-4 col-lg-2 col-xl-2">
<input class="form-control" placeholder="14" maxlength="3" name="audit_warning_days" type="number" id="audit_warning_days" value="{{ old('audit_warning_days', $setting->audit_warning_days) }}">
<span class="input-group-addon">{{ trans('general.days') }}</span>
</div>
<div class="col-md-8 col-md-offset-3">
{!! $errors->first('audit_warning_days', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">{{ trans('admin/settings/general.audit_warning_days_help') }}</p>
</div>
</div>
<!-- Due for checkin days -->
<div class="form-group {{ $errors->has('due_checkin_days') ? 'error' : '' }}">
<div class="col-md-3">
<label for="due_checkin_days">{{ trans('admin/settings/general.due_checkin_days') }}</label>
</div>
<div class="input-group col-xs-10 col-sm-6 col-md-4 col-lg-2 col-xl-2">
<input class="form-control" placeholder="14" maxlength="3" name="due_checkin_days" type="number" id="due_checkin_days" value="{{ old('due_checkin_days', $setting->due_checkin_days) }}">
<span class="input-group-addon">{{ trans('general.days') }}</span>
</div>
<div class="col-md-8 col-md-offset-3">
{!! $errors->first('due_checkin_days', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">{{ trans('admin/settings/general.due_checkin_days_help') }}</p>
</div>
</div>
</fieldset>
</div> </div>
<!-- Menu Alerts Enabled -->
<div class="form-group {{ $errors->has('show_alerts_in_menu') ? 'error' : '' }}">
<div class="col-md-9 col-md-offset-3">
<label class="form-control">
<input type="checkbox" name="show_alerts_in_menu" value="1" @checked(old('show_alerts_in_menu', $setting->show_alerts_in_menu))>
{{ trans('admin/settings/general.show_alerts_in_menu') }}
</label>
</div>
</div>
<!-- Alert Email -->
<div class="form-group {{ $errors->has('alert_email') ? 'error' : '' }}">
<div class="col-md-3">
<label for="alert_email">{{ trans('admin/settings/general.alert_email') }}</label>
</div>
<div class="col-md-7">
<input type="text" name="alert_email" value="{{ old('alert_email', $setting->alert_email) }}" class="form-control" placeholder="admin@yourcompany.com" maxlength="191">
{!! $errors->first('alert_email', '<span class="alert-msg" aria-hidden="true">:message</span><br>') !!}
<p class="help-block">{{ trans('admin/settings/general.alert_email_help') }}</p>
</div>
</div>
<!-- Admin CC Email -->
<div class="form-group {{ $errors->has('admin_cc_email') ? 'error' : '' }}">
<div class="col-md-3">
<label for="admin_cc_email">{{ trans('admin/settings/general.admin_cc_email') }}</label>
</div>
<div class="col-md-7">
<input type="text" name="admin_cc_email" value="{{ old('admin_cc_email', $setting->admin_cc_email) }}" class="form-control" placeholder="admin@yourcompany.com" maxlength="191">
{!! $errors->first('admin_cc_email', '<span class="alert-msg" aria-hidden="true">:message</span><br>') !!}
<p class="help-block">{{ trans('admin/settings/general.admin_cc_email_help') }}</p>
</div>
</div>
<!-- Alert interval -->
<div class="form-group {{ $errors->has('alert_interval') ? 'error' : '' }}">
<div class="col-md-3">
<label for="alert_interval">{{ trans('admin/settings/general.alert_interval') }}</label>
</div>
<div class="col-md-9">
<input class="form-control" placeholder="30" maxlength="3" style="width: 60px;" name="alert_interval" type="text" value="{{ old('alert_interval', $setting->alert_interval) }}" id="alert_interval">
{!! $errors->first('alert_interval', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div>
<!-- Alert threshold -->
<div class="form-group {{ $errors->has('alert_threshold') ? 'error' : '' }}">
<div class="col-md-3">
<label for="alert_threshold">{{ trans('admin/settings/general.alert_inv_threshold') }}</label>
</div>
<div class="col-md-9">
<input class="form-control" placeholder="5" maxlength="3" style="width: 60px;" name="alert_threshold" type="text" value="{{ old('alert_threshold', $setting->alert_threshold) }}" id="alert_threshold">
{!! $errors->first('alert_threshold', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div>
<!-- Alert interval -->
<div class="form-group {{ $errors->has('audit_interval') ? 'error' : '' }}">
<div class="col-md-3">
<label for="audit_interval">{{ trans('admin/settings/general.audit_interval') }}</label>
</div>
<div class="input-group col-md-3">
<input class="form-control" placeholder="12" maxlength="3" name="audit_interval" type="text" id="audit_interval" value="{{ old('audit_interval', $setting->audit_interval) }}">
<span class="input-group-addon">{{ trans('general.months') }}</span>
</div>
<div class="col-md-9 col-md-offset-3">
{!! $errors->first('audit_interval', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">{{ trans('admin/settings/general.audit_interval_help') }}</p>
</div>
</div>
<!-- Alert threshold -->
<div class="form-group {{ $errors->has('audit_warning_days') ? 'error' : '' }}">
<div class="col-md-3">
<label for="audit_warning_days">{{ trans('admin/settings/general.audit_warning_days') }}</label>
</div>
<div class="input-group col-md-3">
<input class="form-control" placeholder="14" maxlength="3" name="audit_warning_days" type="text" id="audit_warning_days" value="{{ old('audit_warning_days', $setting->audit_warning_days) }}">
<span class="input-group-addon">{{ trans('general.days') }}</span>
</div>
<div class="col-md-9 col-md-offset-3">
{!! $errors->first('audit_warning_days', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">{{ trans('admin/settings/general.audit_warning_days_help') }}</p>
</div>
</div>
<!-- Due for checkin days -->
<div class="form-group {{ $errors->has('due_checkin_days') ? 'error' : '' }}">
<div class="col-md-3">
<label for="due_checkin_days">{{ trans('admin/settings/general.due_checkin_days') }}</label>
</div>
<div class="input-group col-md-3">
<input class="form-control" placeholder="14" maxlength="3" name="due_checkin_days" type="text" id="due_checkin_days" value="{{ old('due_checkin_days', $setting->due_checkin_days) }}">
<span class="input-group-addon">{{ trans('general.days') }}</span>
</div>
<div class="col-md-9 col-md-offset-3">
{!! $errors->first('due_checkin_days', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">{{ trans('admin/settings/general.due_checkin_days_help') }}</p>
</div>
</div>
</div>
</div> <!--/.box-body--> </div> <!--/.box-body-->
<div class="box-footer"> <div class="box-footer">

View file

@ -67,7 +67,7 @@
<span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.brand') }}</span> <span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.brand') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.brand_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.brand_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -84,7 +84,7 @@
<span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.general_settings') }}</span> <span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.general_settings') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.general_settings_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.general_settings_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -101,7 +101,7 @@
<span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.security') }}</span> <span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.security') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.security_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.security_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -117,7 +117,7 @@
<span class="keywords" aria-hidden="true" style="display:none"> {{ trans('admin/settings/general.keywords.groups') }}</span> <span class="keywords" aria-hidden="true" style="display:none"> {{ trans('admin/settings/general.keywords.groups') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.groups_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.groups_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -134,7 +134,7 @@
<span class="keywords" aria-hidden="true" style="display:none"> {{ trans('admin/settings/general.keywords.localization') }}</span> <span class="keywords" aria-hidden="true" style="display:none"> {{ trans('admin/settings/general.keywords.localization') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.localization_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.localization_help') }}</p>
</div> </div>
</div> </div>
@ -152,7 +152,7 @@
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.notifications_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.notifications_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -167,7 +167,7 @@
<span class="name">{{ trans('admin/settings/general.integrations') }}</span> <span class="name">{{ trans('admin/settings/general.integrations') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.webhook_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.webhook_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -182,7 +182,7 @@
<span class="name">{{ trans('general.asset_tags') }}</span> <span class="name">{{ trans('general.asset_tags') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.asset_tags_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.asset_tags_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -198,7 +198,7 @@
<span class="keywords" aria-hidden="true" style="display:none"> {{ trans('admin/settings/general.keywords.labels') }}</span> <span class="keywords" aria-hidden="true" style="display:none"> {{ trans('admin/settings/general.keywords.labels') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{!! trans('admin/settings/general.labels_help') !!}</p> <p class="index-block">{!! trans('admin/settings/general.labels_help') !!}</p>
</div> </div>
</div> </div>
</div> </div>
@ -214,7 +214,7 @@
<span class="name">{{ trans('admin/settings/general.ldap') }}</span> <span class="name">{{ trans('admin/settings/general.ldap') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.ldap_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.ldap_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -229,7 +229,7 @@
<span class="name">Google</span> <span class="name">Google</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.google_login') }}</p> <p class="index-block">{{ trans('admin/settings/general.google_login') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -244,7 +244,7 @@
<span class="name">{{ trans('admin/settings/general.saml') }}</span> <span class="name">{{ trans('admin/settings/general.saml') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.saml_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.saml_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -259,7 +259,7 @@
<span class="name">{{ trans('admin/settings/general.backups') }}</span> <span class="name">{{ trans('admin/settings/general.backups') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{!! trans('admin/settings/general.backups_help') !!}</p> <p class="index-block">{!! trans('admin/settings/general.backups_help') !!}</p>
</div> </div>
</div> </div>
</div> </div>
@ -275,7 +275,7 @@
<span class="name">{{ trans('admin/settings/general.login') }}</span> <span class="name">{{ trans('admin/settings/general.login') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.login_help') }} </p> <p class="index-block">{{ trans('admin/settings/general.login_help') }} </p>
</div> </div>
</div> </div>
</div> </div>
@ -290,7 +290,7 @@
<span class="name">{{ trans('admin/settings/general.oauth') }}</span> <span class="name">{{ trans('admin/settings/general.oauth') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.oauth_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.oauth_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -307,7 +307,7 @@
<span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.php_overview') }}</span> <span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.php_overview') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.php_overview_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.php_overview_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -325,7 +325,7 @@
<span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.purge') }}</span> <span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.keywords.purge') }}</span>
</a> </a>
</h5> </h5>
<p class="help-block">{{ trans('admin/settings/general.purge_help') }}</p> <p class="index-block">{{ trans('admin/settings/general.purge_help') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -448,7 +448,7 @@
var options = { var options = {
valueNames: [ 'name', 'keywords', 'summary', 'help-block'] valueNames: [ 'name', 'keywords', 'summary', 'index-block']
}; };
var settingList = new List('setting-list', options); var settingList = new List('setting-list', options);

View file

@ -22,7 +22,7 @@
{{ csrf_field() }} {{ csrf_field() }}
<div class="row"> <div class="row">
<div class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2"> <div class="col-sm-9 col-sm-offset-1 col-md-9 col-md-offset-2">
<div class="panel box box-default"> <div class="panel box box-default">
@ -35,142 +35,151 @@
<div class="box-body"> <div class="box-body">
<div class="col-md-11 col-md-offset-1"> <div class="col-md-12">
<fieldset name="password-preferences" class="bottom-padded">
<legend class="highlight">
{{ trans('admin/settings/general.legends.security') }}
</legend>
<!-- Two Factor --> <!-- Two Factor -->
<div class="form-group {{ $errors->has('brand') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('brand') ? 'error' : '' }}">
<div class="col-md-3"> <div class="col-md-3">
<label for="two_factor_enabled">{{ trans('admin/settings/general.two_factor_enabled_text') }}</label> <label for="two_factor_enabled">{{ trans('admin/settings/general.two_factor_enabled_text') }}</label>
</div> </div>
<div class="col-md-9"> <div class="col-md-9">
{!! Form::two_factor_options('two_factor_enabled', old('two_factor_enabled', $setting->two_factor_enabled), 'select2') !!} {!! Form::two_factor_options('two_factor_enabled', old('two_factor_enabled', $setting->two_factor_enabled), 'select2') !!}
<p class="help-block">{{ trans('admin/settings/general.two_factor_enabled_warning') }}</p> <p class="help-block">{{ trans('admin/settings/general.two_factor_enabled_warning') }}</p>
@if (config('app.lock_passwords')) @if (config('app.lock_passwords'))
<p class="text-warning"><i class="fas fa-lock"></i> {{ trans('general.feature_disabled') }}</p> <p class="text-warning"><i class="fas fa-lock"></i> {{ trans('general.feature_disabled') }}</p>
@endif
{!! $errors->first('two_factor_enabled', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div>
<!-- Min characters -->
<div class="form-group {{ $errors->has('pwd_secure_min') ? 'error' : '' }}">
<div class="col-md-3">
<label for="pwd_secure_min">{{ trans('admin/settings/general.pwd_secure_min') }}</label>
</div>
<div class="col-md-9">
<input class="form-control" style="width: 50px;" name="pwd_secure_min" type="text" value="{{ old('pwd_secure_min', $setting->pwd_secure_min) }}" id="pwd_secure_min">
{!! $errors->first('pwd_secure_min', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.pwd_secure_min_help') }}
</p>
</div>
</div>
<!-- Common Passwords -->
<div class="form-group {{ $errors->has('pwd_secure_complexity.*') ? 'error' : '' }}">
<div class="col-md-3">
<label for="pwd_secure_complexity">{{ trans('admin/settings/general.pwd_secure_complexity') }}</label>
</div>
<div class="col-md-9">
<label class="form-control">
<span class="sr-only">{{ trans('admin/settings/general.pwd_secure_uncommon') }}</span>
<input type="checkbox" name="pwd_secure_uncommon" value="1" @checked(old('pwd_secure_uncommon', $setting->pwd_secure_uncommon)) aria-label="pwd_secure_uncommon"/>
{{ trans('admin/settings/general.pwd_secure_uncommon') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['disallow_same_pwd_as_user_fields']" value="disallow_same_pwd_as_user_fields" @checked(old('disallow_same_pwd_as_user_fields', strpos($setting->pwd_secure_complexity, 'disallow_same_pwd_as_user_fields')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_disallow_same_pwd_as_user_fields') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['letters']" value="letters" @checked(old('pwd_secure_uncommon', strpos($setting->pwd_secure_complexity, 'letters')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_letters') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['numbers']" value="numbers" @checked(old('pwd_secure_uncommon', strpos($setting->pwd_secure_complexity, 'numbers')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_numbers') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['symbols']" value="symbols" @checked(old('pwd_secure_uncommon', strpos($setting->pwd_secure_complexity, 'symbols')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_symbols') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['case_diff']" value="case_diff" @checked(old('pwd_secure_uncommon', strpos($setting->pwd_secure_complexity, 'case_diff')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_case_diff') }}
</label>
@if ($errors->has('pwd_secure_complexity.*'))
<span class="alert-msg">{{ trans('validation.generic.invalid_value_in_field') }}</span>
@endif
<p class="help-block">
{{ trans('admin/settings/general.pwd_secure_complexity_help') }}
</p>
</div>
</div>
<!-- /.form-group -->
<hr>
<!-- Remote User Authentication -->
<div class="form-group {{ $errors->has('login_remote_user') ? 'error' : '' }}">
<div class="col-md-3">
<strong>{{ trans('admin/settings/general.login_remote_user_text') }}</strong>
</div>
<div class="col-md-9">
<!-- Enable Remote User Login -->
@if (config('app.lock_passwords'))
<p class="text-warning"><i class="fas fa-lock"></i> {{ trans('general.feature_disabled') }}</p>
@else
<label class="form-control">
<input type="checkbox" name="login_remote_user_enabled" value="1" @checked(old('login_remote_user_enabled', $setting->login_remote_user_enabled)) aria-label="login_remote_user"/>
<label for="login_remote_user_enabled">{{ trans('admin/settings/general.login_remote_user_enabled_text') }}</label>
</label>
{!! $errors->first('login_remote_user_enabled', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.login_remote_user_enabled_help') }}
</p>
<!-- Use custom remote user header name -->
<label for="login_remote_user_header_name">{{ trans('admin/settings/general.login_remote_user_header_name_text') }}</label>
<input class="form-control" name="login_remote_user_header_name" type="text" value="{{ old('login_remote_user_header_name', $setting->login_remote_user_header_name) }}" id="login_remote_user_header_name">
{!! $errors->first('login_remote_user_header_name', '<span class="alert-msg">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.login_remote_user_header_name_help') }}
</p>
<!-- Custom logout url to redirect to authentication provider -->
<label for="login_remote_user_custom_logout_url">{{ trans('admin/settings/general.login_remote_user_custom_logout_url_text') }}</label>
<input class="form-control" aria-label="login_remote_user_custom_logout_url" name="login_remote_user_custom_logout_url" type="url" value="{{ old('login_remote_user_custom_logout_url', $setting->login_remote_user_custom_logout_url) }}" id="login_remote_user_custom_logout_url">
{!! $errors->first('login_remote_user_custom_logout_url', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.login_remote_user_custom_logout_url_help') }}
</p>
@if ($setting->login_remote_user_enabled == '1')
<!-- Disable other logins mechanism -->
<label class="form-control">
<input type="checkbox" name="login_common_disabled" value="1" @checked(old('login_common_disabled', $setting->login_common_disabled)) aria-label="login_common_disabled"/>
{{ trans('admin/settings/general.login_common_disabled_text') }}
</label>
{!! $errors->first('login_common_disabled', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.login_common_disabled_help') }}
</p>
@endif @endif
@endif {!! $errors->first('two_factor_enabled', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div> </div>
</div>
<!-- Min characters -->
<div class="form-group {{ $errors->has('pwd_secure_min') ? 'error' : '' }}">
<div class="col-md-3">
<label for="pwd_secure_min">{{ trans('admin/settings/general.pwd_secure_min') }}</label>
</div>
<div class="col-md-9">
<input class="form-control" style="width: 60px;" name="pwd_secure_min" type="number" value="{{ old('pwd_secure_min', $setting->pwd_secure_min) }}" id="pwd_secure_min" maxlength="2" min="8">
{!! $errors->first('pwd_secure_min', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.pwd_secure_min_help') }}
</p>
</div>
</div>
<!-- Common Passwords -->
<div class="form-group {{ $errors->has('pwd_secure_complexity.*') ? 'error' : '' }}">
<div class="col-md-3">
<label for="pwd_secure_complexity">{{ trans('admin/settings/general.pwd_secure_complexity') }}</label>
</div>
<div class="col-md-9">
<label class="form-control">
<input type="checkbox" name="pwd_secure_uncommon" value="1" @checked(old('pwd_secure_uncommon', $setting->pwd_secure_uncommon)) aria-label="pwd_secure_uncommon"/>
{{ trans('admin/settings/general.pwd_secure_uncommon') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['disallow_same_pwd_as_user_fields']" value="disallow_same_pwd_as_user_fields" @checked(old('disallow_same_pwd_as_user_fields', strpos($setting->pwd_secure_complexity, 'disallow_same_pwd_as_user_fields')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_disallow_same_pwd_as_user_fields') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['letters']" value="letters" @checked(old('pwd_secure_uncommon', strpos($setting->pwd_secure_complexity, 'letters')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_letters') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['numbers']" value="numbers" @checked(old('pwd_secure_uncommon', strpos($setting->pwd_secure_complexity, 'numbers')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_numbers') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['symbols']" value="symbols" @checked(old('pwd_secure_uncommon', strpos($setting->pwd_secure_complexity, 'symbols')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_symbols') }}
</label>
<label class="form-control">
<input type="checkbox" name="pwd_secure_complexity['case_diff']" value="case_diff" @checked(old('pwd_secure_uncommon', strpos($setting->pwd_secure_complexity, 'case_diff')!==false)) aria-label="pwd_secure_complexity"/>
{{ trans('admin/settings/general.pwd_secure_complexity_case_diff') }}
</label>
@if ($errors->has('pwd_secure_complexity.*'))
<span class="alert-msg">{{ trans('validation.generic.invalid_value_in_field') }}</span>
@endif
<p class="help-block">
{{ trans('admin/settings/general.pwd_secure_complexity_help') }}
</p>
</div>
</div>
</fieldset>
<fieldset name="remote-login" class="bottom-padded">
<legend class="highlight">
{{ trans('admin/settings/general.login_remote_user_text') }}
</legend>
<!-- Remote User Authentication -->
<div class="form-group {{ $errors->has('login_remote_user') ? 'error' : '' }}">
<div class="col-md-9 col-md-offset-3">
<!-- Enable Remote User Login -->
@if (config('app.lock_passwords'))
<p class="text-warning"><i class="fas fa-lock"></i> {{ trans('general.feature_disabled') }}</p>
@else
<label class="form-control">
<input type="checkbox" name="login_remote_user_enabled" value="1" @checked(old('login_remote_user_enabled', $setting->login_remote_user_enabled)) aria-label="login_remote_user"/>
<label for="login_remote_user_enabled">{{ trans('admin/settings/general.login_remote_user_enabled_text') }}</label>
</label>
{!! $errors->first('login_remote_user_enabled', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.login_remote_user_enabled_help') }}
</p>
</div>
<div class="col-md-3">
<!-- Use custom remote user header name -->
<label for="login_remote_user_header_name">{{ trans('admin/settings/general.login_remote_user_header_name_text') }}</label>
</div>
<div class="col-md-9">
<input class="form-control" name="login_remote_user_header_name" type="text" value="{{ old('login_remote_user_header_name', $setting->login_remote_user_header_name) }}" id="login_remote_user_header_name">
{!! $errors->first('login_remote_user_header_name', '<span class="alert-msg">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.login_remote_user_header_name_help') }}
</p>
</div>
<div class="col-md-3">
<!-- Custom logout url to redirect to authentication provider -->
<label for="login_remote_user_custom_logout_url">{{ trans('admin/settings/general.login_remote_user_custom_logout_url_text') }}</label>
</div>
<div class="col-md-9">
<input class="form-control" aria-label="login_remote_user_custom_logout_url" name="login_remote_user_custom_logout_url" type="url" value="{{ old('login_remote_user_custom_logout_url', $setting->login_remote_user_custom_logout_url) }}" id="login_remote_user_custom_logout_url">
{!! $errors->first('login_remote_user_custom_logout_url', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.login_remote_user_custom_logout_url_help') }}
</p>
</div>
@if ($setting->login_remote_user_enabled == '1')
<div class="col-md-3">
<!-- Disable other logins mechanism -->
<label class="form-control">
<input type="checkbox" name="login_common_disabled" value="1" @checked(old('login_common_disabled', $setting->login_common_disabled)) aria-label="login_common_disabled"/>
{{ trans('admin/settings/general.login_common_disabled_text') }}
</label>
</div>
<div class="col-md-9">
{!! $errors->first('login_common_disabled', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
<p class="help-block">
{{ trans('admin/settings/general.login_common_disabled_help') }}
</p>
@endif
</div>
@endif
</fieldset>

View file

@ -18,6 +18,8 @@
# Updated Snipe-IT Install Script # # Updated Snipe-IT Install Script #
# Update created by Aaron Myers # # Update created by Aaron Myers #
# Change log # # Change log #
# * verify support for Ubuntu 24.04 -> 25.04 #
# * add support for linux Mint 21 -> 22 inclusive #
# * add support for linux mint 22.1 # # * add support for linux mint 22.1 #
# * add support for php8.2, awslinux2, alma 8/9 # # * add support for php8.2, awslinux2, alma 8/9 #
# * fix rocky8/9 support # # * fix rocky8/9 support #
@ -88,6 +90,7 @@ readonly APP_NAME="snipeit"
readonly APP_PATH="/var/www/html/$APP_NAME" readonly APP_PATH="/var/www/html/$APP_NAME"
readonly APP_LOG="/var/log/snipeit-install.log" readonly APP_LOG="/var/log/snipeit-install.log"
readonly COMPOSER_PATH="/home/$APP_USER" readonly COMPOSER_PATH="/home/$APP_USER"
is_mint=false
progress () { progress () {
spin[0]="-" spin[0]="-"
@ -351,6 +354,7 @@ case $distro in
*linuxmint*) *linuxmint*)
echo " The installer has detected $distro version $version codename $codename." echo " The installer has detected $distro version $version codename $codename."
distro=Ubuntu distro=Ubuntu
is_mint=true
apache_group=www-data apache_group=www-data
apachefile=/etc/apache2/sites-available/$APP_NAME.conf apachefile=/etc/apache2/sites-available/$APP_NAME.conf
;; ;;
@ -540,7 +544,7 @@ case $distro in
;; ;;
Ubuntu) Ubuntu)
if [ "${version//./}" -ge "2304" ]; then if [ "${version//./}" -ge "2304" ]; then
# Install for Ubuntu 23.04 and 23.10 # Install for Ubuntu 23.04 and above
set_fqdn set_fqdn
set_dbpass set_dbpass
tzone=$(cat /etc/timezone) tzone=$(cat /etc/timezone)
@ -550,7 +554,7 @@ case $distro in
progress progress
echo "* Installing Apache httpd, PHP, MariaDB and other requirements." echo "* Installing Apache httpd, PHP, MariaDB and other requirements."
PACKAGES="cron mariadb-server mariadb-client apache2 libapache2-mod-php php php-curl php-mysql php-gd php-ldap php-zip php-mbstring php-xml php-bcmath curl git unzip" PACKAGES="cron mariadb-server mariadb-client apache2 libapache2-mod-php php php-curl php-mysql php-gd php-ldap php-zip php-mbstring php-xml php-bcmath curl git unzip wget"
install_packages install_packages
echo "* Configuring Apache." echo "* Configuring Apache."
@ -575,12 +579,27 @@ case $distro in
chmod 777 -R $APP_PATH/storage/framework/cache/ chmod 777 -R $APP_PATH/storage/framework/cache/
log "run_as_app_user php $APP_PATH/artisan cache:clear" log "run_as_app_user php $APP_PATH/artisan cache:clear"
chmod 775 -R $APP_PATH/storage/ chmod 775 -R $APP_PATH/storage/
elif [ "${version//./}" -eq "221" ]; then elif [[ "${is_mint}" == "true" ]]; then
# Install for Linux Mint 22.1 # Install for Linux Mint 21.2 - 22.1
if [[ "${version//.*/}" -eq "22" ]] ; then
ubuntu_codename=noble
elif [[ "${version//.*/}" -eq "21" ]]; then
ubuntu_codename=jammy
else
echo "Unsupported Linux Mint version. Version found: $version"
exit 1
fi
set_fqdn set_fqdn
set_dbpass set_dbpass
tzone=$(cat /etc/timezone) tzone=$(cat /etc/timezone)
echo "* Set up Ondrej PHP repository"
echo "# Odrej PHP repo for ability to choose non-distro PHP versions" > /etc/apt/sources.list.d/ppa_ondrej_php_$ubuntu_codename.list
echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu $ubuntu_codename main" >> /etc/apt/sources.list.d/ppa_ondrej_php_$ubuntu_codename.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C
echo -n "* Updating installed packages." echo -n "* Updating installed packages."
log "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y upgrade" & pid=$! log "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y upgrade" & pid=$!
progress progress