python前后端分离前端权限_前后端分离进行权限管理之后端生成菜单和权限信息(二)...

from rbac importmodelsfrom django.conf importsettingsfrom crm.utils.session importSessionStoreimportjsonclassInitPermission(object):def __init__(self, request, user):

self.request=request

self.user=user

self.permissions_dict={}

self.menus_dict={}definit_data(self):"""从数据库中获取权限信息以及用户信息

:return:"""self.permissions_queryset= self.user.roles.filter(permissions__url__isnull=False).values('permissions__id','permissions__url','permissions__title','permissions__parent_id','permissions__action__code','permissions__menu_id','permissions__menu__title','permissions__menu__icon','permissions__menu__position').distinct()returnself.permissions_querysetdefinit_permissions_dict(self):"""初始化权限,获取当前用户权限并添加到session中

将当前用户权限信息转换为以下格式,并将其添加到Session中

{

'/index.html': ['GET','POST','DEL','EDIT],

'/detail-(\d+).html': ['GET','POST','DEL','EDIT],

}

:return:"""

for row inself.init_data():if row["permissions__url"] inself.permissions_dict:

self.permissions_dict[row["permissions__url"]].append(row["permissions__action__code"])else:

self.permissions_dict[row["permissions__url"]] = [row["permissions__action__code"], ]print('init',self.permissions_dict)#将权限信息存入redis,后续中间件中去除进行验证

SessionStore().set_session(settings.PERMISSION_SESSION_KEY,self.permissions_dict)returnself.permissions_dictdefinit_menus_dict(self):"""self.menus_dict={

1:{

title:'客户管理',icon:'fa fa-coffe',children:[

{'id':1,'url':'/customer/list/','title':'客户列表'}

...

]

}

}

:return:"""

for row inself.init_data():

menu_id= row["permissions__menu_id"]if notmenu_id:continue

if menu_id not inself.menus_dict:

self.menus_dict[row["permissions__menu__position"]] ={"id":row["permissions__menu_id"],"title": row["permissions__menu__title"],"icon": row["permissions__menu__icon"],"children": [

{'id': row['permissions__id'],'title': row['permissions__title'],'url': row['permissions__url']

}

]

}else:

self.menus_dict[row["permissions__menu__position"]]["children"].append(

{'id': row['permissions__id'],'title': row['permissions__title'],'url': row['permissions__url']

}

)return self.menus_dict

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值