refactor: ConnectionToken 修改表字段名称 account -> account_username

pull/8997/head
Jiangjie.Bai 2022-10-28 15:01:17 +08:00
parent bd9afaba1e
commit 2b5b4ad605
2 changed files with 17 additions and 26 deletions

View File

@ -16,9 +16,9 @@ def migrate_system_user_to_account(apps, schema_editor):
count += len(connection_tokens) count += len(connection_tokens)
updated = [] updated = []
for connection_token in connection_tokens: for connection_token in connection_tokens:
connection_token.account = connection_token.system_user.username connection_token.account_username = connection_token.system_user.username
updated.append(connection_token) updated.append(connection_token)
connection_token_model.objects.bulk_update(updated, ['account']) connection_token_model.objects.bulk_update(updated, ['account_username'])
class Migration(migrations.Migration): class Migration(migrations.Migration):
@ -42,7 +42,7 @@ class Migration(migrations.Migration):
), ),
migrations.AddField( migrations.AddField(
model_name='connectiontoken', model_name='connectiontoken',
name='account', name='account_username',
field=models.CharField(default='', max_length=128, verbose_name='Account'), field=models.CharField(default='', max_length=128, verbose_name='Account'),
), ),
migrations.RunPython(migrate_system_user_to_account), migrations.RunPython(migrate_system_user_to_account),

View File

@ -25,12 +25,12 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
'assets.Asset', on_delete=models.SET_NULL, null=True, blank=True, 'assets.Asset', on_delete=models.SET_NULL, null=True, blank=True,
related_name='connection_tokens', verbose_name=_('Asset'), related_name='connection_tokens', verbose_name=_('Asset'),
) )
user_display = models.CharField(max_length=128, default='', verbose_name=_("User display"))
asset_display = models.CharField(max_length=128, default='', verbose_name=_("Asset display"))
account = models.CharField(max_length=128, default='', verbose_name=_("Account"))
protocol = models.CharField( protocol = models.CharField(
choices=Protocol.choices, max_length=16, default=Protocol.ssh, verbose_name=_("Protocol") choices=Protocol.choices, max_length=16, default=Protocol.ssh, verbose_name=_("Protocol")
) )
user_display = models.CharField(max_length=128, default='', verbose_name=_("User display"))
asset_display = models.CharField(max_length=128, default='', verbose_name=_("Asset display"))
account_username = models.CharField(max_length=128, default='', verbose_name=_("Account"))
secret = models.CharField(max_length=64, default='', verbose_name=_("Secret")) secret = models.CharField(max_length=64, default='', verbose_name=_("Secret"))
date_expired = models.DateTimeField( date_expired = models.DateTimeField(
default=date_expired_default, verbose_name=_("Date expired") default=date_expired_default, verbose_name=_("Date expired")
@ -43,6 +43,10 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
('view_connectiontokensecret', _('Can view connection token secret')) ('view_connectiontokensecret', _('Can view connection token secret'))
] ]
@property
def is_valid(self):
return not self.is_expired
@property @property
def is_expired(self): def is_expired(self):
return self.date_expired < timezone.now() return self.date_expired < timezone.now()
@ -55,10 +59,6 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
seconds = 0 seconds = 0
return int(seconds) return int(seconds)
@property
def is_valid(self):
return not self.is_expired
@classmethod @classmethod
def get_default_date_expired(cls): def get_default_date_expired(cls):
return date_expired_default() return date_expired_default()
@ -81,30 +81,21 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
is_valid = False is_valid = False
error = _('Connection token expired at: {}').format(as_current_tz(self.date_expired)) error = _('Connection token expired at: {}').format(as_current_tz(self.date_expired))
return is_valid, error return is_valid, error
if not self.user: if not self.user or not self.user.is_valid:
is_valid = False is_valid = False
error = _('User not exists') error = _('No user or invalid user')
return is_valid, error return is_valid, error
if not self.user.is_valid: if not self.asset or self.asset.is_active:
is_valid = False is_valid = False
error = _('User invalid, disabled or expired') error = _('No asset or inactive asset')
return is_valid, error
if not self.asset:
is_valid = False
error = _('Asset not exists')
return is_valid, error
if not self.asset.is_active:
is_valid = False
error = _('Asset inactive')
return is_valid, error return is_valid, error
if not self.account: if not self.account:
is_valid = False is_valid = False
error = _('Account not exists') error = _('No account')
return is_valid, error return is_valid, error
actions, expire_at = PermAccountUtil().validate_permission( account_util = PermAccountUtil()
self.user, self.asset, self.account actions, expire_at = account_util.validate_permission(self.user, self.asset, self.account)
)
if not actions or expire_at < time.time(): if not actions or expire_at < time.time():
is_valid = False is_valid = False
error = _('User has no permission to access asset or permission expired') error = _('User has no permission to access asset or permission expired')