mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-26 22:19:41 -08:00
d64ee42ec3
Signed-off-by: snipe <snipe@snipe.net>
77 lines
2.2 KiB
PHP
77 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Models\Asset;
|
|
use App\Models\CustomField;
|
|
use Illuminate\Console\Command;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class ToggleCustomfieldEncryption extends Command
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'snipeit:customfield-encryption
|
|
{fieldname : the db_column_name of the field}';
|
|
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'This command should be used to convert an unencrypted custom field into a custom field and encrypt the associated data in the assets table for that column.';
|
|
|
|
/**
|
|
* Create a new command instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function handle()
|
|
{
|
|
$fieldname = $this->argument('fieldname');
|
|
|
|
if ($field = CustomField::where('db_column', $fieldname)->first()) {
|
|
|
|
// If the field is not encrypted, make it encrypted and encrypt the data in the assets table for the
|
|
// corresponding field.
|
|
DB::transaction(function () use ($field) {
|
|
|
|
if ($field->field_encrypted == 0) {
|
|
$assets = Asset::whereNotNull($field->db_column)->get();
|
|
|
|
foreach ($assets as $asset) {
|
|
$asset->{$field->db_column} = encrypt($asset->{$field->db_column});
|
|
$asset->save();
|
|
}
|
|
|
|
$field->field_encrypted = 1;
|
|
$field->save();
|
|
|
|
// This field is already encrypted. Do nothing.
|
|
} else {
|
|
$this->error('The custom field ' . $field->db_column.' is already encrypted. No action was taken.');
|
|
}
|
|
});
|
|
|
|
// No matching column name found
|
|
} else {
|
|
$this->error('No matching results for unencrypted custom fields with db_column name: ' . $fieldname.'. Please check the fieldname.');
|
|
}
|
|
|
|
}
|
|
}
|