mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-04-27 19:17:01 +00:00
perf: update ad
This commit is contained in:
parent
76e57b9a3e
commit
4cc1687bf8
@ -146,27 +146,21 @@ class Account(AbsConnectivity, LabeledMixin, BaseAccount, JSONFilterMixin):
|
||||
return False
|
||||
|
||||
@lazyproperty
|
||||
def ds_id(self):
|
||||
if self.is_ds_account():
|
||||
return self.asset.ds.id
|
||||
return None
|
||||
def ds(self):
|
||||
if not self.is_ds_account():
|
||||
return None
|
||||
if not hasattr(self.asset, 'ds'):
|
||||
return None
|
||||
return self.asset.ds
|
||||
|
||||
@lazyproperty
|
||||
def ds_domain(self):
|
||||
if self.ds_id:
|
||||
return self.asset.ds.domain_name
|
||||
return None
|
||||
"""这个不能去掉,perm_account 会动态设置这个值,以更改 full_username"""
|
||||
if self.ds and self.ds.domain_name:
|
||||
return self.ds.domain_name
|
||||
return ''
|
||||
|
||||
@lazyproperty
|
||||
def ds(self):
|
||||
if not self.is_ds_account():
|
||||
return {}
|
||||
return {
|
||||
'id': self.ds_id,
|
||||
'domain': self.ds_domain,
|
||||
}
|
||||
|
||||
@lazyproperty
|
||||
@property
|
||||
def full_username(self):
|
||||
if self.ds_domain:
|
||||
return '{}@{}'.format(self.username, self.ds_domain)
|
||||
|
@ -233,6 +233,7 @@ class AccountSerializer(AccountCreateUpdateSerializerMixin, BaseAccountSerialize
|
||||
required=False, queryset=Account.objects, allow_null=True, allow_empty=True,
|
||||
label=_('Su from'), attrs=('id', 'name', 'username')
|
||||
)
|
||||
ds = ObjectRelatedField(read_only=True, label=_('Directory service'), attrs=('id', 'name', 'domain_name'))
|
||||
|
||||
class Meta(BaseAccountSerializer.Meta):
|
||||
model = Account
|
||||
@ -241,7 +242,7 @@ class AccountSerializer(AccountCreateUpdateSerializerMixin, BaseAccountSerialize
|
||||
'date_change_secret', 'change_secret_status'
|
||||
]
|
||||
fields = BaseAccountSerializer.Meta.fields + [
|
||||
'su_from', 'asset', 'version', 'ds_domain', 'ds_id',
|
||||
'su_from', 'asset', 'version', 'ds',
|
||||
'source', 'source_id', 'secret_reset',
|
||||
] + AccountCreateUpdateSerializerMixin.Meta.fields + automation_fields
|
||||
read_only_fields = BaseAccountSerializer.Meta.read_only_fields + automation_fields
|
||||
|
@ -255,6 +255,16 @@ class ConnectionToken(JMSOrgBaseModel):
|
||||
cache.delete(lock_key)
|
||||
return True
|
||||
|
||||
def set_ad_domain_if_need(self, account):
|
||||
rdp = self.asset.platform.protocols.filter(name='rdp').first()
|
||||
if not rdp or not rdp.setting:
|
||||
return
|
||||
|
||||
ad_domain = rdp.setting.get('ad_domain')
|
||||
if ad_domain:
|
||||
# serializer account username 用的是 full_username 所以这么设置
|
||||
account.ds_domain = ad_domain
|
||||
|
||||
@lazyproperty
|
||||
def account_object(self):
|
||||
if not self.asset:
|
||||
@ -269,6 +279,9 @@ class ConnectionToken(JMSOrgBaseModel):
|
||||
account = self.asset.all_valid_accounts.filter(id=self.account).first()
|
||||
if not account.secret and self.input_secret:
|
||||
account.secret = self.input_secret
|
||||
|
||||
if self.protocol == 'rdp':
|
||||
self.set_ad_domain_if_need(account)
|
||||
return account
|
||||
|
||||
@lazyproperty
|
||||
|
Loading…
Reference in New Issue
Block a user