mirror of https://github.com/jumpserver/jumpserver
[Bug&Update] 以下bug和功能
- 修复新建资产不选管理用户和集群异常bug - profile下拉增加icon - 授权api增加os和platformpull/915/head
parent
c0829194dc
commit
450a9495ec
|
@ -36,7 +36,7 @@ class AssetCreateForm(forms.ModelForm):
|
||||||
def clean_admin_user(self):
|
def clean_admin_user(self):
|
||||||
cluster = self.cleaned_data.get('cluster')
|
cluster = self.cleaned_data.get('cluster')
|
||||||
admin_user = self.cleaned_data.get('admin_user')
|
admin_user = self.cleaned_data.get('admin_user')
|
||||||
if not cluster.admin_user and not admin_user:
|
if not admin_user and (cluster and not cluster.admin_user):
|
||||||
raise forms.ValidationError(_("You need set a admin user if cluster not have"))
|
raise forms.ValidationError(_("You need set a admin user if cluster not have"))
|
||||||
return self.cleaned_data['admin_user']
|
return self.cleaned_data['admin_user']
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ class AssetUpdateForm(forms.ModelForm):
|
||||||
def clean_admin_user(self):
|
def clean_admin_user(self):
|
||||||
cluster = self.cleaned_data.get('cluster')
|
cluster = self.cleaned_data.get('cluster')
|
||||||
admin_user = self.cleaned_data.get('admin_user')
|
admin_user = self.cleaned_data.get('admin_user')
|
||||||
if not cluster.admin_user and not admin_user:
|
if not admin_user and (cluster and not cluster.admin_user):
|
||||||
raise forms.ValidationError(_("You need set a admin user if cluster not have"))
|
raise forms.ValidationError(_("You need set a admin user if cluster not have"))
|
||||||
return self.cleaned_data['admin_user']
|
return self.cleaned_data['admin_user']
|
||||||
|
|
||||||
|
|
|
@ -192,7 +192,7 @@ class AssetGrantedSerializer(serializers.ModelSerializer):
|
||||||
class Meta(object):
|
class Meta(object):
|
||||||
model = Asset
|
model = Asset
|
||||||
fields = ("id", "hostname", "ip", "port", "system_users_granted",
|
fields = ("id", "hostname", "ip", "port", "system_users_granted",
|
||||||
"is_inherited", "is_active", "system_users_join",
|
"is_inherited", "is_active", "system_users_join", "os",
|
||||||
"platform", "comment",)
|
"platform", "comment",)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
@ -7,9 +7,7 @@ from .. import api
|
||||||
app_name = 'perms'
|
app_name = 'perms'
|
||||||
|
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register('v1/asset-permissions',
|
router.register('v1/asset-permissions', api.AssetPermissionViewSet, 'asset-permission')
|
||||||
api.AssetPermissionViewSet,
|
|
||||||
'asset-permission')
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# 用户可以使用自己的Token或其它认证查看自己授权的资产,资产组等
|
# 用户可以使用自己的Token或其它认证查看自己授权的资产,资产组等
|
||||||
|
|
|
@ -30,17 +30,16 @@
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu animated fadeInRight m-t-xs">
|
<ul class="dropdown-menu animated fadeInRight m-t-xs">
|
||||||
<li><a href="{% url 'users:user-profile' %}">{% trans 'Profile' %}</a></li>
|
<li><a href="{% url 'users:user-profile' %}"><i class="fa fa-cogs"> </i><span> {% trans 'Profile' %}</span></a></li>
|
||||||
<li><a href="{% url 'users:user-profile-update' %}">{% trans 'Profile settings' %}</a></li>
|
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
{% if request.user.is_superuser %}
|
{% if request.user.is_superuser %}
|
||||||
{% if request.COOKIES.IN_ADMIN_PAGE == 'No' %}
|
{% if request.COOKIES.IN_ADMIN_PAGE == 'No' %}
|
||||||
<li><a id="switch_admin">{% trans 'Admin page' %}</a></li>
|
<li><a id="switch_admin"><i class="fa fa-exchange"></i><span> {% trans 'Admin page' %}</span></a></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li><a id="switch_user">{% trans 'User page' %}</a></li>
|
<li><a id="switch_user"><i class="fa fa-exchange"></i><span> {% trans 'User page' %}</span></a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li><a href="{% url 'users:logout' %}">{% trans 'Logout' %}</a></li>
|
<li><a href="{% url 'users:logout' %}"><i class="fa fa-sign-out"></i> {% trans 'Logout' %}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{% url 'users:login' %}">
|
<a href="{% url 'users:login' %}">
|
||||||
|
|
|
@ -30,7 +30,7 @@ $(document).ready(function () {
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
delCookie(cookieName);
|
delCookie(cookieName);
|
||||||
setCookie(cookieName, "No");
|
setCookie(cookieName, "No");
|
||||||
window.location = "/"
|
window.location = "{% url 'assets:user-asset-list' %}"
|
||||||
}, 100);
|
}, 100);
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -168,6 +168,11 @@ class User(AbstractUser):
|
||||||
token = PrivateToken.objects.create(user=self)
|
token = PrivateToken.objects.create(user=self)
|
||||||
return token.key
|
return token.key
|
||||||
|
|
||||||
|
def create_access_key(self):
|
||||||
|
from . import AccessKey
|
||||||
|
access_key = AccessKey.objects.create(user=self)
|
||||||
|
return access_key
|
||||||
|
|
||||||
def refresh_private_token(self):
|
def refresh_private_token(self):
|
||||||
from .authentication import PrivateToken
|
from .authentication import PrivateToken
|
||||||
PrivateToken.objects.filter(user=self).delete()
|
PrivateToken.objects.filter(user=self).delete()
|
||||||
|
@ -214,13 +219,12 @@ class User(AbstractUser):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_app_user(cls, name, comment):
|
def create_app_user(cls, name, comment):
|
||||||
from . import AccessKey
|
|
||||||
app = cls.objects.create(
|
app = cls.objects.create(
|
||||||
username=name, name=name, email='{}@local.domain'.format(name),
|
username=name, name=name, email='{}@local.domain'.format(name),
|
||||||
is_active=False, role='App', enable_otp=False, comment=comment,
|
is_active=False, role='App', enable_otp=False, comment=comment,
|
||||||
is_first_login=False, created_by='System'
|
is_first_login=False, created_by='System'
|
||||||
)
|
)
|
||||||
access_key = AccessKey.objects.create(user=app)
|
access_key = app.create_access_key()
|
||||||
return app, access_key
|
return app, access_key
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
Loading…
Reference in New Issue