db: add User has one AdminRole relation

This commit is contained in:
Matthew Penner 2021-01-19 18:51:29 -07:00
parent 1e61fd161c
commit e01d859b53
5 changed files with 16 additions and 8 deletions

5
.gitignore vendored
View file

@ -1,6 +1,9 @@
/vendor
*.DS_Store*
.env
!.env.ci
!.env.dusk
!.env.example
.env*
.vagrant/*
.vscode/*
storage/framework/*

View file

@ -25,7 +25,7 @@ use Pterodactyl\Notifications\SendPasswordReset as ResetPasswordNotification;
* @property string|null $name_first
* @property string|null $name_last
* @property string $password
* @property string|null $remeber_token
* @property string|null $remember_token
* @property string $language
* @property bool $root_admin
* @property bool $use_totp
@ -36,6 +36,7 @@ use Pterodactyl\Notifications\SendPasswordReset as ResetPasswordNotification;
* @property \Carbon\Carbon $updated_at
*
* @property string $name
* @property \Pterodactyl\Models\AdminRole $adminRole
* @property \Pterodactyl\Models\ApiKey[]|\Illuminate\Database\Eloquent\Collection $apiKeys
* @property \Pterodactyl\Models\Server[]|\Illuminate\Database\Eloquent\Collection $servers
* @property \Pterodactyl\Models\RecoveryToken[]|\Illuminate\Database\Eloquent\Collection $recoveryTokens
@ -172,7 +173,7 @@ class User extends Model implements
{
$object = (new Collection($this->toArray()))->except(['id', 'external_id'])->toArray();
$object['avatar_url'] = $this->avatarURL();
$object['role_name'] = $this->roleName();
$object['role_name'] = $this->adminRoleName();
return $object;
}
@ -222,9 +223,14 @@ class User extends Model implements
*
* @return string|null
*/
public function roleName():? string
public function adminRoleName():? string
{
return $this->root_admin ? 'Super Administrator' : null;
$role = $this->adminRole;
if (is_null($role)) {
return $this->root_admin ? 'None' : null;
}
return $role->name;
}
/**

View file

@ -44,7 +44,7 @@ class UserTransformer extends BaseTransformer
'root_admin' => (bool) $model->root_admin,
'2fa' => (bool) $model->use_totp,
'avatar_url' => $model->avatarURL(),
'role_name' => $model->roleName(),
'role_name' => $model->adminRoleName(),
'created_at' => $this->formatTimestamp($model->created_at),
'updated_at' => $this->formatTimestamp($model->updated_at),
];

View file

@ -14,7 +14,7 @@ class CreateAdminRolesTable extends Migration
public function up()
{
Schema::create('admin_roles', function (Blueprint $table) {
$table->integer('id')->unsigned();
$table->increments('id');
$table->string('name', 64);
$table->string('description', 255)->nullable();
$table->integer('sort_id');

View file

@ -29,7 +29,6 @@ class AddAdminRoleIdColumnToUsersTable extends Migration
{
Schema::table('users', function (Blueprint $table) {
$table->dropForeign(['admin_role_id']);
$table->dropIndex('admin_role_id');
$table->dropColumn('admin_role_id');
});
}