mirror of
https://github.com/Bubka/2FAuth.git
synced 2024-11-22 00:03:09 +01:00
Add migration to bind settings to users and to set identify admin
This commit is contained in:
parent
77eebbd35d
commit
d0401ced5d
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Arr;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->boolean('is_admin')
|
||||
->after('password')
|
||||
->default(0);
|
||||
$table->json('preferences')->nullable();
|
||||
});
|
||||
|
||||
DB::table('users')->update(['is_admin' => 1]);
|
||||
|
||||
// User options are converted as user preferences
|
||||
$options = DB::table('options')->get();
|
||||
$preferences = config('2fauth.preferences');
|
||||
|
||||
foreach ($options as $option) {
|
||||
if (Arr::has($preferences, $option->key)) {
|
||||
DB::table('users')->update(['preferences->'.$option->key => static::restoreType($option->value)]);
|
||||
DB::table('options')->where('id', $option->id)->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn('is_admin');
|
||||
});
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn('preferences');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces patterned string that represent booleans with real booleans
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected static function restoreType(mixed $value)
|
||||
{
|
||||
if (is_numeric($value)) {
|
||||
$value = is_float($value + 0) ? (float) $value : (int) $value;
|
||||
}
|
||||
|
||||
if ($value === '{{}}') {
|
||||
return false;
|
||||
} elseif ($value === '{{1}}') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user