mirror of
https://github.com/snipe/snipe-it.git
synced 2025-01-25 20:51:30 -08:00
Added console command to encrypt previously unencrypted fields
Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
parent
cbe07ad23b
commit
5123ab57c9
71
app/Console/Commands/ToggleCustomfieldEncryption.php
Normal file
71
app/Console/Commands/ToggleCustomfieldEncryption.php
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use App\Models\Asset;
|
||||||
|
use App\Models\CustomField;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
|
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 unencypted 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.
|
||||||
|
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 ' . $fieldname.' is already encrypted. No action was taken.');
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->error('No matching results for unencrypted custom fields with db_column name: ' . $fieldname.'. Please check the fieldname.');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue