mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-13 13:59:17 +00:00
perf: 修改 migrations, 修改 Connect token
This commit is contained in:
@@ -28,7 +28,7 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
|
||||
'assets.Asset', on_delete=models.SET_NULL, null=True, blank=True,
|
||||
related_name='connection_tokens', verbose_name=_('Asset'),
|
||||
)
|
||||
account_name = models.CharField(max_length=128, verbose_name=_("Account name")) # 登录账号Name
|
||||
account = models.CharField(max_length=128, verbose_name=_("Account name")) # 登录账号Name
|
||||
input_username = models.CharField(max_length=128, default='', blank=True, verbose_name=_("Input username"))
|
||||
input_secret = EncryptCharField(max_length=64, default='', blank=True, verbose_name=_("Input secret"))
|
||||
protocol = models.CharField(max_length=16, default=Protocol.ssh, verbose_name=_("Protocol"))
|
||||
@@ -74,7 +74,7 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
|
||||
def permed_account(self):
|
||||
from perms.utils import PermAccountUtil
|
||||
permed_account = PermAccountUtil().validate_permission(
|
||||
self.user, self.asset, self.account_name
|
||||
self.user, self.asset, self.account
|
||||
)
|
||||
return permed_account
|
||||
|
||||
@@ -86,6 +86,12 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
|
||||
def expire_at(self):
|
||||
return self.permed_account.date_expired.timestamp()
|
||||
|
||||
@lazyproperty
|
||||
def connect_method_object(self):
|
||||
from terminal.const import TerminalType
|
||||
method = TerminalType.get_connect_method(self.connect_method, protocol=self.protocol)
|
||||
return method
|
||||
|
||||
def is_valid(self):
|
||||
if self.is_expired:
|
||||
error = _('Connection token expired at: {}').format(as_current_tz(self.date_expired))
|
||||
@@ -97,13 +103,13 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
|
||||
is_valid = False
|
||||
error = _('No asset or inactive asset')
|
||||
return is_valid, error
|
||||
if not self.account_name:
|
||||
if not self.account:
|
||||
error = _('No account')
|
||||
raise PermissionDenied(error)
|
||||
|
||||
if not self.permed_account or not self.permed_account.actions:
|
||||
msg = 'user `{}` not has asset `{}` permission for login `{}`'.format(
|
||||
self.user, self.asset, self.account_name
|
||||
self.user, self.asset, self.account
|
||||
)
|
||||
raise PermissionDenied(msg)
|
||||
|
||||
@@ -116,15 +122,15 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel):
|
||||
return self.asset.platform
|
||||
|
||||
@lazyproperty
|
||||
def account(self):
|
||||
def account_object(self):
|
||||
from assets.models import Account
|
||||
if not self.asset:
|
||||
return None
|
||||
|
||||
account = self.asset.accounts.filter(name=self.account_name).first()
|
||||
if self.account_name == '@INPUT' or not account:
|
||||
account = self.asset.accounts.filter(name=self.account).first()
|
||||
if self.account == '@INPUT' or not account:
|
||||
data = {
|
||||
'name': self.account_name,
|
||||
'name': self.account,
|
||||
'username': self.input_username,
|
||||
'secret_type': 'password',
|
||||
'secret': self.input_secret,
|
||||
|
Reference in New Issue
Block a user