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