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
11f6939b
Commit
11f6939b
authored
Nov 17, 2015
by
yumaojun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. update role and update rule complete.
parent
9d36dc9e
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
83 additions
and
73 deletions
+83
-73
models.py
jperm/models.py
+3
-2
views.py
jperm/views.py
+66
-8
perm_role_edit.html
templates/jperm/perm_role_edit.html
+7
-0
perm_rule_add.html
templates/jperm/perm_rule_add.html
+1
-29
perm_rule_edit.html
templates/jperm/perm_rule_edit.html
+1
-29
perm_rule_list.html
templates/jperm/perm_rule_list.html
+5
-5
No files found.
jperm/models.py
View file @
11f6939b
...
@@ -32,14 +32,14 @@ class PermRole(models.Model):
...
@@ -32,14 +32,14 @@ class PermRole(models.Model):
class
PermRule
(
models
.
Model
):
class
PermRule
(
models
.
Model
):
date_added
=
models
.
DateTimeField
(
auto_now
=
True
)
date_added
=
models
.
DateTimeField
(
auto_now
=
True
)
name
=
models
.
CharField
(
max_length
=
100
)
name
=
models
.
CharField
(
max_length
=
100
,
unique
=
True
)
comment
=
models
.
CharField
(
max_length
=
100
)
comment
=
models
.
CharField
(
max_length
=
100
)
asset
=
models
.
ManyToManyField
(
Asset
,
related_name
=
'perm_rule'
)
asset
=
models
.
ManyToManyField
(
Asset
,
related_name
=
'perm_rule'
)
asset_group
=
models
.
ManyToManyField
(
AssetGroup
,
related_name
=
'perm_rule'
)
asset_group
=
models
.
ManyToManyField
(
AssetGroup
,
related_name
=
'perm_rule'
)
user
=
models
.
ManyToManyField
(
User
,
related_name
=
'perm_rule'
)
user
=
models
.
ManyToManyField
(
User
,
related_name
=
'perm_rule'
)
user_group
=
models
.
ManyToManyField
(
UserGroup
,
related_name
=
'perm_rule'
)
user_group
=
models
.
ManyToManyField
(
UserGroup
,
related_name
=
'perm_rule'
)
role
=
models
.
ManyToManyField
(
PermRole
,
related_name
=
'perm_rule'
)
role
=
models
.
ManyToManyField
(
PermRole
,
related_name
=
'perm_rule'
)
ssh_type
=
models
.
BooleanField
()
is_secret_key
=
models
.
BooleanField
()
def
__unicode__
(
self
):
def
__unicode__
(
self
):
return
self
.
name
return
self
.
name
\ No newline at end of file
jperm/views.py
View file @
11f6939b
...
@@ -89,7 +89,8 @@ def perm_rule_add(request):
...
@@ -89,7 +89,8 @@ def perm_rule_add(request):
asset_groups_select
=
request
.
POST
.
getlist
(
'assetgroup'
,
[])
asset_groups_select
=
request
.
POST
.
getlist
(
'assetgroup'
,
[])
roles_select
=
request
.
POST
.
getlist
(
'role'
,
[])
roles_select
=
request
.
POST
.
getlist
(
'role'
,
[])
rule_name
=
request
.
POST
.
get
(
'rulename'
)
rule_name
=
request
.
POST
.
get
(
'rulename'
)
rule_comment
=
request
.
POST
.
get
(
'comment'
)
rule_comment
=
request
.
POST
.
get
(
'rule_comment'
)
rule_ssh_key
=
request
.
POST
.
get
(
"use_publicKey"
)
# 获取需要授权的主机列表
# 获取需要授权的主机列表
assets_obj
=
[
Asset
.
objects
.
get
(
ip
=
asset
)
for
asset
in
assets_select
]
assets_obj
=
[
Asset
.
objects
.
get
(
ip
=
asset
)
for
asset
in
assets_select
]
...
@@ -114,7 +115,9 @@ def perm_rule_add(request):
...
@@ -114,7 +115,9 @@ def perm_rule_add(request):
rule
.
asset
=
assets_obj
rule
.
asset
=
assets_obj
rule
.
asset_group
=
asset_groups_obj
rule
.
asset_group
=
asset_groups_obj
rule
.
role
=
roles_obj
rule
.
role
=
roles_obj
rule
.
is_secret_key
=
bool
(
rule_ssh_key
)
rule
.
save
()
rule
.
save
()
return
HttpResponse
(
u"添加授权规则:
%
s"
%
rule
.
name
)
return
HttpResponse
(
u"添加授权规则:
%
s"
%
rule
.
name
)
...
@@ -130,8 +133,10 @@ def perm_rule_edit(request):
...
@@ -130,8 +133,10 @@ def perm_rule_edit(request):
rule_id
=
request
.
GET
.
get
(
"id"
)
rule_id
=
request
.
GET
.
get
(
"id"
)
rule
=
PermRule
.
objects
.
get
(
id
=
rule_id
)
rule
=
PermRule
.
objects
.
get
(
id
=
rule_id
)
if
request
.
method
==
'GET'
and
rule_id
:
if
request
.
method
==
'GET'
and
rule_id
:
# 渲染数据, 获取所有的rule对象
# 渲染数据, 获取所有的rule对象
rule_comment
=
rule
.
comment
users
=
rule
.
user
.
all
()
users
=
rule
.
user
.
all
()
user_groups
=
rule
.
user_group
.
all
()
user_groups
=
rule
.
user_group
.
all
()
assets
=
rule
.
asset
.
all
()
assets
=
rule
.
asset
.
all
()
...
@@ -141,7 +146,44 @@ def perm_rule_edit(request):
...
@@ -141,7 +146,44 @@ def perm_rule_edit(request):
return
my_render
(
'jperm/perm_rule_edit.html'
,
locals
(),
request
)
return
my_render
(
'jperm/perm_rule_edit.html'
,
locals
(),
request
)
elif
request
.
method
==
'POST'
and
rule_id
:
elif
request
.
method
==
'POST'
and
rule_id
:
return
HttpResponse
(
"uncompleted"
)
# 获取用户选择的 用户,用户组,资产,资产组,用户角色
rule_name
=
request
.
POST
.
get
(
'rule_name'
)
rule_comment
=
request
.
POST
.
get
(
"rule_comment"
)
users_select
=
request
.
POST
.
getlist
(
'user'
,
[])
user_groups_select
=
request
.
POST
.
getlist
(
'usergroup'
,
[])
assets_select
=
request
.
POST
.
getlist
(
'asset'
,
[])
asset_groups_select
=
request
.
POST
.
getlist
(
'assetgroup'
,
[])
roles_select
=
request
.
POST
.
getlist
(
'role'
,
[])
# 获取需要授权的主机列表
assets_obj
=
[
Asset
.
objects
.
get
(
ip
=
asset
)
for
asset
in
assets_select
]
asset_groups_obj
=
[
AssetGroup
.
objects
.
get
(
name
=
group
)
for
group
in
asset_groups_select
]
group_assets_obj
=
[
asset
for
asset
in
[
group
.
asset_set
.
all
()
for
group
in
asset_groups_obj
]]
calc_assets
=
set
(
group_assets_obj
)
|
set
(
assets_obj
)
# 获取需要授权的用户列表
users_obj
=
[
User
.
objects
.
get
(
name
=
user
)
for
user
in
users_select
]
user_groups_obj
=
[
UserGroup
.
objects
.
get
(
name
=
group
)
for
group
in
user_groups_select
]
group_users_obj
=
[
user
for
user
in
[
group
.
user_set
.
all
()
for
group
in
user_groups_obj
]]
calc_users
=
set
(
group_users_obj
)
|
set
(
users_obj
)
# 获取授予的角色列表
roles_obj
=
[
PermRole
.
objects
.
get
(
name
=
role
)
for
role
in
roles_select
]
# 仅授权成功的,写回数据库(授权规则,用户,用户组,资产,资产组,用户角色)
rule
.
user
=
users_obj
rule
.
usergroup
=
user_groups_obj
rule
.
asset
=
assets_obj
rule
.
asset_group
=
asset_groups_obj
rule
.
role
=
roles_obj
rule
.
name
=
rule_name
rule
.
comment
=
rule
.
comment
print
rule
,
rule
.
name
rule
.
save
()
return
HttpResponse
(
u"更新授权规则:
%
s"
%
rule
.
name
)
@require_role
(
'admin'
)
@require_role
(
'admin'
)
...
@@ -252,8 +294,12 @@ def perm_role_detail(request):
...
@@ -252,8 +294,12 @@ def perm_role_detail(request):
role_info
=
get_role_info
(
role_id
)
role_info
=
get_role_info
(
role_id
)
# 渲染数据
# 渲染数据
for
key
,
value
in
role_info
.
iteritems
():
rules
=
role_info
.
get
(
"rules"
)
key
=
value
assets
=
role_info
.
get
(
"assets"
)
asset_groups
=
role_info
.
get
(
"asset_groups"
)
users
=
role_info
.
get
(
"users"
)
user_groups
=
role_info
.
get
(
"user_groups"
)
return
my_render
(
'jperm/perm_role_detail.html'
,
locals
(),
request
)
return
my_render
(
'jperm/perm_role_detail.html'
,
locals
(),
request
)
...
@@ -265,15 +311,27 @@ def perm_role_edit(request):
...
@@ -265,15 +311,27 @@ def perm_role_edit(request):
# 渲染数据
# 渲染数据
header_title
,
path1
,
path2
=
"系统角色"
,
"角色管理"
,
"角色编辑"
header_title
,
path1
,
path2
=
"系统角色"
,
"角色管理"
,
"角色编辑"
if
request
.
method
==
"GET"
:
role_id
=
request
.
GET
.
get
(
"id"
)
# 渲染数据
# 渲染数据
role_id
=
request
.
GET
.
get
(
"id"
)
role
=
PermRole
.
objects
.
get
(
id
=
role_id
)
role
=
PermRole
.
objects
.
get
(
id
=
role_id
)
if
request
.
method
==
"GET"
:
return
my_render
(
'jperm/perm_role_edit.html'
,
locals
(),
request
)
return
my_render
(
'jperm/perm_role_edit.html'
,
locals
(),
request
)
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
return
HttpResponse
(
u"未实现"
)
# 获取 POST 数据
role_name
=
request
.
POST
.
get
(
"role_name"
)
role_password
=
request
.
POST
.
get
(
"role_password"
)
role_comment
=
request
.
POST
.
get
(
"role_comment"
)
# 写入数据库
role
.
name
=
role_name
role
.
password
=
role_password
role
.
comment
=
role_comment
role
.
save
()
return
HttpResponse
(
u"更新系统角色:
%
s"
%
role
.
name
)
@require_role
(
'admin'
)
@require_role
(
'admin'
)
...
...
templates/jperm/perm_role_edit.html
View file @
11f6939b
...
@@ -40,6 +40,13 @@
...
@@ -40,6 +40,13 @@
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
"role_password_label"
class=
"col-sm-2 control-label"
>
角色密码
<span
class=
"red-fonts"
>
*
</span></label>
<div
class=
"col-sm-8"
>
<input
id=
"role_password"
name=
"role_password"
type=
"password"
class=
"form-control"
value=
"{{ role.password }}"
>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"role_comment"
class=
"col-sm-2 control-label"
>
备注
</label>
<label
for=
"role_comment"
class=
"col-sm-2 control-label"
>
备注
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
...
...
templates/jperm/perm_rule_add.html
View file @
11f6939b
...
@@ -96,27 +96,6 @@
...
@@ -96,27 +96,6 @@
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用密码
</label>
<div
class=
"col-sm-1"
>
<div
class=
"radio i-checks"
>
<label>
<input
type=
"checkbox"
value=
"0"
id=
"use_password"
name=
"use_password"
>
</label>
</div>
</div>
</div>
<div
class=
"form-group"
id=
"admin_account_password"
style=
"display: none"
>
<label
class=
"col-sm-1 control-label"
>
密码
<span
class=
"red-fonts"
>
*
</span>
</label>
<div
class=
"col-sm-4"
>
<input
type=
"password"
name=
"password"
class=
"form-control"
>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用秘钥
</label>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用秘钥
</label>
<div
class=
"col-sm-1"
>
<div
class=
"col-sm-1"
>
...
@@ -128,18 +107,11 @@
...
@@ -128,18 +107,11 @@
</div>
</div>
</div>
</div>
<div
class=
"form-group"
id=
"admin_account_publicKey"
style=
"display: none"
>
<label
class=
"col-sm-1 control-label"
>
秘钥
<span
class=
"red-fonts"
>
*
</span>
</label>
<div
class=
"col-sm-4"
>
<input
type=
"password"
name=
"password"
class=
"form-control"
>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"comment"
class=
"col-sm-2 control-label"
>
备注
</label>
<label
for=
"comment"
class=
"col-sm-2 control-label"
>
备注
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<input
id=
"
comment"
name=
"
comment"
placeholder=
"Rule Comment"
type=
"text"
class=
"form-control"
{%
if
error
%}
value=
"{{ username }}"
{%
endif
%}
>
<input
id=
"
rule_comment"
name=
"rule_
comment"
placeholder=
"Rule Comment"
type=
"text"
class=
"form-control"
{%
if
error
%}
value=
"{{ username }}"
{%
endif
%}
>
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
...
...
templates/jperm/perm_rule_edit.html
View file @
11f6939b
...
@@ -96,27 +96,6 @@
...
@@ -96,27 +96,6 @@
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用密码
</label>
<div
class=
"col-sm-1"
>
<div
class=
"radio i-checks"
>
<label>
<input
type=
"checkbox"
value=
"0"
id=
"use_password"
name=
"use_password"
>
</label>
</div>
</div>
</div>
<div
class=
"form-group"
id=
"admin_account_password"
style=
"display: none"
>
<label
class=
"col-sm-1 control-label"
>
密码
<span
class=
"red-fonts"
>
*
</span>
</label>
<div
class=
"col-sm-4"
>
<input
type=
"password"
name=
"password"
class=
"form-control"
>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用秘钥
</label>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用秘钥
</label>
<div
class=
"col-sm-1"
>
<div
class=
"col-sm-1"
>
...
@@ -128,18 +107,11 @@
...
@@ -128,18 +107,11 @@
</div>
</div>
</div>
</div>
<div
class=
"form-group"
id=
"admin_account_publicKey"
style=
"display: none"
>
<label
class=
"col-sm-1 control-label"
>
秘钥
<span
class=
"red-fonts"
>
*
</span>
</label>
<div
class=
"col-sm-4"
>
<input
type=
"password"
name=
"password"
class=
"form-control"
>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"comment"
class=
"col-sm-2 control-label"
>
备注
</label>
<label
for=
"comment"
class=
"col-sm-2 control-label"
>
备注
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<input
id=
"
comment"
name=
"comment"
placeholder=
"Comment"
type=
"text"
class=
"form-control"
{%
if
error
%}
value=
"{{ username }}"
{%
endif
%}
>
<input
id=
"
role_comment"
name=
"role_comment"
placeholder=
"Rule Comment"
type=
"text"
class=
"form-control"
value=
"{{ rule_comment }}"
>
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
...
...
templates/jperm/perm_rule_list.html
View file @
11f6939b
...
@@ -55,19 +55,19 @@
...
@@ -55,19 +55,19 @@
<tr
class=
"gradeX"
id=
{{
rule
.
id
}}
>
<tr
class=
"gradeX"
id=
{{
rule
.
id
}}
>
<td
class=
"text-center"
>
{{ rule.name }}
</td>
<td
class=
"text-center"
>
{{ rule.name }}
</td>
<td
class=
"text-center"
>
<td
class=
"text-center"
>
<a
href=
"/jasset/asset_list/?gid={{ user.id }}"
>
{{ rule | rule_member_count:"user" }}
</a>
{{ rule | rule_member_count:"user" }}
</td>
</td>
<td
class=
"text-center"
>
<td
class=
"text-center"
>
<a
href=
"/jasset/group_list/?gid={{ user.id }}"
>
{{ rule | rule_member_count:"user_group" }}
</a>
{{ rule | rule_member_count:"user_group" }}
</td>
</td>
<td
class=
"text-center"
>
<td
class=
"text-center"
>
<a
href=
"/jasset/group_list/?gid={{ user.id }}"
>
{{ rule | rule_member_count:"asset" }}
</a>
{{ rule | rule_member_count:"asset" }}
</td>
</td>
<td
class=
"text-center"
>
<td
class=
"text-center"
>
<a
href=
"/jasset/group_list/?gid={{ user.id }}"
>
{{ rule | rule_member_count:"asset_group" }}
</a>
{{ rule | rule_member_count:"asset_group" }}
</td>
</td>
<td
class=
"text-center"
>
<td
class=
"text-center"
>
<a
href=
"/jasset/group_list/?gid={{ user.id }}"
>
{{ rule | rule_member_count:"role" }}
</a>
{{ rule | rule_member_count:"role" }}
</td>
</td>
<td
class=
"text-center"
>
<td
class=
"text-center"
>
<a
href=
"/jperm/perm_rule_detail/?id={{ rule.id }}"
class=
"btn btn-xs btn-primary"
>
详情
</a>
<a
href=
"/jperm/perm_rule_detail/?id={{ rule.id }}"
class=
"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