Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
8a5e494c
Commit
8a5e494c
authored
Feb 09, 2015
by
guanghongwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加sudo权限删除,修改和详情
parent
d7de3edc
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
407 additions
and
105 deletions
+407
-105
models.py
jperm/models.py
+1
-0
urls.py
jperm/urls.py
+3
-0
views.py
jperm/views.py
+106
-12
sudo_detail.html
templates/jperm/sudo_detail.html
+39
-0
sudo_edit.html
templates/jperm/sudo_edit.html
+185
-0
sudo_list.html
templates/jperm/sudo_list.html
+73
-93
No files found.
jperm/models.py
View file @
8a5e494c
...
...
@@ -19,6 +19,7 @@ class CmdGroup(models.Model):
class
SudoPerm
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
20
)
user_runas
=
models
.
CharField
(
max_length
=
100
)
user_group
=
models
.
ManyToManyField
(
UserGroup
)
asset_group
=
models
.
ManyToManyField
(
BisGroup
)
cmd_group
=
models
.
ManyToManyField
(
CmdGroup
)
...
...
jperm/urls.py
View file @
8a5e494c
...
...
@@ -14,6 +14,9 @@ urlpatterns = patterns('jperm.views',
(
r'^perm_asset_detail/$'
,
'perm_asset_detail'
),
(
r'^sudo_list/$'
,
'sudo_list'
),
(
r'^sudo_add/$'
,
'sudo_add'
),
(
r'^sudo_del/$'
,
'sudo_del'
),
(
r'^sudo_edit/$'
,
'sudo_edit'
),
(
r'^sudo_detail/$'
,
'sudo_detail'
),
(
r'^cmd_add/$'
,
'cmd_add'
),
(
r'^cmd_list/$'
,
'cmd_list'
),
)
jperm/views.py
View file @
8a5e494c
...
...
@@ -163,28 +163,41 @@ def user_asset_cmd_groups_get(user_groups_select, asset_groups_select, cmd_group
return
user_groups_select_list
,
asset_groups_select_list
,
cmd_groups_select_list
def
sudo_db_add
(
user_groups_select
,
asset_groups_select
,
cmd_groups_select
,
comment
):
def
sudo_db_add
(
name
,
user_runas
,
user_groups_select
,
asset_groups_select
,
cmd_groups_select
,
comment
):
user_groups_select_list
,
asset_groups_select_list
,
cmd_groups_select_list
=
\
user_asset_cmd_groups_get
(
user_groups_select
,
asset_groups_select
,
cmd_groups_select
)
sudo_perm
=
SudoPerm
(
comment
=
comment
)
sudo_perm
=
SudoPerm
(
name
=
name
,
user_runas
=
user_runas
,
comment
=
comment
)
sudo_perm
.
save
()
sudo_perm
.
user_group
=
user_groups_select_list
sudo_perm
.
asset_group
=
asset_groups_select_list
sudo_perm
.
cmd_group
=
cmd_groups_select_list
def
sudo_db_update
(
sudo_perm_id
,
name
,
user_runas
,
user_groups_select
,
asset_groups_select
,
cmd_groups_select
,
comment
):
user_groups_select_list
,
asset_groups_select_list
,
cmd_groups_select_list
=
\
user_asset_cmd_groups_get
(
user_groups_select
,
asset_groups_select
,
cmd_groups_select
)
sudo_perm
=
SudoPerm
.
objects
.
filter
(
id
=
sudo_perm_id
)
if
sudo_perm
:
sudo_perm
.
update
(
name
=
name
,
user_runas
=
user_runas
,
comment
=
comment
)
sudo_perm
=
sudo_perm
[
0
]
sudo_perm
.
user_group
=
user_groups_select_list
sudo_perm
.
asset_group
=
asset_groups_select_list
sudo_perm
.
cmd_group
=
cmd_groups_select_list
def
unicode2str
(
unicode_list
):
return
[
str
(
i
)
for
i
in
unicode_list
]
def
sudo_ldap_add
(
name
,
users_runas
,
user_groups_select
,
asset_groups_select
,
cmd_groups_select
):
def
sudo_ldap_add
(
name
,
users_runas
,
user_groups_select
,
asset_groups_select
,
cmd_groups_select
,
update
=
False
):
user_groups_select_list
,
asset_groups_select_list
,
cmd_groups_select_list
=
\
user_asset_cmd_groups_get
(
user_groups_select
,
asset_groups_select
,
cmd_groups_select
)
users
=
[]
assets
=
[]
cmds
=
[]
users_runas
=
users_runas
.
split
(
','
)
for
user_group
in
user_groups_select_list
:
users
.
extend
(
user_group
.
user_set
.
all
())
...
...
@@ -195,7 +208,7 @@ def sudo_ldap_add(name, users_runas, user_groups_select, asset_groups_select, cm
for
cmd_group
in
cmd_groups_select_list
:
cmds
.
extend
(
cmd_group
.
cmd
.
split
(
','
))
users_name
=
[
user
.
name
for
user
in
users
]
users_name
=
[
user
.
user
name
for
user
in
users
]
assets_ip
=
[
asset
.
ip
for
asset
in
assets
]
sudo_dn
=
'cn=
%
s,ou=Sudoers,
%
s'
%
(
name
,
LDAP_BASE_DN
)
...
...
@@ -207,6 +220,9 @@ def sudo_ldap_add(name, users_runas, user_groups_select, asset_groups_select, cm
'sudoRunAsUser'
:
unicode2str
(
users_runas
),
'sudoUser'
:
unicode2str
(
users_name
)}
if
update
:
ldap_conn
.
delete
(
sudo_dn
)
ldap_conn
.
add
(
sudo_dn
,
sudo_attr
)
...
...
@@ -218,13 +234,13 @@ def sudo_add(request):
if
request
.
method
==
'POST'
:
name
=
request
.
POST
.
get
(
'name'
)
users_runas
=
request
.
POST
.
get
(
'runas'
,
'root'
)
.
split
(
','
)
users_runas
=
request
.
POST
.
get
(
'runas'
,
'root'
)
user_groups_select
=
request
.
POST
.
getlist
(
'user_groups_select'
)
asset_groups_select
=
request
.
POST
.
getlist
(
'asset_groups_select'
)
cmd_groups_select
=
request
.
POST
.
getlist
(
'cmd_groups_select'
)
comment
=
request
.
POST
.
get
(
'comment'
,
''
)
sudo_db_add
(
user_groups_select
,
asset_groups_select
,
cmd_groups_select
,
comment
)
sudo_db_add
(
name
,
users_runas
,
user_groups_select
,
asset_groups_select
,
cmd_groups_select
,
comment
)
sudo_ldap_add
(
name
,
users_runas
,
user_groups_select
,
asset_groups_select
,
cmd_groups_select
)
msg
=
'添加成功'
...
...
@@ -233,23 +249,101 @@ def sudo_add(request):
def
sudo_list
(
request
):
header_title
,
path1
,
path2
=
u'Sudo授权 | Perm Sudo Detail.'
,
u'jperm'
,
u'sudo_list'
sudo_perms
=
contact_list
2
=
SudoPerm
.
objects
.
all
()
p
2
=
paginator2
=
Paginator
(
contact_list2
,
10
)
sudo_perms
=
contact_list
=
SudoPerm
.
objects
.
all
()
p
1
=
paginator1
=
Paginator
(
contact_list
,
10
)
user_groups
=
UserGroup
.
objects
.
filter
(
Q
(
type
=
'A'
)
|
Q
(
type
=
'P'
))
asset_groups
=
BisGroup
.
objects
.
all
()
cmd_groups
=
CmdGroup
.
objects
.
all
()
try
:
page
=
int
(
request
.
GET
.
get
(
'page'
,
'1'
))
page
1
=
int
(
request
.
GET
.
get
(
'page'
,
'1'
))
except
ValueError
:
page
=
1
page
1
=
1
try
:
contacts
2
=
paginator2
.
page
(
page
)
contacts
1
=
paginator1
.
page
(
page1
)
except
(
EmptyPage
,
InvalidPage
):
contacts
2
=
paginator2
.
page
(
paginator2
.
num_pages
)
contacts
1
=
paginator1
.
page
(
paginator1
.
num_pages
)
return
render_to_response
(
'jperm/sudo_list.html'
,
locals
())
def
sudo_edit
(
request
):
header_title
,
path1
,
path2
=
u'Sudo授权 | Perm Sudo Detail.'
,
u'jperm'
,
u'sudo_list'
if
request
.
method
==
'GET'
:
sudo_perm_id
=
request
.
GET
.
get
(
'id'
,
'0'
)
sudo_perm
=
SudoPerm
.
objects
.
filter
(
id
=
int
(
sudo_perm_id
))
if
sudo_perm
:
user_group_all
=
UserGroup
.
objects
.
filter
(
Q
(
type
=
'A'
)
|
Q
(
type
=
'P'
))
asset_group_all
=
BisGroup
.
objects
.
filter
()
cmd_group_all
=
CmdGroup
.
objects
.
all
()
sudo_perm
=
sudo_perm
[
0
]
user_group_permed
=
sudo_perm
.
user_group
.
all
()
asset_group_permed
=
sudo_perm
.
asset_group
.
all
()
cmd_group_permed
=
sudo_perm
.
cmd_group
.
all
()
user_groups
=
[
user_group
for
user_group
in
user_group_all
if
user_group
not
in
user_group_permed
]
asset_groups
=
[
asset_group
for
asset_group
in
asset_group_all
if
asset_group
not
in
asset_group_permed
]
cmd_groups
=
[
cmd_group
for
cmd_group
in
cmd_group_all
if
cmd_group
not
in
cmd_group_permed
]
name
=
sudo_perm
.
name
user_runas
=
sudo_perm
.
user_runas
comment
=
sudo_perm
.
comment
else
:
sudo_perm_id
=
request
.
POST
.
get
(
'sudo_perm_id'
)
name
=
request
.
POST
.
get
(
'name'
)
users_runas
=
request
.
POST
.
get
(
'runas'
,
'root'
)
user_groups_select
=
request
.
POST
.
getlist
(
'user_groups_select'
)
asset_groups_select
=
request
.
POST
.
getlist
(
'asset_groups_select'
)
cmd_groups_select
=
request
.
POST
.
getlist
(
'cmd_groups_select'
)
comment
=
request
.
POST
.
get
(
'comment'
,
''
)
sudo_db_update
(
sudo_perm_id
,
name
,
users_runas
,
user_groups_select
,
asset_groups_select
,
cmd_groups_select
,
comment
)
sudo_ldap_add
(
name
,
users_runas
,
user_groups_select
,
asset_groups_select
,
cmd_groups_select
,
update
=
True
)
msg
=
'修改成功'
return
HttpResponseRedirect
(
'/jperm/sudo_list/'
)
return
render_to_response
(
'jperm/sudo_edit.html'
,
locals
())
def
sudo_detail
(
request
):
sudo_perm_id
=
request
.
GET
.
get
(
'id'
)
sudo_perm
=
SudoPerm
.
objects
.
filter
(
id
=
sudo_perm_id
)
if
sudo_perm
:
sudo_perm
=
sudo_perm
[
0
]
user_groups
=
sudo_perm
.
user_group
.
all
()
asset_groups
=
sudo_perm
.
asset_group
.
all
()
cmd_groups
=
sudo_perm
.
cmd_group
.
all
()
users_list
=
[]
assets_list
=
[]
cmds_list
=
[]
for
user_group
in
user_groups
:
users_list
.
extend
(
user_group
.
user_set
.
all
())
for
asset_group
in
asset_groups
:
assets_list
.
extend
(
asset_group
.
asset_set
.
all
())
for
cmd_group
in
cmd_groups
:
cmds_list
.
extend
(
cmd_group
.
cmd
.
split
(
','
))
return
render_to_response
(
'jperm/sudo_detail.html'
,
locals
())
def
sudo_del
(
request
):
sudo_perm_id
=
request
.
GET
.
get
(
'id'
,
'0'
)
sudo_perm
=
SudoPerm
.
objects
.
filter
(
id
=
int
(
sudo_perm_id
))
if
sudo_perm
:
name
=
sudo_perm
[
0
]
.
name
sudo_perm
.
delete
()
sudo_dn
=
'cn=
%
s,ou=Sudoers,
%
s'
%
(
name
,
LDAP_BASE_DN
)
ldap_conn
.
delete
(
sudo_dn
)
return
HttpResponseRedirect
(
'/jperm/sudo_list/'
)
def
cmd_add
(
request
):
header_title
,
path1
,
path2
=
u'sudo命令添加 | Sudo Cmd Add.'
,
u'jperm'
,
u'sudo_cmd_add'
...
...
templates/jperm/sudo_detail.html
0 → 100644
View file @
8a5e494c
{% extends 'base.html' %}
{% load mytags %}
{% block content %}
{% include 'nav_cat_bar.html' %}
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
<div
class=
"row"
>
<div
class=
"col-lg-10"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<h5>
详情 {{ user.name }}
<small>
Add perm info.
</small></h5>
<div
class=
"ibox-tools"
>
<a
class=
"collapse-link"
>
<i
class=
"fa fa-chevron-up"
></i>
</a>
<a
class=
"dropdown-toggle"
data-toggle=
"dropdown"
href=
"#"
>
<i
class=
"fa fa-wrench"
></i>
</a>
<ul
class=
"dropdown-menu dropdown-user"
>
<li><a
href=
"#"
>
未启用 1
</a>
</li>
<li><a
href=
"#"
>
未启用 2
</a>
</li>
</ul>
<a
class=
"close-link"
>
<i
class=
"fa fa-times"
></i>
</a>
</div>
</div>
<div
class=
"ibox-content"
>
{{ }}
</div>
</div>
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
templates/jperm/sudo_edit.html
0 → 100644
View file @
8a5e494c
{% extends 'base.html' %}
{% load mytags %}
{% block content %}
{% include 'nav_cat_bar.html' %}
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
<div
class=
"row"
>
<div
class=
"col-lg-10"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<h5>
Sudo授权
<small>
show sudo perm info.
</small>
</h5>
<div
class=
"ibox-tools"
>
<a
class=
"collapse-link"
>
<i
class=
"fa fa-chevron-up"
></i>
</a>
<a
class=
"dropdown-toggle"
data-toggle=
"dropdown"
href=
"#"
>
<i
class=
"fa fa-wrench"
></i>
</a>
<ul
class=
"dropdown-menu dropdown-user"
>
<li><a
href=
"#"
>
未启用 1
</a>
</li>
<li><a
href=
"#"
>
未启用 2
</a>
</li>
</ul>
<a
class=
"close-link"
>
<i
class=
"fa fa-times"
></i>
</a>
</div>
</div>
<div
class=
"ibox-content"
>
<form
id=
"sudoPerm"
method=
"post"
class=
"form-horizontal"
action=
""
>
{% if error %}
<div
class=
"alert alert-warning text-center"
>
{{ error }}
</div>
{% endif %}
{% if msg %}
<div
class=
"alert alert-success text-center"
>
{{ msg }}
</div>
{% endif %}
<div
class=
"row"
>
<div
class=
"form-group"
>
<label
for=
"name"
class=
"col-sm-2 control-label"
>
授权名
</label>
<div
class=
"col-sm-8"
>
<input
id=
"name"
name=
"name"
placeholder=
"OnlyForEnglish"
type=
"text"
class=
"form-control"
value=
"{{ name }}"
>
<input
id=
"sudo_perm_id"
name=
"sudo_perm_id"
type=
"text"
class=
"form-control"
value=
"{{ sudo_perm_id }}"
>
<span
class=
"help-block m-b-none"
>
取个名字方便辨识,只支持英文
</span>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
"runas"
class=
"col-sm-2 control-label"
>
RunAsUser
</label>
<div
class=
"col-sm-8"
>
<input
id=
"runas"
name=
"runas"
placeholder=
"RunAsUser"
type=
"text"
class=
"form-control"
value=
"{{ user_runas }}"
>
<span
class=
"help-block m-b-none"
>
允许以哪个用户允许sudo,逗号分隔,默认root
</span>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
""
class=
"col-sm-2 control-label"
>
用户组
</label>
<div
class=
"col-sm-4"
>
<div>
<select
id=
"user_groups"
name=
"user_groups"
class=
"form-control"
size=
"5"
multiple
>
{% for user_group in user_groups %}
<option
value=
"{{ user_group.id }}"
>
{{ user_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
<div
class=
"col-sm-1"
>
<div
class=
"btn-group"
style=
"margin-top: 12px;"
>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('user_groups', 'user_groups_select')"
><i
class=
"fa fa-chevron-right"
></i></button>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('user_groups_select', 'user_groups')"
><i
class=
"fa fa-chevron-left"
></i>
</button>
</div>
</div>
<div
class=
"col-sm-3"
>
<div>
<select
id=
"user_groups_select"
name=
"user_groups_select"
class=
"form-control m-b"
size=
"5"
multiple
>
{% for user_group in user_group_permed %}
<option
value=
"{{ user_group.id }}"
>
{{ user_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
""
class=
"col-sm-2 control-label"
>
主机组
</label>
<div
class=
"col-sm-4"
>
<div>
<select
id=
"asset_groups"
name=
"asset_groups"
class=
"form-control m-b"
size=
"5"
multiple
>
{% for asset_group in asset_groups %}
<option
value=
"{{ asset_group.id }}"
>
{{ asset_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
<div
class=
"col-sm-1"
>
<div
class=
"btn-group"
style=
"margin-top: 12px;"
>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('asset_groups', 'asset_groups_select')"
><i
class=
"fa fa-chevron-right"
></i></button>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('asset_groups_select', 'asset_groups')"
><i
class=
"fa fa-chevron-left"
></i>
</button>
</div>
</div>
<div
class=
"col-sm-3"
>
<div>
<select
id=
"asset_groups_select"
name=
"asset_groups_select"
class=
"form-control m-b"
size=
"5"
multiple
>
{% for asset_group in asset_group_permed %}
<option
value=
"{{ asset_group.id }}"
>
{{ asset_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
""
class=
"col-sm-2 control-label"
>
命令组
</label>
<div
class=
"col-sm-4"
>
<div>
<select
id=
"cmd_groups"
name=
"cmd_groups"
class=
"form-control m-b"
size=
"5"
multiple
>
{% for cmd_group in cmd_groups %}
<option
value=
"{{ cmd_group.id }}"
>
{{ cmd_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
<div
class=
"col-sm-1"
>
<div
class=
"btn-group"
style=
"margin-top: 12px;"
>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('cmd_groups', 'cmd_groups_select')"
><i
class=
"fa fa-chevron-right"
></i></button>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('cmd_groups_select', 'cmd_groups')"
><i
class=
"fa fa-chevron-left"
></i>
</button>
</div>
</div>
<div
class=
"col-sm-3"
>
<div>
<select
id=
"cmd_groups_select"
name=
"cmd_groups_select"
class=
"form-control m-b"
size=
"5"
multiple
>
{% for cmd_group in cmd_group_permed %}
<option
value=
"{{ cmd_group.id }}"
>
{{ cmd_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
"group_name"
class=
"col-sm-2 control-label"
>
备注
</label>
<div
class=
"col-sm-8"
>
<input
id=
"comment"
name=
"comment"
placeholder=
"备注说明"
type=
"text"
class=
"form-control"
value=
"{{ comment }}"
>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
</div>
<div
class=
"row"
>
<div
class=
"form-group"
>
<div
class=
"col-sm-4 col-sm-offset-2"
>
<button
class=
"btn btn-white"
type=
"reset"
>
取消
</button>
<button
class=
"btn btn-primary"
type=
"submit"
onclick=
"javascript: (function(){$('#sudoPerm option').each(function(){$(this).prop('selected', true)})})()"
>
确认保存
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
templates/jperm/sudo_list.html
View file @
8a5e494c
...
...
@@ -60,106 +60,86 @@
<div
class=
"tab-content"
>
<div
id=
"tab-1"
class=
"tab-pane active"
>
<form
id=
"sudoPerm"
method=
"post"
class=
"form-horizontal"
action=
""
>
{% if error %}
<div
class=
"alert alert-warning text-center"
>
{{ error }}
</div>
{% endif %}
{% if msg %}
<div
class=
"alert alert-success text-center"
>
{{ msg }}
</div>
{% endif %}
<div
class=
"row"
>
<div
class=
"col-sm-5"
><h4>
用户组
</h4>
<div>
<select
id=
"user_groups"
name=
"user_groups"
class=
"form-control"
size=
"5"
multiple
>
{% for user_group in user_groups %}
<option
value=
"{{ user_group.id }}"
>
{{ user_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
<div
class=
"col-sm-1"
>
<div
class=
"btn-group"
style=
"margin-top: 50px;"
>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('user_groups', 'user_groups_select')"
><i
class=
"fa fa-chevron-right"
></i></button>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('user_groups_select', 'user_groups')"
><i
class=
"fa fa-chevron-left"
></i>
</button>
</div>
</div>
<div
class=
"col-sm-5"
><h4>
授权用户组
</h4>
<div>
<select
id=
"user_groups_select"
name=
"user_groups_select"
class=
"form-control m-b"
size=
"5"
multiple
>
</select>
</div>
</div>
</div>
<table
class=
"table table-striped table-bordered table-hover "
id=
"editable"
>
<thead>
<tr>
<th
class=
"text-center"
>
授权名
</th>
<th
class=
"text-center"
>
user_runas
</th>
<th
class=
"text-center"
>
用户组
</th>
<th
class=
"text-center"
>
主机组
</th>
<th
class=
"text-center"
>
命令组
</th>
<th
class=
"text-center"
>
备注
</th>
</tr>
</thead>
<tbody
id=
"perm_list"
>
{% for sudo_perm in contacts1.object_list %}
<tr
class=
"gradeX"
>
<td
class=
"text-center"
>
{{ sudo_perm.name }}
</td>
<td
class=
"text-center"
>
{{ sudo_perm.user_runas }}
</td>
<td
class=
"text-center"
>
{% for user_group in sudo_perm.user_group.all %}
{{ user_group.name }}
{% endfor %}
</td>
<div
class=
"hr-line-dashed"
></div>
<td
class=
"text-center"
>
{% for asset_group in sudo_perm.asset_group.all %}
{{ asset_group.name }}
{% endfor %}
</td>
<td
class=
"text-center"
>
{% for cmd_group in sudo_perm.cmd_group.all %}
{{ cmd_group.name }}
{% endfor %}
</td>
<td
class=
"text-center"
>
<a
title=
"[ {{ sudo_perm.name }} 授权详情 ]"
href=
"../sudo_detail/?id={{ sudo_perm.id }}"
class=
"iframe btn btn-xs btn-primary"
>
详情
</a>
<a
href=
"../sudo_edit/?id={{ sudo_perm.id }}"
class=
"btn btn-xs btn-info"
>
编辑
</a>
<a
href=
"../sudo_del/?id={{ sudo_perm.id }}"
class=
"btn btn-xs btn-danger"
>
删除
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div
class=
"row"
>
<div
class=
"col-sm-5"
><h4>
主机组
</h4>
<div>
<select
id=
"asset_groups"
name=
"asset_groups"
class=
"form-control m-b"
size=
"5"
multiple
>
{% for asset_group in asset_groups %}
<option
value=
"{{ asset_group.id }}"
>
{{ asset_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
<div
class=
"col-sm-1"
>
<div
class=
"btn-group"
style=
"margin-top: 50px;"
>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('asset_groups', 'asset_groups_select')"
><i
class=
"fa fa-chevron-right"
></i></button>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('asset_groups_select', 'asset_groups')"
><i
class=
"fa fa-chevron-left"
></i>
</button>
</div>
</div>
<div
class=
"col-sm-5"
><h4>
授权主机组
</h4>
<div>
<select
id=
"asset_groups_select"
name=
"asset_groups_select"
class=
"form-control m-b"
size=
"5"
multiple
>
</select>
</div>
<div
class=
"col-sm-6"
>
<div
class=
"dataTables_info"
id=
"editable_info"
role=
"status"
aria-live=
"polite"
>
Showing {{ contacts1.start_index }} to {{ contacts1.end_index }} of {{ p1.count }} entries
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"row"
>
<div
class=
"col-sm-5"
><h4>
命令组
</h4>
<div>
<select
id=
"cmd_groups"
name=
"cmd_groups"
class=
"form-control m-b"
size=
"5"
multiple
>
{% for cmd_group in cmd_groups %}
<option
value=
"{{ cmd_group.id }}"
>
{{ cmd_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
<div
class=
"col-sm-1"
>
<div
class=
"btn-group"
style=
"margin-top: 50px;"
>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('cmd_groups', 'cmd_groups_select')"
><i
class=
"fa fa-chevron-right"
></i></button>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('cmd_groups_select', 'cmd_groups')"
><i
class=
"fa fa-chevron-left"
></i>
</button>
</div>
</div>
<div
class=
"col-sm-5"
><h4>
命令组
</h4>
<div>
<select
id=
"cmd_groups_select"
name=
"cmd_groups_select"
class=
"form-control m-b"
size=
"5"
multiple
>
</select>
</div>
<div
class=
"col-sm-6"
>
<div
class=
"dataTables_paginate paging_simple_numbers"
id=
"editable_paginate"
>
<ul
class=
"pagination"
style=
"margin-top: 0; float: right"
>
{% if contacts1.has_previous %}
<li
class=
"paginate_button previous"
aria-controls=
"editable"
tabindex=
"0"
id=
"editable_previous"
>
<a
href=
"?page={{ contacts1.previous_page_number }}"
>
Previous
</a>
</li>
{% else %}
<li
class=
"paginate_button previous disabled"
aria-controls=
"editable"
tabindex=
"0"
id=
"editable_previous"
>
<a
href=
"#"
>
Previous
</a>
</li>
{% endif %}
{% for page in p1.page_range %}
{% ifequal offset1 page %}
<li
class=
"paginate_button active"
aria-controls=
"editable"
tabindex=
"0"
><a
href=
"?page={{ page }}"
title=
"第{{ page }}页"
>
{{ page }}
</a></li>
{% else %}
<li
class=
"paginate_button"
aria-controls=
"editable"
tabindex=
"0"
><a
href=
"?page={{ page }}"
title=
"第{{ page }}页"
>
{{ page }}
</a></li>
{% endifequal %}
{% endfor %}
{% if contacts1.has_next %}
<li
class=
"paginate_button next"
aria-controls=
"editable"
tabindex=
"0"
id=
"editable_next"
>
<a
href=
"?page={{ contacts1.next_page_number }}"
>
Next
</a>
</li>
{% else %}
<li
class=
"paginate_button next disabled"
aria-controls=
"editable"
tabindex=
"0"
id=
"editable_next"
>
<a
href=
"#"
>
Next
</a>
</li>
{% endif %}
</ul>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"row"
>
<div
class=
"form-group"
>
<div
class=
"col-sm-4 col-sm-offset-2"
>
<button
class=
"btn btn-white"
type=
"submit"
>
取消
</button>
<button
class=
"btn btn-primary"
type=
"submit"
onclick=
"javascript: (function(){$('#sudoPerm option').each(function(){$(this).prop('selected', true)})})()"
>
确认保存
</button>
</div>
</div>
</div>
</form>
</div>
...
...
@@ -179,7 +159,7 @@
<tr
class=
"gradeX"
>
<td
class=
"text-center"
>
{{ user.name }}
</td>
<td
class=
"text-center"
>
{{ user.id | get_role }}
</td>
<td
class=
"text-center"
>
{{ user.username
| groups_str
}}
</td>
<td
class=
"text-center"
>
{{ user.username }}
</td>
<td
class=
"text-center"
>
{{ user.id | perm_asset_count }}
</td>
<td
class=
"text-center"
>
<a
title=
"[ {{ user.name }} ] 授权详情"
href=
"../perm_asset_detail/?id={{ user.id }}"
class=
"iframe btn btn-xs btn-primary"
>
详情
</a>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment