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
b4006d3d
Commit
b4006d3d
authored
Jan 28, 2015
by
guanghongwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
perm edit
parent
b62bc9d1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
265 additions
and
110 deletions
+265
-110
urls.py
jperm/urls.py
+2
-7
views.py
jperm/views.py
+116
-95
mytags.py
jumpserver/templatetags/mytags.py
+6
-6
urls.py
jumpserver/urls.py
+1
-1
perm_edit.html
templates/jperm/perm_edit.html
+139
-0
perm_list.html
templates/jperm/perm_list.html
+0
-0
perm_list2.htl.html
templates/jperm/perm_list2.htl.html
+0
-0
nav.html
templates/nav.html
+1
-1
No files found.
jperm/urls.py
View file @
b4006d3d
...
...
@@ -6,12 +6,7 @@ urlpatterns = patterns('jperm.views',
# url(r'^$', 'jumpserver.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
(
r'^perm_host/$'
,
'perm_host'
),
(
r'^perm_add/$'
,
'perm_add'
),
(
r'^perm_edit/$'
,
'perm_edit'
),
(
r'^perm_user_show/$'
,
'perm_user_show'
),
(
r'^perm_host/$'
,
'perm_list'
),
(
r'^perm_user_edit/$'
,
'perm_user_edit'
),
(
r'^perm_user_detail/$'
,
'perm_user_detail'
),
(
r'^perm_group_edit/$'
,
'perm_group_edit'
),
(
r'^perm_group_detail/$'
,
'perm_group_detail'
),
(
r'^perm_list/$'
,
'perm_list'
),
)
jperm/views.py
View file @
b4006d3d
...
...
@@ -3,15 +3,32 @@
from
django.shortcuts
import
render_to_response
from
django.http
import
HttpResponseRedirect
,
HttpResponse
from
juser.models
import
User
,
UserGroup
from
jasset.models
import
Asset
from
jasset.models
import
Asset
,
BisGroup
from
jperm.models
import
Perm
from
django.core.paginator
import
Paginator
,
EmptyPage
,
InvalidPage
def
perm_host
(
request
):
header_title
,
path1
,
path2
=
u'主机授权 | Perm Host Detail.'
,
u'jperm'
,
u'perm_host'
users
=
contact_list
=
User
.
objects
.
all
()
.
order_by
(
'id'
)
groups
=
contact_list2
=
UserGroup
.
objects
.
all
()
.
order_by
(
'id'
)
def
perm_group_update
(
user_group_name
=
''
,
user_group_id
=
''
,
asset_groups_name
=
''
,
asset_groups_id
=
''
):
if
user_group_name
:
user_group
=
UserGroup
.
objects
.
get
(
name
=
user_group_name
)
else
:
user_group
=
UserGroup
.
objects
.
get
(
id
=
user_group_id
)
Perm
.
objects
.
filter
(
user_group
=
user_group
)
.
delete
()
if
asset_groups_name
:
for
asset_group_name
in
asset_groups_name
:
asset_group
=
BisGroup
.
objects
.
get
(
name
=
asset_group_name
)
Perm
(
user_group
=
user_group
,
asset_group
=
asset_group
)
.
save
()
else
:
for
asset_group_id
in
asset_groups_id
:
asset_group
=
BisGroup
.
objects
.
get
(
id
=
asset_group_id
)
Perm
(
user_group
=
user_group
,
asset_group
=
asset_group
)
.
save
()
def
perm_list
(
request
):
header_title
,
path1
,
path2
=
u'主机授权 | Perm Host Detail.'
,
u'jperm'
,
u'perm_list'
groups
=
contact_list
=
UserGroup
.
objects
.
all
()
.
order_by
(
'type'
)
users
=
contact_list2
=
User
.
objects
.
all
()
.
order_by
(
'id'
)
p
=
paginator
=
Paginator
(
contact_list
,
10
)
p2
=
paginator2
=
Paginator
(
contact_list2
,
10
)
try
:
...
...
@@ -25,99 +42,103 @@ def perm_host(request):
except
(
EmptyPage
,
InvalidPage
):
contacts
=
paginator
.
page
(
paginator
.
num_pages
)
contacts2
=
paginator2
.
page
(
paginator2
.
num_pages
)
return
render_to_response
(
'jperm/perm_host.html'
,
locals
())
def
perm_user_host
(
username
,
ips
):
user
=
User
.
objects
.
get
(
username
=
username
)
user
.
perm_set
.
all
()
.
delete
()
for
ip
in
ips
:
asset
=
Asset
.
objects
.
get
(
ip
=
ip
)
Perm
.
objects
.
create
(
user
=
user
,
asset
=
asset
)
def
perm_user_edit
(
request
):
header_title
,
path1
,
path2
=
u'授权编辑 | Perm Edit.'
,
u'jperm'
,
u'perm_edit'
if
request
.
method
==
'GET'
:
if
request
.
GET
.
get
(
'id'
,
None
):
user_id
=
request
.
GET
.
get
(
'id'
)
user
=
User
.
objects
.
get
(
id
=
user_id
)
assets
=
Asset
.
objects
.
all
()
assets_permed
=
[]
for
perm
in
user
.
perm_set
.
all
():
assets_permed
.
append
(
perm
.
asset
)
assets_unperm
=
list
(
set
(
assets
)
-
set
(
assets_permed
))
return
render_to_response
(
'jperm/perm_user_edit.html'
,
locals
())
else
:
host_ips
=
request
.
POST
.
getlist
(
'host_permed'
,
''
)
username
=
request
.
POST
.
get
(
'username'
)
perm_user_host
(
username
,
host_ips
)
return
HttpResponseRedirect
(
'/jperm/perm_host/'
)
def
perm_user_detail
(
request
):
user_id
=
request
.
GET
.
get
(
'id'
,
''
)
user
=
User
.
objects
.
get
(
id
=
user_id
)
host_permed
=
[]
for
perm
in
user
.
perm_set
.
all
():
host_permed
.
append
(
perm
.
asset
)
return
render_to_response
(
'jperm/perm_user_detail.html'
,
locals
())
def
perm_group_edit
(
request
):
if
request
.
method
==
'GET'
:
group_id
=
request
.
GET
.
get
(
'id'
,
''
)
group
=
UserGroup
.
objects
.
get
(
id
=
group_id
)
return
render_to_response
(
'jperm/perm_group_edit.html'
)
return
render_to_response
(
'jperm/perm_list.html'
,
locals
())
def
perm_add
(
request
):
header_title
,
path1
,
path2
=
u'添加授权 | Add User perm.'
,
u'授权管理'
,
u'添加授权'
def
perm_edit
(
request
):
if
request
.
method
==
'GET'
:
username
=
request
.
GET
.
get
(
'username'
,
None
)
if
not
username
:
return
HttpResponseRedirect
(
'/'
)
user
=
User
.
objects
.
get
(
username
=
username
)
permed_hosts
=
[]
for
perm
in
user
.
perm_set
.
all
():
permed_hosts
.
append
(
perm
.
asset
)
hosts_all
=
Asset
.
objects
.
all
()
hosts
=
list
(
set
(
hosts_all
)
-
set
(
permed_hosts
))
header_title
,
path1
,
path2
=
u'编辑授权 | Perm Host Edit.'
,
u'jperm'
,
u'perm_edit'
user_group_id
=
request
.
GET
.
get
(
'id'
)
user_group
=
UserGroup
.
objects
.
get
(
id
=
user_group_id
)
asset_groups
=
BisGroup
.
objects
.
all
()
asset_groups_permed
=
[
perm
.
asset_group
for
perm
in
user_group
.
perm_set
.
all
()]
asset_groups_unperm
=
[
asset_group
for
asset_group
in
asset_groups
if
asset_group
not
in
asset_groups_permed
]
return
render_to_response
(
'jperm/perm_edit.html'
,
locals
())
else
:
username
=
request
.
POST
.
get
(
'username'
,
None
)
host_ids
=
request
.
POST
.
getlist
(
'host_ids'
,
None
)
user_group_name
=
request
.
POST
.
get
(
'user_group_name'
)
asset_groups_selected
=
request
.
POST
.
getlist
(
'asset_group_permed'
)
perm_group_update
(
user_group_name
=
user_group_name
,
asset_groups_id
=
asset_groups_selected
)
return
HttpResponseRedirect
(
'/jperm/perm_list/'
)
# def perm_user_host(username, ips):
# user = User.objects.get(username=username)
# user.perm_set.all().delete()
# for ip in ips:
# asset = Asset.objects.get(ip=ip)
# Perm.objects.create(user=user, asset=asset)
#
#
# def perm_user_edit(request):
# header_title, path1, path2 = u'授权编辑 | Perm Edit.', u'jperm', u'perm_edit'
# if request.method == 'GET':
# if request.GET.get('id', None):
# user_id = request.GET.get('id')
# user = User.objects.get(id=user_id)
# assets = Asset.objects.all()
# assets_permed = []
# for perm in user.perm_set.all():
# assets_permed.append(perm.asset)
# assets_unperm = list(set(assets)-set(assets_permed))
# return render_to_response('jperm/perm_user_edit.html', locals())
# else:
# host_ips = request.POST.getlist('host_permed', '')
# username = request.POST.get('username')
# perm_user_host(username, host_ips)
#
# return HttpResponseRedirect('/jperm/perm_host/')
#
#
# def perm_user_detail(request):
# user_id = request.GET.get('id', '')
# user = User.objects.get(id=user_id)
# host_permed = []
# for perm in user.perm_set.all():
# host_permed.append(perm.asset)
#
# return render_to_response('jperm/perm_user_detail.html', locals())
#
#
# def perm_group_edit(request):
# if request.method == 'GET':
# group_id = request.GET.get('id', '')
# group = UserGroup.objects.get(id=group_id)
#
# return render_to_response('jperm/perm_group_edit.html')
#
#
# def perm_add(request):
# header_title, path1, path2 = u'添加授权 | Add User perm.', u'授权管理', u'添加授权'
# if request.method == 'GET':
# username = request.GET.get('username', None)
# if not username:
# return HttpResponseRedirect('/')
#
# user = User.objects.get(username=username)
# permed_hosts = []
# for perm in user.perm_set.all():
# permed_hosts.append(perm.asset)
#
# hosts_all = Asset.objects.all()
# hosts = list(set(hosts_all) - set(permed_hosts))
#
# else:
# username = request.POST.get('username', None)
# host_ids = request.POST.getlist('host_ids', None)
#
# user = User.objects.get(username=username)
# for host_id in host_ids:
# asset = Asset.objects.get(id=host_id)
# perm = Perm(user=user, asset=asset)
# perm.save()
# msg = u'添加成功'
#
# return render_to_response('jperm/perm_add.html', locals())
#
#
# def perm_user_show(request):
# header_title, path1, path2 = u'查看授权用户 | Perm User Detail.', u'授权管理', u'用户详情'
# users = User.objects.all()
# return render_to_response('jperm/perm_user_show.html', locals(),)
user
=
User
.
objects
.
get
(
username
=
username
)
for
host_id
in
host_ids
:
asset
=
Asset
.
objects
.
get
(
id
=
host_id
)
perm
=
Perm
(
user
=
user
,
asset
=
asset
)
perm
.
save
()
msg
=
u'添加成功'
return
render_to_response
(
'jperm/perm_add.html'
,
locals
())
def
perm_user_show
(
request
):
header_title
,
path1
,
path2
=
u'查看授权用户 | Perm User Detail.'
,
u'授权管理'
,
u'用户详情'
users
=
User
.
objects
.
all
()
return
render_to_response
(
'jperm/perm_user_show.html'
,
locals
(),)
def
perm_list
(
request
):
header_title
,
path1
,
path2
=
u'查看用户授权 | Perm User Detail.'
,
u'授权管理'
,
u'用户详情'
username
=
request
.
GET
.
get
(
'username'
,
None
)
if
not
username
:
return
HttpResponseRedirect
(
'/'
)
user
=
User
.
objects
.
get
(
username
=
username
)
hosts
=
[]
for
perm
in
user
.
perm_set
.
all
():
hosts
.
append
(
perm
.
asset
)
return
render_to_response
(
'jperm/perm_list.html'
,
locals
())
jumpserver/templatetags/mytags.py
View file @
b4006d3d
...
...
@@ -50,18 +50,18 @@ def bool2str(value):
return
u'否'
@register.filter
(
name
=
'perm_count'
)
def
perm_count
(
user_id
):
user
=
User
.
objects
.
get
(
id
=
int
(
user_id
))
return
user
.
perm_set
.
all
()
.
count
()
@register.filter
(
name
=
'member_count'
)
def
member_count
(
group_id
):
group
=
UserGroup
.
objects
.
get
(
id
=
group_id
)
return
group
.
user_set
.
count
()
@register.filter
(
name
=
'perm_count'
)
def
perm_count
(
group_id
):
group
=
UserGroup
.
objects
.
get
(
id
=
group_id
)
return
group
.
perm_set
.
count
()
@register.filter
(
name
=
'group_type_to_str'
)
def
group_type_to_str
(
type_name
):
group_types
=
{
...
...
jumpserver/urls.py
View file @
b4006d3d
...
...
@@ -5,7 +5,7 @@ urlpatterns = patterns('',
# Examples:
# url(r'^$', 'jumpserver.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
(
r'^$'
,
'jumpserver.views.base'
),
(
r'^skin_config/$'
,
'jumpserver.views.skin_config'
),
(
r'^base/$'
,
'jumpserver.views.base'
),
(
r'^juser/'
,
include
(
'juser.urls'
)),
...
...
templates/jperm/perm_edit.html
0 → 100644
View file @
b4006d3d
{% extends 'base.html' %}
{% load mytags %}
{% block content %}
<script
type=
"text/javascript"
>
function
search_host
(
text
){
$
(
"#asset_group_unperm"
).
children
().
each
(
function
(){
$
(
this
).
remove
();});
var
permArray
=
[];
$
(
"#asset_group_permed"
).
children
().
each
(
function
(){
permArray
.
push
(
$
(
this
).
text
());
});
$
(
"#asset_groups"
).
children
().
each
(
function
(){
if
(
$
(
this
).
text
().
search
(
text
)
!=
-
1
&&
permArray
.
indexOf
(
$
(
this
).
text
())
==
-
1
)
{
$
(
"#asset_group_unperm"
).
append
(
$
(
this
).
clone
())
}
});
}
</script>
{% 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"
>
<!-- title -->
<div
class=
"ibox-title"
>
<h5>
授权编辑表单
<small>
Edit perm of Group
</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=
"#"
>
Config option 1
</a>
</li>
<li><a
href=
"#"
>
Config option 2
</a>
</li>
</ul>
<a
class=
"close-link"
>
<i
class=
"fa fa-times"
></i>
</a>
</div>
</div>
<!-- end title -->
<div
class=
"ibox-content"
>
<div
class=
"row"
>
<div
class=
"col-sm-5 "
>
<div
class=
"form-group"
>
<label></label>
<input
type=
"text"
id=
"group_filter"
placeholder=
"Search"
class=
"form-control"
value=
""
oninput=
"search_host(this.value)"
>
</div>
</div>
<div
class=
"col-sm-1 "
>
<div
class=
"form-group"
>
<label></label>
</div>
</div>
<div
class=
"col-sm-5 "
>
<div
class=
"form-group"
>
<label></label>
<input
type=
"text"
class=
"form-control"
value=
"{{ user_group.name }}"
readonly
>
</div>
</div>
</div>
<form
method=
"post"
action=
""
>
<input
type=
"text"
name=
"user_group_name"
class=
"form-control"
value=
"{{ user_group.name }}"
style=
"display: none"
>
<div
class=
"row"
>
<div
class=
"col-sm-5"
><h4>
未授权主机组
</h4>
<div>
<select
id=
"asset_groups"
name=
"asset_groups"
class=
"form-control"
size=
"10"
multiple
style=
"display: none"
>
{% for asset_group in asset_groups %}
<option
value=
"{{ asset_group.id }}"
>
{{ asset_group.name }}
</option>
{% endfor %}
</select>
<select
id=
"asset_group_unperm"
name=
"asset_group_unperm"
class=
"form-control m-b"
size=
"12"
multiple
>
{% for asset_group in asset_groups_unperm %}
<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_group_unperm', 'asset_group_permed')"
><i
class=
"fa fa-chevron-right"
></i></button>
<button
type=
"button"
class=
"btn btn-white"
onclick=
"move('asset_group_permed', 'asset_group_unperm')"
><i
class=
"fa fa-chevron-left"
></i>
</button>
</div>
</div>
<div
class=
"col-sm-5"
><h4>
授权主机
</h4>
<div>
<select
id=
"asset_group_permed"
name=
"asset_group_permed"
class=
"form-control m-b"
size=
"12"
multiple
>
{% for asset_group in asset_groups_permed %}
<option
value=
"{{ asset_group.id }}"
>
{{ asset_group.name }}
</option>
{% endfor %}
</select>
</div>
</div>
</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(){$('#asset_group_permed option').each(function(){$(this).prop('selected', true)})})()"
>
确认保存
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script>
var
str
=
document
.
location
.
pathname
.
split
(
"/"
)[
1
];
var
str1
=
document
.
location
.
pathname
.
split
(
"/"
)[
2
];
$
(
"#"
+
str
).
addClass
(
'active'
);
$
(
"#"
+
str1
).
addClass
(
'active'
);
</script>
{#
<script
type=
"text/javascript"
>
#
}
{
#
$
(
"#asset_group_permed"
).
children
().
each
(
function
(){
#
}
{
#
$
(
"#asset_groups"
).
append
(
$
(
this
).
clone
());
#
}
{
##
}
{
#
if
(
$
(
this
).
prop
(
"selected"
)
==
false
)
{
#
}
{
#
$
(
"#asset_group_unperm"
).
append
(
this
);
#
}
{
#
}
#
}
{
##
}
{
#
$
(
"#asset_groups"
).
children
().
each
(
function
(){
$
(
this
).
prop
(
"selected"
,
false
)});
#
}
{
#
});
#
}
{
#
</script>
#}
{% endblock %}
\ No newline at end of file
templates/jperm/perm_list.html
View file @
b4006d3d
This diff is collapsed.
Click to expand it.
templates/jperm/perm_
host
.html
→
templates/jperm/perm_
list2.htl
.html
View file @
b4006d3d
File moved
templates/nav.html
View file @
b4006d3d
...
...
@@ -34,7 +34,7 @@
<li
id=
"jperm"
>
<a
href=
"#"
><i
class=
"fa fa-edit"
></i>
<span
class=
"nav-label"
>
授权管理
</span><span
class=
"fa arrow"
></span></a>
<ul
class=
"nav nav-second-level"
>
<li><a
href=
"/jperm/perm_
ho
st/"
>
主机授权
</a></li>
<li><a
href=
"/jperm/perm_
li
st/"
>
主机授权
</a></li>
<li><a
href=
"/jperm/perm_sudo/"
>
Sudo授权
</a></li>
</ul>
</li>
...
...
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