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
55096f9a
Unverified
Commit
55096f9a
authored
Apr 27, 2018
by
老广
Committed by
GitHub
Apr 27, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bugfix perm asset not active (#1273)
* [Bugfix] 修复资产禁用了还可以登录的bug
parent
494cd760
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
47 additions
and
24 deletions
+47
-24
asset.py
apps/assets/models/asset.py
+15
-1
node.py
apps/assets/models/node.py
+4
-4
django.mo
apps/i18n/zh/LC_MESSAGES/django.mo
+0
-0
django.po
apps/i18n/zh/LC_MESSAGES/django.po
+0
-0
models.py
apps/perms/models.py
+15
-6
utils.py
apps/perms/utils.py
+13
-13
No files found.
apps/assets/models/asset.py
View file @
55096f9a
...
...
@@ -4,7 +4,6 @@
import
uuid
import
logging
import
random
from
django.db
import
models
from
django.utils.translation
import
ugettext_lazy
as
_
...
...
@@ -35,6 +34,19 @@ def default_node():
return
None
class
AssetQuerySet
(
models
.
QuerySet
):
def
active
(
self
):
return
self
.
filter
(
is_active
=
True
)
def
valid
(
self
):
return
self
.
active
()
class
AssetManager
(
models
.
Manager
):
def
get_queryset
(
self
):
return
AssetQuerySet
(
self
.
model
,
using
=
self
.
_db
)
class
Asset
(
models
.
Model
):
# Important
PLATFORM_CHOICES
=
(
...
...
@@ -83,6 +95,8 @@ class Asset(models.Model):
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
,
null
=
True
,
blank
=
True
,
verbose_name
=
_
(
'Date created'
))
comment
=
models
.
TextField
(
max_length
=
128
,
default
=
''
,
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
objects
=
AssetManager
()
def
__str__
(
self
):
return
'{0.hostname}({0.ip})'
.
format
(
self
)
...
...
apps/assets/models/node.py
View file @
55096f9a
...
...
@@ -63,8 +63,8 @@ class Node(models.Model):
assets
=
Asset
.
objects
.
filter
(
nodes__id
=
self
.
id
)
return
assets
def
get_
active
_assets
(
self
):
return
self
.
get_assets
()
.
filter
(
is_active
=
True
)
def
get_
valid
_assets
(
self
):
return
self
.
get_assets
()
.
valid
(
)
def
get_all_assets
(
self
):
from
.asset
import
Asset
...
...
@@ -78,8 +78,8 @@ class Node(models.Model):
def
has_assets
(
self
):
return
self
.
get_all_assets
()
def
get_all_
active
_assets
(
self
):
return
self
.
get_all_assets
()
.
filter
(
is_active
=
True
)
def
get_all_
valid
_assets
(
self
):
return
self
.
get_all_assets
()
.
valid
(
)
def
is_root
(
self
):
return
self
.
key
==
'0'
...
...
apps/i18n/zh/LC_MESSAGES/django.mo
View file @
55096f9a
No preview for this file type
apps/i18n/zh/LC_MESSAGES/django.po
View file @
55096f9a
This diff is collapsed.
Click to expand it.
apps/perms/models.py
View file @
55096f9a
...
...
@@ -7,13 +7,23 @@ from django.utils import timezone
from
common.utils
import
date_expired_default
,
set_or_append_attr_bulk
class
ValidManager
(
models
.
Manager
):
def
get_queryset
(
self
):
return
super
()
.
get_queryset
()
.
filter
(
is_active
=
True
)
\
.
filter
(
date_start__lt
=
timezone
.
now
())
\
class
AssetPermissionQuerySet
(
models
.
QuerySet
):
def
active
(
self
):
return
self
.
filter
(
is_active
=
True
)
def
valid
(
self
):
return
self
.
active
()
.
filter
(
date_start__lt
=
timezone
.
now
())
\
.
filter
(
date_expired__gt
=
timezone
.
now
())
class
AssetPermissionManager
(
models
.
Manager
):
def
get_queryset
(
self
):
return
AssetPermissionQuerySet
(
self
.
model
,
using
=
self
.
_db
)
def
valid
(
self
):
return
self
.
get_queryset
()
.
valid
()
class
AssetPermission
(
models
.
Model
):
id
=
models
.
UUIDField
(
default
=
uuid
.
uuid4
,
primary_key
=
True
)
name
=
models
.
CharField
(
max_length
=
128
,
unique
=
True
,
verbose_name
=
_
(
'Name'
))
...
...
@@ -29,8 +39,7 @@ class AssetPermission(models.Model):
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
_
(
'Date created'
))
comment
=
models
.
TextField
(
verbose_name
=
_
(
'Comment'
),
blank
=
True
)
objects
=
models
.
Manager
()
valid
=
ValidManager
()
objects
=
AssetPermissionManager
()
def
__str__
(
self
):
return
self
.
name
...
...
apps/perms/utils.py
View file @
55096f9a
...
...
@@ -16,23 +16,23 @@ class AssetPermissionUtil:
@staticmethod
def
get_user_permissions
(
user
):
return
AssetPermission
.
valid
.
all
()
.
filter
(
users
=
user
)
return
AssetPermission
.
objects
.
all
()
.
valid
()
.
filter
(
users
=
user
)
@staticmethod
def
get_user_group_permissions
(
user_group
):
return
AssetPermission
.
valid
.
all
()
.
filter
(
user_groups
=
user_group
)
return
AssetPermission
.
objects
.
all
()
.
valid
()
.
filter
(
user_groups
=
user_group
)
@staticmethod
def
get_asset_permissions
(
asset
):
return
AssetPermission
.
valid
.
all
()
.
filter
(
assets
=
asset
)
return
AssetPermission
.
objects
.
all
()
.
valid
()
.
filter
(
assets
=
asset
)
@staticmethod
def
get_node_permissions
(
node
):
return
AssetPermission
.
valid
.
all
()
.
filter
(
nodes
=
node
)
return
AssetPermission
.
objects
.
all
()
.
valid
()
.
filter
(
nodes
=
node
)
@staticmethod
def
get_system_user_permissions
(
system_user
):
return
AssetPermission
.
objects
.
all
()
.
filter
(
system_users
=
system_user
)
return
AssetPermission
.
objects
.
valid
()
.
all
()
.
filter
(
system_users
=
system_user
)
@classmethod
def
get_user_group_nodes
(
cls
,
group
):
...
...
@@ -51,7 +51,7 @@ class AssetPermissionUtil:
assets
=
defaultdict
(
set
)
permissions
=
cls
.
get_user_group_permissions
(
group
)
for
perm
in
permissions
:
_assets
=
perm
.
assets
.
all
()
_assets
=
perm
.
assets
.
all
()
.
valid
()
_system_users
=
perm
.
system_users
.
all
()
set_or_append_attr_bulk
(
_assets
,
'permission'
,
perm
.
id
)
for
asset
in
_assets
:
...
...
@@ -63,7 +63,7 @@ class AssetPermissionUtil:
assets
=
defaultdict
(
set
)
nodes
=
cls
.
get_user_group_nodes
(
group
)
for
node
,
_system_users
in
nodes
.
items
():
_assets
=
node
.
get_all_assets
()
_assets
=
node
.
get_all_
valid_
assets
()
set_or_append_attr_bulk
(
_assets
,
'inherit_node'
,
node
.
id
)
set_or_append_attr_bulk
(
_assets
,
'permission'
,
getattr
(
node
,
'permission'
,
None
))
for
asset
in
_assets
:
...
...
@@ -103,7 +103,7 @@ class AssetPermissionUtil:
assets
=
defaultdict
(
set
)
permissions
=
list
(
cls
.
get_user_permissions
(
user
))
for
perm
in
permissions
:
_assets
=
perm
.
assets
.
all
()
_assets
=
perm
.
assets
.
all
()
.
valid
()
_system_users
=
perm
.
system_users
.
all
()
set_or_append_attr_bulk
(
_assets
,
'permission'
,
perm
.
id
)
for
asset
in
_assets
:
...
...
@@ -127,7 +127,7 @@ class AssetPermissionUtil:
assets
=
defaultdict
(
set
)
nodes
=
cls
.
get_user_nodes_direct
(
user
)
for
node
,
_system_users
in
nodes
.
items
():
_assets
=
node
.
get_all_assets
()
_assets
=
node
.
get_all_
valid_
assets
()
set_or_append_attr_bulk
(
_assets
,
'inherit_node'
,
node
.
id
)
set_or_append_attr_bulk
(
_assets
,
'permission'
,
getattr
(
node
,
'permission'
,
None
))
for
asset
in
_assets
:
...
...
@@ -180,10 +180,10 @@ class AssetPermissionUtil:
assets
=
set
()
permissions
=
cls
.
get_system_user_permissions
(
system_user
)
for
perm
in
permissions
:
assets
.
update
(
set
(
perm
.
assets
.
all
()))
assets
.
update
(
set
(
perm
.
assets
.
all
()
.
valid
()
))
nodes
=
perm
.
nodes
.
all
()
for
node
in
nodes
:
assets
.
update
(
set
(
node
.
get_all_assets
()))
assets
.
update
(
set
(
node
.
get_all_
valid_
assets
()))
return
assets
@classmethod
...
...
@@ -243,7 +243,7 @@ class NodePermissionUtil:
nodes_with_assets
=
dict
()
for
node
,
system_users
in
nodes
.
items
():
nodes_with_assets
[
node
]
=
{
'assets'
:
node
.
get_
active
_assets
(),
'assets'
:
node
.
get_
valid
_assets
(),
'system_users'
:
system_users
}
return
nodes_with_assets
...
...
@@ -274,7 +274,7 @@ class NodePermissionUtil:
nodes_with_assets
=
dict
()
for
node
,
system_users
in
nodes
.
items
():
nodes_with_assets
[
node
]
=
{
'assets'
:
node
.
get_
active
_assets
(),
'assets'
:
node
.
get_
valid
_assets
(),
'system_users'
:
system_users
}
return
nodes_with_assets
...
...
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