mirror of
https://github.com/fastapi-admin/fastapi-admin.git
synced 2025-08-26 02:39:01 +08:00
fix permissions
This commit is contained in:
@ -1,3 +1,3 @@
|
||||
from . import routes
|
||||
|
||||
__version__ = '0.2.0'
|
||||
__version__ = '0.2.1'
|
||||
|
@ -27,12 +27,20 @@ async def site(
|
||||
if app.permission and not user.is_superuser:
|
||||
site_ = deepcopy(site_)
|
||||
await user.fetch_related('roles')
|
||||
for menu in filter(lambda x: (x.url and 'rest' in x.url) or x.children, site_.menus):
|
||||
filter_menus = filter(lambda x: (x.url and 'rest' in x.url) or x.children, site_.menus)
|
||||
hide_menus = []
|
||||
for menu in filter_menus:
|
||||
has_permission = False
|
||||
if not has_permission:
|
||||
for role in user.roles:
|
||||
if await role.permissions.filter(model=menu.name):
|
||||
for role in user.roles:
|
||||
if not has_permission:
|
||||
model = menu.url.split('/')[-1]
|
||||
permission = await role.permissions.filter(model=model)
|
||||
if permission:
|
||||
has_permission = True
|
||||
if not has_permission:
|
||||
hide_menus.append(menu.url)
|
||||
for menu in app.site.menus:
|
||||
if menu.url in hide_menus:
|
||||
site_.menus.remove(menu)
|
||||
|
||||
return site_.dict(by_alias=True, exclude_unset=True)
|
||||
|
Reference in New Issue
Block a user