Add field to user management.

This commit is contained in:
James Cole
2021-08-30 06:37:55 +02:00
parent a08440aacf
commit 30d155a8e2
7 changed files with 40 additions and 2 deletions

View File

@@ -101,7 +101,7 @@ class CreateGroupMemberships extends Command
private function createGroupMembership(User $user): void private function createGroupMembership(User $user): void
{ {
$userGroup = UserGroup::create(['title' => $user->email]); $userGroup = UserGroup::create(['title' => $user->email]);
$userRole = UserRole::where('title', UserRole::FULL)->first(); $userRole = UserRole::where('title', UserRole::OWNER)->first();
if (null === $userRole) { if (null === $userRole) {
throw new FireflyException('Firefly III could not find a user role. Please make sure all validations have run.'); throw new FireflyException('Firefly III could not find a user role. Please make sure all validations have run.');
@@ -117,6 +117,9 @@ class CreateGroupMemberships extends Command
if (null === $membership) { if (null === $membership) {
throw new FireflyException('Firefly III could not create user group management object. Please make sure all validations have run.'); throw new FireflyException('Firefly III could not create user group management object. Please make sure all validations have run.');
} }
$user->user_group_id = $userGroup->id;
$user->save();
Log::debug(sprintf('User #%d now has main group.', $user->id)); Log::debug(sprintf('User #%d now has main group.', $user->id));
} }

View File

@@ -262,7 +262,7 @@ class UserEventHandler
$user = $event->user; $user = $event->user;
// create a new group. // create a new group.
$group = UserGroup::create(['title' => $user->email]); $group = UserGroup::create(['title' => $user->email]);
$role = UserRole::where('title', UserRole::FULL)->first(); $role = UserRole::where('title', UserRole::OWNER)->first();
if (null === $role) { if (null === $role) {
throw new FireflyException('The user role is unexpectedly empty. Did you run all migrations?'); throw new FireflyException('The user role is unexpectedly empty. Did you run all migrations?');
} }
@@ -273,6 +273,8 @@ class UserEventHandler
'user_role_id' => $role->id, 'user_role_id' => $role->id,
] ]
); );
$user->user_group_id = $group->id;
$user->save();
return true; return true;
} }

View File

@@ -36,6 +36,7 @@ class UserRole extends Model
public const CHANGE_REPETITIONS = 'change_reps'; public const CHANGE_REPETITIONS = 'change_reps';
public const VIEW_REPORTS = 'view_reports'; public const VIEW_REPORTS = 'view_reports';
public const FULL = 'full'; public const FULL = 'full';
public const OWNER = 'owner';
protected $fillable = ['title']; protected $fillable = ['title'];
/** /**

View File

@@ -46,8 +46,10 @@ use FireflyIII\Models\Tag;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\UserGroup;
use FireflyIII\Models\Webhook; use FireflyIII\Models\Webhook;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough; use Illuminate\Database\Eloquent\Relations\HasManyThrough;
@@ -311,6 +313,14 @@ class User extends Authenticatable
return $this->hasMany(Category::class); return $this->hasMany(Category::class);
} }
/**
* @codeCoverageIgnore
* @return BelongsTo
*/
public function userGroup(): BelongsTo
{
return $this->belongsTo(UserGroup::class,);
}
/** /**
* @codeCoverageIgnore * @codeCoverageIgnore
* Link to currency exchange rates * Link to currency exchange rates

View File

@@ -32,5 +32,6 @@ return [
UserRole::CHANGE_REPETITIONS => [], UserRole::CHANGE_REPETITIONS => [],
UserRole::VIEW_REPORTS => [], UserRole::VIEW_REPORTS => [],
UserRole::FULL => [], UserRole::FULL => [],
UserRole::OWNER => [],
], ],
]; ];

View File

@@ -2,6 +2,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/** /**
* Class UserGroups * Class UserGroups
@@ -15,6 +16,17 @@ class UserGroups extends Migration
*/ */
public function down() public function down()
{ {
Schema::table(
'users', function (Blueprint $table) {
$table->dropForeign('type_user_group_id');
if (Schema::hasColumn('users', 'user_group_id')) {
$table->dropColumn('user_group_id');
}
}
);
Schema::dropIfExists('group_memberships'); Schema::dropIfExists('group_memberships');
Schema::dropIfExists('user_roles'); Schema::dropIfExists('user_roles');
Schema::dropIfExists('user_groups'); Schema::dropIfExists('user_groups');
@@ -69,6 +81,14 @@ class UserGroups extends Migration
$table->unique(['user_id', 'user_group_id', 'user_role_id']); $table->unique(['user_id', 'user_group_id', 'user_role_id']);
} }
); );
Schema::table(
'users', function (Blueprint $table) {
if (!Schema::hasColumn('users', 'user_group_id')) {
$table->bigInteger('user_group_id', false, true)->nullable();
$table->foreign('user_group_id', 'type_user_group_id')->references('id')->on('user_groups')->onDelete('set null');
}
}
);
} }
} }

View File

@@ -26,6 +26,7 @@ class UserRoleSeeder extends Seeder
UserRole::CHANGE_REPETITIONS, UserRole::CHANGE_REPETITIONS,
UserRole::VIEW_REPORTS, UserRole::VIEW_REPORTS,
UserRole::FULL, UserRole::FULL,
UserRole::OWNER,
]; ];
/** @var string $role */ /** @var string $role */