Skip to content

Commit

Permalink
Merge pull request #821 from longguikeji/feature-12
Browse files Browse the repository at this point in the history
feat: 🎸 更新权限
  • Loading branch information
hanbinloop authored May 11, 2022
2 parents d7b0f13 + b459cb3 commit 9957144
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 58 deletions.
4 changes: 2 additions & 2 deletions api/v1/views/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def create_app(request, tenant_id: str, data: AppConfigSchemaIn):
for func, (result, extension) in results:
if result:
# 创建config
config = extension.create_tenant_config(tenant, data.config.dict(), data.name)
config = extension.create_tenant_config(tenant, data.config.dict(), data.name, data.app_type)
# 创建app
app = App()
app.id = data.id
Expand Down Expand Up @@ -156,7 +156,7 @@ def update_app(request, tenant_id: str, app_id: str, data: AppConfigSchemaIn):
# app.tenant_id = tenant_id
app.save()
# 修改config
extension.update_tenant_config(app.config.id, data.config.dict())
extension.update_tenant_config(app.config.id, data.config.dict(), data.app_type)
break
return {'error': ErrorCode.OK.value}

Expand Down
14 changes: 14 additions & 0 deletions arkid/core/openapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ def import_permission(scheme):
describe = systempermission.describe
if systempermission.category == 'group':
item['container'] = describe.get('sort_ids', [])
parent = describe.get('parent', -1)
if parent != -1:
item['parent'] = parent
else:
item['container'] = []
item['operation_id'] = systempermission.operation_id
Expand All @@ -57,6 +60,17 @@ def import_permission(scheme):
"sort_id": 2,
"type": "group",
},
{
"name": "分组",
"sort_id": 3,
"type": "group",
},
{
"name": "分组1",
"sort_id": 4,
"type": "group",
"parent": 3
},
]

def get_permissions(api):
Expand Down
84 changes: 32 additions & 52 deletions arkid/core/tasks/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,50 +96,37 @@ def update_system_permission():
systempermission.is_update = True
systempermission.save()
permissions_item['sort_real_id'] = systempermission.sort_id
permissions_item['systempermission'] = systempermission
# 单独处理分组问题
for group_item in group_data:
name = group_item.get('name', '')
container = group_item.get('container', [])
container = group_item.get('container', [])
group_systempermission = group_item.get('systempermission', None)
group_sort_ids = []
for api_item in api_data:
sort_id = api_item.get('sort_id', 0)
sort_real_id = api_item.get('sort_real_id', 0)
if sort_id in container:
api_systempermission = api_item.get('systempermission', None)

if sort_id in container and api_systempermission:
group_systempermission.container.add(api_systempermission)
group_sort_ids.append(sort_real_id)
# 系统权限
group_systempermission = SystemPermission.valid_objects.filter(
tenant=None,
category='group',
is_system=True,
name=name,
code__icontains='group_role',
).first()
api_systempermissions = SystemPermission.valid_objects.filter(
category='api',
is_system=True,
sort_id__in=group_sort_ids,
)
for api_systempermission in api_systempermissions:
group_systempermission.container.add(api_systempermission)
group_systempermission.describe = {
'sort_ids': group_sort_ids
}
# parent
parent = group_item.get('parent', -1)
describe = {'sort_ids': group_sort_ids}
if parent != -1:
parent_real = None
for group_next in group_data:
sort_id = group_next.get('sort_id', 0)
sort_real_id = group_next.get('sort_real_id', 0)
group_next_permission = group_next.get('systempermission', None)
if sort_id == parent and group_next_permission:
group_systempermission.parent = group_next_permission
describe['parent'] = sort_real_id
break
else:
group_systempermission.parent = None
group_systempermission.describe = describe
group_systempermission.save()
# for group_item in group_data:
# container = group_item.get('container', [])
# group_systempermission = group_item.get('systempermission', None)
# group_sort_ids = []
# for api_item in api_data:
# sort_id = api_item.get('sort_id', 0)
# api_systempermission = api_item.get('systempermission', None)
# if sort_id in container and api_systempermission:
# group_systempermission.container.add(api_systempermission)
# group_sort_ids.append(api_systempermission.sort_id)
# # 保存新的排序id
# group_systempermission.describe = {
# 'sort_ids': group_sort_ids
# }
# group_systempermission.save()
# 权限更新
SystemPermission.valid_objects.filter(
Q(code__icontains='group_role') | Q(category='api'),
Expand All @@ -148,20 +135,13 @@ def update_system_permission():
is_update=False
).delete()

class ReadySingleton(object):
def __init__(self, *args, **kwargs):
pass

@classmethod
def get_instance(cls, *args, **kwargs):
if not hasattr(ReadySingleton, '_instance' ):
ReadySingleton._instance = ReadySingleton(*args, **kwargs)
# 只有celery第一次被启动时才会调用
tenant = Tenant.valid_objects.filter(
slug='',
name="platform tenant",
).first()
dispatch_event(Event(tag=APP_START, tenant=tenant))
return ReadySingleton._instance
class ReadyCelery(object):

def __init__(self):
tenant, _ = Tenant.objects.get_or_create(
slug='',
name="platform tenant",
)
dispatch_event(Event(tag=APP_START, tenant=tenant))

ReadySingleton.get_instance()
ReadyCelery()
8 changes: 4 additions & 4 deletions extension_root/com_longgui_oauth2_server/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ def update_url_data(self, tenant_id, config, obj):
'''
host = get_app_config().get_frontend_host()

config.userinfo = host+reverse("com_longgui_oauth2_server:oauth-user-info", args=[tenant_id])
config.authorize = host+reverse("com_longgui_oauth2_server:authorize", args=[tenant_id])
config.token = host+reverse("com_longgui_oauth2_server:token", args=[tenant_id])
config.logout = host+reverse("com_longgui_oauth2_server:oauth-user-logout", args=[tenant_id])
config.userinfo = host+reverse("com_longgui_auth_oauth2_server:oauth-user-info", args=[tenant_id])
config.authorize = host+reverse("com_longgui_auth_oauth2_server:authorize", args=[tenant_id])
config.token = host+reverse("com_longgui_auth_oauth2_server:token", args=[tenant_id])
config.logout = host+reverse("com_longgui_auth_oauth2_server:oauth-user-logout", args=[tenant_id])
config.client_id = obj.client_id
config.client_secret = obj.client_secret
config.skip_authorization = obj.skip_authorization
Expand Down

0 comments on commit 9957144

Please sign in to comment.