Skip to content

Adds file upload deletion logging #16599

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: develop
Choose a base branch
from
Open
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ public function destroy($accessoryId = null, $fileId = null) : RedirectResponse
if (Storage::exists('private_uploads/accessories/'.$log->filename)) {
try {
Storage::delete('private_uploads/accessories/' . $log->filename);
$log->delete();
$accessory->logUploadDelete($log->filename);

return redirect()->back()->withFragment('files')->with('success', trans('admin/hardware/message.deletefile.success'));
} catch (\Exception $e) {
Log::debug($e);
Expand Down
3 changes: 2 additions & 1 deletion app/Http/Controllers/Assets/AssetFilesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ public function destroy(Asset $asset, $fileId = null) : RedirectResponse
if (Storage::exists($rel_path.'/'.$log->filename)) {
Storage::delete($rel_path.'/'.$log->filename);
}
$log->delete();
$asset->logUploadDelete($log->filename);

return redirect()->back()->withFragment('files')->with('success', trans('admin/hardware/message.deletefile.success'));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public function destroy($componentId = null, $fileId = null)
Log::debug($e);
}
}

$component->logUploadDelete($log->filename);
$log->delete();

return redirect()->back()->withFragment('files')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ public function destroy($consumableId = null, $fileId = null)
Log::debug($e);
}
}

$log->delete();
$consumable->logUploadDelete($log->filename);

return redirect()->back()->withFragment('files')
->with('success', trans('admin/hardware/message.deletefile.success'));
Expand Down
3 changes: 1 addition & 2 deletions app/Http/Controllers/Licenses/LicenseFilesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,7 @@ public function destroy($licenseId = null, $fileId = null)
Log::debug($e);
}
}

$log->delete();
$license->logUploadDelete($log->filename);

return redirect()->back()
->with('success', trans('admin/hardware/message.deletefile.success'));
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Transformers/ActionlogsTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public function transformActionlog (Actionlog $actionlog, $settings = null)
}

if ($actionlog->filename!='') {
$icon = Helper::filetype_icon($actionlog->filename);
$icon = $actionlog->action_type === 'upload deleted' ? 'fas fa-trash' : Helper::filetype_icon($actionlog->filename);
}

// This is necessary since we can't escape special characters within a JSON object
Expand Down
9 changes: 8 additions & 1 deletion app/Models/Accessory.php
Original file line number Diff line number Diff line change
Expand Up @@ -112,10 +112,17 @@ class Accessory extends SnipeModel
*/
public function uploads()
{
return $this->hasMany(\App\Models\Actionlog::class, 'item_id')
return $this->hasMany(Actionlog::class, 'item_id')
->where('item_type', '=', self::class)
->where('action_type', '=', 'uploaded')
->whereNotNull('filename')
->whereNotIn('filename', function ($query) {
$query->select('filename')
->from('action_logs')
->where('item_type', '=', self::class)
->where('action_type', '=', 'upload deleted')
->where('item_id', $this->id);
})
->orderBy('created_at', 'desc');
}

Expand Down
17 changes: 12 additions & 5 deletions app/Models/Asset.php
Original file line number Diff line number Diff line change
Expand Up @@ -480,11 +480,18 @@ public function get_depreciation()
*/
public function uploads()
{
return $this->hasMany('\App\Models\Actionlog', 'item_id')
->where('item_type', '=', Asset::class)
->where('action_type', '=', 'uploaded')
->whereNotNull('filename')
->orderBy('created_at', 'desc');
return $this->hasMany(Actionlog::class, 'item_id')
->where('item_type', '=', self::class)
->where('action_type', '=', 'uploaded')
->whereNotNull('filename')
->whereNotIn('filename', function ($query) {
$query->select('filename')
->from('action_logs')
->where('item_type', '=', self::class)
->where('action_type', '=', 'upload deleted')
->where('item_id', $this->id);
})
->orderBy('created_at', 'desc');
}

/**
Expand Down
11 changes: 9 additions & 2 deletions app/Models/Component.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,17 @@ public function isDeletable()
*/
public function uploads()
{
return $this->hasMany(\App\Models\Actionlog::class, 'item_id')
return $this->hasMany(Actionlog::class, 'item_id')
->where('item_type', '=', self::class)
->where('action_type', '=', 'uploaded')
->whereNotNull('filename')
->whereNotIn('filename', function ($query) {
$query->select('filename')
->from('action_logs')
->where('item_type', '=', self::class)
->where('action_type', '=', 'upload deleted')
->where('item_id', $this->id);
})
->orderBy('created_at', 'desc');
}

Expand Down Expand Up @@ -226,7 +233,7 @@ public function manufacturer()
*/
public function assetlog()
{
return $this->hasMany(\App\Models\Actionlog::class, 'item_id')->where('item_type', self::class)->orderBy('created_at', 'desc')->withTrashed();
return $this->hasMany(Actionlog::class, 'item_id')->where('item_type', self::class)->orderBy('created_at', 'desc')->withTrashed();
}

/**
Expand Down
7 changes: 7 additions & 0 deletions app/Models/Consumable.php
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,13 @@ public function uploads()
->where('item_type', '=', self::class)
->where('action_type', '=', 'uploaded')
->whereNotNull('filename')
->whereNotIn('filename', function ($query) {
$query->select('filename')
->from('action_logs')
->where('item_type', '=', self::class)
->where('action_type', '=', 'upload deleted')
->where('item_id', $this->id);
})
->orderBy('created_at', 'desc');
}

Expand Down
9 changes: 8 additions & 1 deletion app/Models/License.php
Original file line number Diff line number Diff line change
Expand Up @@ -416,10 +416,17 @@ public function assetlog()
*/
public function uploads()
{
return $this->hasMany(\App\Models\Actionlog::class, 'item_id')
return $this->hasMany(Actionlog::class, 'item_id')
->where('item_type', '=', self::class)
->where('action_type', '=', 'uploaded')
->whereNotNull('filename')
->whereNotIn('filename', function ($query) {
$query->select('filename')
->from('action_logs')
->where('item_type', '=', self::class)
->where('action_type', '=', 'upload deleted')
->where('item_id', $this->id);
})
->orderBy('created_at', 'desc');
}

Expand Down
23 changes: 23 additions & 0 deletions app/Models/Loggable.php
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,29 @@ public function logUpload($filename, $note)

return $log;
}
/**
* @author Godfrey Martinez
* @since [v8.0.4]
* @return \App\Models\Actionlog
*/
public function logUploadDelete($filename)
{
$log = new Actionlog;
if (static::class == LicenseSeat::class) {
$log->item_type = License::class;
$log->item_id = $this->license_id;
} else {
$log->item_type = static::class;
$log->item_id = $this->id;
}
$log->created_by = auth()->id();
$log->target_id = null;
$log->filename = $filename;
$log->created_at = date('Y-m-d H:i:s');
$log->logaction('upload deleted');

return $log;
}

/**
* Get latest signature from a specific user
Expand Down
1 change: 1 addition & 0 deletions resources/lang/en-US/general.php
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,7 @@
'updating_item' => 'Updating :item',
'upload_filetypes_help' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, xls, xlsx, txt, lic, xml, zip, rtf and rar. Max upload size allowed is :size.',
'uploaded' => 'Uploaded',
'upload_deleted' => 'Upload Deleted',
'user' => 'User',
'accepted' => 'accepted',
'declined' => 'declined',
Expand Down
Loading