Skip to content

Commit 8eb68d3

Browse files
committed
Merge remote-tracking branch 'origin/develop'
2 parents fc78091 + edd6170 commit 8eb68d3

File tree

15 files changed

+414
-89
lines changed

15 files changed

+414
-89
lines changed

app/Http/Controllers/SettingsController.php

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,6 @@ public function postSettings(Request $request)
348348
}
349349

350350
$setting->default_eula_text = $request->input('default_eula_text');
351-
$setting->load_remote = $request->input('load_remote', 0);
352351
$setting->thumbnail_max_h = $request->input('thumbnail_max_h');
353352
$setting->privacy_policy_link = $request->input('privacy_policy_link');
354353
$setting->depreciation_method = $request->input('depreciation_method');
@@ -393,10 +392,11 @@ public function getBranding()
393392
*
394393
* @since [v1.0]
395394
*
396-
* @return View
395+
* @return \Illuminate\Contracts\View\View | \Illuminate\Http\RedirectResponse
397396
*/
398397
public function postBranding(ImageUploadRequest $request)
399398
{
399+
// Something has gone horribly wrong - no settings record exists!
400400
if (is_null($setting = Setting::getSettings())) {
401401
return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error'));
402402
}
@@ -407,51 +407,75 @@ public function postBranding(ImageUploadRequest $request)
407407
$setting->version_footer = $request->input('version_footer');
408408
$setting->footer_text = $request->input('footer_text');
409409
$setting->skin = $request->input('skin');
410-
$setting->allow_user_skin = $request->input('allow_user_skin');
410+
$setting->allow_user_skin = $request->input('allow_user_skin', '0');
411411
$setting->show_url_in_emails = $request->input('show_url_in_emails', '0');
412412
$setting->logo_print_assets = $request->input('logo_print_assets', '0');
413+
$setting->load_remote = $request->input('load_remote', 0);
413414

414-
// Only allow the site name and CSS to be changed if lock_passwords is false
415+
// Only allow the site name, images, and CSS to be changed if lock_passwords is false
415416
// Because public demos make people act like dicks
416417

417-
if (! config('app.lock_passwords')) {
418-
$request->validate(['site_name' => 'required']);
419-
$setting->site_name = $request->input('site_name');
418+
if (!config('app.lock_passwords')) {
419+
420+
if ($request->has('site_name')) {
421+
$request->validate(['site_name' => 'required']);
422+
}
423+
424+
$setting->site_name = $request->input('site_name', 'Snipe-IT');
420425
$setting->custom_css = $request->input('custom_css');
426+
427+
// Logo upload
421428
$setting = $request->handleImages($setting, 600, 'logo', '', 'logo');
422429

423-
if ('1' == $request->input('clear_logo')) {
424-
Storage::disk('public')->delete($setting->logo);
430+
if ($request->input('clear_logo') == '1') {
431+
432+
if (($setting->logo) && (Storage::exists($setting->logo))) {
433+
Storage::disk('public')->delete($setting->logo);
434+
}
425435
$setting->logo = null;
426436
$setting->brand = 1;
427437
}
428438

429-
439+
// Email logo upload
430440
$setting = $request->handleImages($setting, 600, 'email_logo', '', 'email_logo');
441+
if ($request->input('clear_email_logo') == '1') {
431442

432-
433-
if ('1' == $request->input('clear_email_logo')) {
434-
Storage::disk('public')->delete($setting->email_logo);
443+
if (($setting->email_logo) && (Storage::exists($setting->email_logo))) {
444+
Storage::disk('public')->delete($setting->email_logo);
445+
}
435446
$setting->email_logo = null;
436447
// If they are uploading an image, validate it and upload it
437448
}
438449

439-
450+
// Label logo upload
440451
$setting = $request->handleImages($setting, 600, 'label_logo', '', 'label_logo');
452+
if ($request->input('clear_label_logo') == '1') {
441453

442-
if ('1' == $request->input('clear_label_logo')) {
443-
Storage::disk('public')->delete($setting->label_logo);
454+
if (($setting->label_logo) && (Storage::exists($setting->label_logo))) {
455+
Storage::disk('public')->delete($setting->label_logo);
456+
}
444457
$setting->label_logo = null;
445458
}
446459

447-
448-
$setting = $request->handleImages($setting, 600, 'favicon', '', 'favicon');
449-
450-
// If the user wants to clear the favicon...
460+
// Favicon upload
461+
$setting = $request->handleImages($setting, 100, 'favicon', '', 'favicon');
451462
if ('1' == $request->input('clear_favicon')) {
452-
Storage::disk('public')->delete($setting->favicon);
463+
464+
if (($setting->favicon) && (Storage::exists($setting->favicon))) {
465+
Storage::disk('public')->delete($setting->favicon);
466+
}
453467
$setting->favicon = null;
454468
}
469+
470+
// Default avatar upload
471+
$setting = $request->handleImages($setting, 500, 'default_avatar', 'avatars', 'default_avatar');
472+
if ($request->input('clear_default_avatar') == '1') {
473+
474+
if (($setting->default_avatar) && (Storage::exists('avatars/'.$setting->default_avatar))) {
475+
Storage::disk('public')->delete('avatars/'.$setting->default_avatar);
476+
}
477+
$setting->default_avatar = null;
478+
}
455479
}
456480

457481
if ($setting->save()) {

app/Http/Requests/ImageUploadRequest.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,7 @@ public function handleImages($item, $w = 600, $form_fieldname = 'image', $path =
9696

9797
$ext = $image->guessExtension();
9898
$file_name = $type.'-'.$form_fieldname.'-'.$item->id.'-'.str_random(10).'.'.$ext;
99-
100-
Log::info('File name will be: '.$file_name);
101-
Log::debug('File extension is: '.$ext);
102-
99+
103100
if (($image->getMimeType() == 'image/vnd.microsoft.icon') || ($image->getMimeType() == 'image/x-icon') || ($image->getMimeType() == 'image/avif') || ($image->getMimeType() == 'image/webp')) {
104101
// If the file is an icon, webp or avif, we need to just move it since gd doesn't support resizing
105102
// icons or avif, and webp support and needs to be compiled into gd for resizing to be available

app/Http/Transformers/UsersTransformer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function transformUser(User $user)
2424

2525
$array = [
2626
'id' => (int) $user->id,
27-
'avatar' => e($user->present()->gravatar),
27+
'avatar' => e($user->present()->gravatar) ?? null,
2828
'name' => e($user->getFullNameAttribute()),
2929
'first_name' => e($user->first_name),
3030
'last_name' => e($user->last_name),

app/Presenters/UserPresenter.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,8 @@ public function name()
432432
*/
433433
public function gravatar()
434434
{
435+
436+
// User's specific avatar
435437
if ($this->avatar) {
436438

437439
// Check if it's a google avatar or some external avatar
@@ -443,6 +445,12 @@ public function gravatar()
443445
return Storage::disk('public')->url('avatars/'.e($this->avatar));
444446
}
445447

448+
// If there is a default avatar
449+
if (Setting::getSettings()->default_avatar!= '') {
450+
return Storage::disk('public')->url('avatars/'.e(Setting::getSettings()->default_avatar));
451+
}
452+
453+
// Fall back to Gravatar if the settings allow loading remote scripts
446454
if (Setting::getSettings()->load_remote == '1') {
447455
if ($this->model->gravatar != '') {
448456

@@ -456,8 +464,8 @@ public function gravatar()
456464
}
457465
}
458466

459-
// Set a fun, gender-neutral default icon
460-
return config('app.url').'/img/default-sm.png';
467+
468+
return false;
461469
}
462470

463471
/**
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
return new class extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*/
12+
public function up(): void
13+
{
14+
Schema::table('settings', function (Blueprint $table) {
15+
$table->string('default_avatar')->after('favicon')->default('default.png')->nullable();
16+
});
17+
}
18+
19+
/**
20+
* Reverse the migrations.
21+
*/
22+
public function down(): void
23+
{
24+
Schema::table('settings', function (Blueprint $table) {
25+
$table->dropColumn('default_avatar');
26+
});
27+
}
28+
};

package-lock.json

Lines changed: 19 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,6 @@
5656
"signature_pad": "^4.2.0",
5757
"tableexport.jquery.plugin": "1.30.0",
5858
"tether": "^1.4.0",
59-
"webpack": "^5.90.2"
59+
"webpack": "^5.92.0"
6060
}
6161
}

resources/lang/en-US/admin/settings/general.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@
122122
'ldap_test' => 'Test LDAP',
123123
'ldap_test_sync' => 'Test LDAP Synchronization',
124124
'license' => 'Software License',
125-
'load_remote' => 'Use Gravatar',
126-
'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.',
125+
'load_remote' => 'Load Remote Avatars',
126+
'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.',
127127
'login' => 'Login Attempts',
128128
'login_attempt' => 'Login Attempt',
129129
'login_ip' => 'IP Address',
@@ -375,5 +375,6 @@
375375
'timezone' => 'Timezone',
376376
'profile_edit' => 'Edit Profile',
377377
'profile_edit_help' => 'Allow users to edit their own profiles.',
378+
'default_avatar' => 'Upload default avatar',
378379

379380
];

resources/views/layouts/default.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@
324324
<img src="{{ Auth::user()->present()->gravatar() }}" class="user-image"
325325
alt="">
326326
@else
327-
<i class="fas fa-users" aria-hidden="true"></i>
327+
<i class="fas fa-user" aria-hidden="true"></i>
328328
@endif
329329

330330
<span class="hidden-xs">{{ Auth::user()->getFullNameAttribute() }} <strong

resources/views/partials/bootstrap-table.blade.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<script nonce="{{ csrf_token() }}">
1010
$(function () {
1111
12-
var locale = '{{ config('app.locale') }}';
12+
var locale = '{{ app()->getLocale() }}';
1313
var blockedFields = "searchable,sortable,switchable,title,visible,formatter,class".split(",");
1414
1515
var keyBlocked = function(key) {
@@ -46,7 +46,6 @@ classes: 'table table-responsive table-no-bordered',
4646
stickyHeader: true,
4747
stickyHeaderOffsetLeft: parseInt($('body').css('padding-left'), 10),
4848
stickyHeaderOffsetRight: parseInt($('body').css('padding-right'), 10),
49-
locale: '{{ app()->getLocale() }}',
5049
undefinedText: '',
5150
iconsPrefix: 'fa',
5251
cookieStorage: '{{ config('session.bs_table_storage') }}',

0 commit comments

Comments
 (0)