mirror of https://github.com/veops/cmdb.git
feat: init resource for backend (#176)
This commit is contained in:
parent
25ad2192fd
commit
7f66f7688b
|
@ -161,6 +161,55 @@ class InitDepartment(object):
|
||||||
info = f"update department acl_rid: {acl_rid}"
|
info = f"update department acl_rid: {acl_rid}"
|
||||||
current_app.logger.info(info)
|
current_app.logger.info(info)
|
||||||
|
|
||||||
|
def init_backend_resource(self):
|
||||||
|
acl = self.check_app('backend')
|
||||||
|
resources_types = acl.get_all_resources_types()
|
||||||
|
|
||||||
|
results = list(filter(lambda t: t['name'] == '操作权限', resources_types['groups']))
|
||||||
|
if len(results) == 0:
|
||||||
|
payload = dict(
|
||||||
|
app_id=acl.app_name,
|
||||||
|
name='操作权限',
|
||||||
|
description='',
|
||||||
|
perms=['read', 'grant', 'delete', 'update']
|
||||||
|
)
|
||||||
|
resource_type = acl.create_resources_type(payload)
|
||||||
|
else:
|
||||||
|
resource_type = results[0]
|
||||||
|
|
||||||
|
for name in ['公司信息']:
|
||||||
|
payload = dict(
|
||||||
|
type_id=resource_type['id'],
|
||||||
|
app_id=acl.app_name,
|
||||||
|
name=name,
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
acl.create_resource(payload)
|
||||||
|
except Exception as e:
|
||||||
|
if '已经存在' in str(e):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise Exception(e)
|
||||||
|
|
||||||
|
def check_app(self, app_name):
|
||||||
|
acl = ACLManager(app_name)
|
||||||
|
payload = dict(
|
||||||
|
name=app_name,
|
||||||
|
description=app_name
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
app = acl.validate_app()
|
||||||
|
if app:
|
||||||
|
return acl
|
||||||
|
|
||||||
|
acl.create_app(payload)
|
||||||
|
except Exception as e:
|
||||||
|
current_app.logger.error(e)
|
||||||
|
if '不存在' in str(e):
|
||||||
|
acl.create_app(payload)
|
||||||
|
return acl
|
||||||
|
raise Exception(e)
|
||||||
|
|
||||||
|
|
||||||
@click.command()
|
@click.command()
|
||||||
@with_appcontext
|
@with_appcontext
|
||||||
|
@ -177,5 +226,7 @@ def init_department():
|
||||||
"""
|
"""
|
||||||
Department initialization
|
Department initialization
|
||||||
"""
|
"""
|
||||||
InitDepartment().init()
|
cli = InitDepartment()
|
||||||
InitDepartment().create_acl_role_with_department()
|
cli.init_wide_company()
|
||||||
|
cli.create_acl_role_with_department()
|
||||||
|
cli.init_backend_resource()
|
|
@ -6,6 +6,7 @@ from api.lib.common_setting.resp_format import ErrFormat
|
||||||
from api.lib.perm.acl.cache import RoleCache, AppCache
|
from api.lib.perm.acl.cache import RoleCache, AppCache
|
||||||
from api.lib.perm.acl.role import RoleCRUD, RoleRelationCRUD
|
from api.lib.perm.acl.role import RoleCRUD, RoleRelationCRUD
|
||||||
from api.lib.perm.acl.user import UserCRUD
|
from api.lib.perm.acl.user import UserCRUD
|
||||||
|
from api.lib.perm.acl.resource import ResourceTypeCRUD, ResourceCRUD
|
||||||
|
|
||||||
|
|
||||||
class ACLManager(object):
|
class ACLManager(object):
|
||||||
|
@ -94,3 +95,22 @@ class ACLManager(object):
|
||||||
avatar=user_info.get('avatar'))
|
avatar=user_info.get('avatar'))
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def validate_app(self):
|
||||||
|
return AppCache.get(self.app_name)
|
||||||
|
|
||||||
|
def get_all_resources_types(self, q=None, page=1, page_size=999999):
|
||||||
|
app_id = self.validate_app().id
|
||||||
|
numfound, res, id2perms = ResourceTypeCRUD.search(q, app_id, page, page_size)
|
||||||
|
|
||||||
|
return dict(
|
||||||
|
numfound=numfound,
|
||||||
|
groups=[i.to_dict() for i in res],
|
||||||
|
id2perms=id2perms
|
||||||
|
)
|
||||||
|
|
||||||
|
def create_resource(self, payload):
|
||||||
|
payload['app_id'] = self.validate_app().id
|
||||||
|
resource = ResourceCRUD.add(**payload)
|
||||||
|
|
||||||
|
return resource.to_dict()
|
||||||
|
|
Loading…
Reference in New Issue