Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe 2020-11-12 15:27:49 -08:00
commit caeea9f530
25 changed files with 118 additions and 41 deletions

View file

@ -91,7 +91,7 @@ class MoveUploadsToNewDisk extends Command
for ($l = 0; $l < count($logos); $l++) {
$type_count++;
$filename = basename($logos[$l]);
$new_url = Storage::disk('public')->url($logos[$l], file_get_contents($public_upload[$i]));
$new_url = Storage::disk('public')->url($logos[$l], file_get_contents($public_upload[$l]));
$this->info($type_count.'. LOGO: '.$filename.' was copied to '.$new_url);
}
@ -116,7 +116,7 @@ class MoveUploadsToNewDisk extends Command
$filename = basename($private_upload[$x]);
try {
Storage::disk('private_uploads')->put($private_type.'/'.$filename, file_get_contents($public_upload[$i]));
Storage::put($private_type.'/'.$filename, file_get_contents($private_upload[$i]));
$new_url = Storage::url($private_type.'/'.$filename, $filename);
$this->info($type_count.'. PRIVATE: '.$filename.' was copied to '.$new_url);

View file

@ -0,0 +1,44 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class PurgeLoginAttempts extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'snipeit:purge-logins';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Clears the login_attempts table';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
if ($this->confirm("\n****************************************************\nTHIS WILL DELETE ALL OF THE YOUR LOGIN ATTEMPT RECORDS. \nThere is NO undo! \n****************************************************\n\nDo you wish to continue? No backsies! [y|N]")) {
\DB::statement('delete from login_attempts');
}
}
}

View file

@ -137,7 +137,7 @@ class SettingsController extends Controller
try {
Notification::send(Setting::first(), new MailTest());
return response()->json(['message' => 'Mail sent to '.config('mail.reply_to.address')], 200);
} catch (Exception $e) {
} catch (\Exception $e) {
return response()->json(['message' => $e->getMessage()], 500);
}
}

View file

@ -39,7 +39,8 @@ class LicenseFilesController extends Controller
$upload_success = false;
foreach ($request->file('file') as $file) {
$file_name = 'license-'.date('Y-m-d-His').'-'.$file->getBasename().'.'.$file->getClientOriginalExtension();
$file_name = 'license-'.$license->id.'-'.str_random(8).'-'.str_slug(basename($file->getClientOriginalName(), '.'.$file->getClientOriginalExtension())).'.'.$file->getClientOriginalExtension();
$upload_success = $file->storeAs('private_uploads/licenses', $file_name);

View file

@ -245,10 +245,10 @@ class Asset extends Depreciable
public function availableForCheckout()
{
if (
(!$this->assignedTo) ||
((!$this->assignedTo) && ($this->assetstatus->archived == 0)) ||
((empty($this->assigned_to)) &&
(empty($this->deleted_at)) &&
(($this->assetstatus) && ($this->assetstatus->deployable == 1))))
(($this->assetstatus) && ($this->assetstatus->deployable == 1))))
{
return true;
}

View file

@ -111,7 +111,7 @@ class CheckinAccessoryNotification extends Notification
];
return (new SlackMessage)
->content(':arrow_down: :keyboard: Accessory Checked In')
->content(':arrow_down: :keyboard: '.trans('mail.Accessory_Checkin_Notification'))
->from($botname)
->attachment(function ($attachment) use ($item, $note, $admin, $fields) {
$attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl())
@ -135,7 +135,7 @@ class CheckinAccessoryNotification extends Notification
'note' => $this->note,
'target' => $this->target,
])
->subject('Accessory checked in');
->subject(trans('mail.Accessory_Checkin_Notification'));
}
}

View file

@ -79,7 +79,7 @@ class CheckinAssetNotification extends Notification
];
return (new SlackMessage)
->content(':arrow_down: :computer: Asset Checked In')
->content(':arrow_down: :computer: '.trans('mail.Asset_Checkin_Notification'))
->from($botname)
->attachment(function ($attachment) use ($item, $note, $admin, $fields) {
$attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl())
@ -113,7 +113,7 @@ class CheckinAssetNotification extends Notification
'fields' => $fields,
'expected_checkin' => $this->expected_checkin,
])
->subject('Asset checked in');
->subject(trans('mail.Asset_Checkin_Notification'));
return $message;

View file

@ -83,7 +83,7 @@ class CheckinLicenseSeatNotification extends Notification
return (new SlackMessage)
->content(':arrow_down: :floppy_disk: License Checked In')
->content(':arrow_down: :floppy_disk: '.trans('mail.License_Checkin_Notification'))
->from($botname)
->attachment(function ($attachment) use ($item, $note, $admin, $fields) {
$attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl())
@ -106,7 +106,7 @@ class CheckinLicenseSeatNotification extends Notification
'note' => $this->note,
'target' => $this->target,
])
->subject('License checked in');
->subject(trans('mail.License_Checkin_Notification'));
}

View file

@ -48,7 +48,7 @@ class ExpectedCheckinAdminNotification extends Notification
[
'assets' => $this->assets,
])
->subject('Expected asset checkin report');
->subject(trans('mail.Expected_Checkin_Report'));
return $message;

View file

@ -2,7 +2,7 @@
namespace App\Notifications;
use Carbon\Carbon;
use App\Helpers\Helper;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
@ -46,16 +46,18 @@ class ExpectedCheckinNotification extends Notification
*/
public function toMail()
{
$formatted_due = Carbon::parse($this->params->expected_checkin)->format('D, M j, Y');
return (new MailMessage)
->error()
->subject('Reminder: '.$this->params->present()->name().' checkin deadline approaching')
->line('Hi, '.$this->params->assignedto->first_name.' '.$this->params->assignedto->last_name)
->greeting('An asset checked out to you is due to be checked back in on '.$formatted_due.'.')
->line('Asset: '.$this->params->present()->name())
->line('Serial: '.$this->params->serial)
->line('Asset Tag: '.$this->params->asset_tag)
->action('View Your Assets', route('view-assets'));
$message = (new MailMessage)->markdown('notifications.markdown.expected-checkin',
[
'date' => Helper::getFormattedDateObject($this->params->expected_checkin, 'date', false),
'asset' => $this->params->present()->name(),
'serial' => $this->params->serial,
'asset_tag' => $this->params->asset_tag
])
->subject(trans('mail.Expected_Checkin_Notification', ['name' => $this->params->present()->name()]));
return $message;
}
}

View file

@ -242,4 +242,9 @@
'login_enabled' => 'Login Enabled',
'audit_due' => 'Due for Audit',
'audit_overdue' => 'Overdue for Audit',
'accept' => 'Accept :asset',
'i_accept' => 'I accept',
'i_decline' => 'I decline',
'sign_tos' => 'Sign below to indicate that you agree to the terms of service:',
'clear_signature' => 'Clear Signature'
];

View file

@ -70,5 +70,11 @@ return array(
'welcome' => 'Welcome :name',
'welcome_to' => 'Welcome to :web!',
'your_credentials' => 'Your Snipe-IT credentials',
'Accessory_Checkin_Notification' => 'Accessory checked in',
'Asset_Checkin_Notification' => 'Asset checked in',
'License_Checkin_Notification' => 'License checked in',
'Expected_Checkin_Report' => 'Expected asset checkin report'
'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching',
'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date',
'your_assets' => 'View Your Assets'
);

View file

@ -2,7 +2,7 @@
{{-- Page title --}}
@section('title')
Accept {{ $item->present()->name() }}
{{trans('general.accept', ['asset' => $item->present()->name()])}}
@parent
@stop
@ -42,14 +42,14 @@
<div class="radio">
<label>
<input type="radio" name="asset_acceptance" id="accepted" value="accepted">
I accept
{{trans('general.i_accept')}}
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="asset_acceptance" id="declined" value="declined">
I decline
{{trans('general.i_decline')}}
</label>
</div>
@ -64,7 +64,7 @@
@if ($snipeSettings->require_accept_signature=='1')
<div class="col-md-12 col-sm-12 text-center" style="padding-top: 20px">
<h2>Sign below to indicate that you agree to the terms of service:</h2>
<h2>{{trans('general.sign_tos')}}</h2>
<div id="signature-pad" class="m-signature-pad">
<div class="m-signature-pad--body col-md-12 col-sm-12 col-lg-12 col-xs-12">
@ -72,7 +72,7 @@
<input type="hidden" name="signature_output" id="signature_output">
</div>
<div class="col-md-12 col-sm-12 col-lg-12 col-xs-12 text-center">
<button type="button" class="btn btn-sm btn-primary clear" data-action="clear" id="clear_button">Clear Signature</button>
<button type="button" class="btn btn-sm btn-primary clear" data-action="clear" id="clear_button">{{trans('general.clear_signature')}}</button>
</div>
</div>
</div> <!-- .col-md-12.text-center-->

View file

@ -17,7 +17,7 @@
<link rel="apple-touch-icon" href="{{ ($snipeSettings) && ($snipeSettings->favicon!='') ? Storage::disk('public')->url(e($snipeSettings->logo)) : '/img/logo.png' }}">
<link rel="apple-touch-startup-image" href="{{ ($snipeSettings) && ($snipeSettings->favicon!='') ? Storage::disk('public')->url(e($snipeSettings->logo)) : '/img/logo.png' }}">
<link rel="shortcut icon" type="image/ico" href="{{ ($snipeSettings) && ($snipeSettings->favicon!='') ? Storage::disk('public')->url(e($snipeSettings->favicon)) : 'favicon.ico' }} ">
<link rel="shortcut icon" type="image/ico" href="{{ ($snipeSettings) && ($snipeSettings->favicon!='') ? Storage::disk('public')->url(e($snipeSettings->favicon)) : '/favicon.ico' }} ">
<meta name="csrf-token" content="{{ csrf_token() }}">

View file

@ -55,7 +55,7 @@
@endif
@endcomponent
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -25,7 +25,7 @@
@endif
@endcomponent
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -42,7 +42,7 @@
@endif
@endcomponent
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -24,7 +24,7 @@
@endif
@endcomponent
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -47,7 +47,7 @@
@endif
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -64,7 +64,7 @@
@endif
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -44,7 +44,7 @@
@endif
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -47,7 +47,7 @@
@endif
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -0,0 +1,20 @@
@component('mail::message')
# {{ trans('mail.hello') }},
{{ trans('mail.Expected_Checkin_Date', ['date' => $date]) }}
@if ((isset($asset)) && ($asset!=''))
{{ trans('mail.asset_name') }} {{ $asset }}
@endif
{{ trans('mail.asset_tag') }} {{ $asset_tag }}
@if (isset($serial))
{{ trans('mail.serial') }}: {{ $serial }}
@endif
**[{{ trans('mail.your_assets') }}]({{ route('view-assets') }})**
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}
@endcomponent

View file

@ -14,7 +14,7 @@ $checkin = \App\Helpers\Helper::getFormattedDateObject($asset->expected_checkin,
@endforeach
@endcomponent
Thanks,
{{ trans('mail.best_regards') }}
{{ $snipeSettings->site_name }}

View file

@ -28,7 +28,6 @@
data-show-refresh="true"
data-sort-order="asc"
id="unacceptedAssetsReport"
data-url="{{route('api.maintenances.index') }}"
class="table table-striped snipe-table"
data-export-options='{
"fileName": "maintenance-report-{{ date('Y-m-d') }}",