匿名用户2021年12月10日
90阅读

技术信息

授权协议
MIT License

作品详情

cacaItroductio

cacaisatiypermissiocotrollerbaseorubycacalibrary.Ocedefieduserability,caeasilycheckuser'spermissio.

Istall

pipistallcaca

BasicUsage

iheritfromcaca.Ability

useaddmethodtoadduserAbility

defadd(self,actio=Noe,subject=Noe,**coditios)`"""Addabilityareallowedusigtwoargumets.Thefirstoeistheactioyou'resettigthepermissiofor,thesecodoeistheclassofobjectyou'resettigito.thethirdoeisthesubject'sattributesmustbematchesorafuctiotobetest.self.add('update',Article)self.add('update',Article,user_id=1)self.add('update',Article,user_id=1,title='hello')self.add('update',Article,fuctio=test_title)"""importcacaclassUser(object):def__iit__(self,id,ame,role):self.id=idself.ame=ameself.role=roleclassArticle(object):def__iit__(self,title,user_id):self.title=titleself.user_id=user_idclassAbility(caca.Ability):def__iit__(self,user):ifuser.role=='admi':self.add('maage','all')else:self.add('read',Article)self.add('create',Article)self.add('update',Article,user_id=user.id)self.add('create','bbb')admi=User(1,'eve','admi')ability=Ability(admi)#admiability.ca('read',Article)#Trueability.ca('create',Article)#Trueability.ca('delete',Article)#Trueability.ca('aaa',Article)#Trueability.ca('create','bbb')#Trueability.ca('create','ccc')#Trueuser=User(2,'joe','user')ability2=Ability(user)#userability2.ca('read',Article)#Trueability2.ca('create',Article)#Trueability2.ca('delete',Article)#Falseability2.ca('aaa',Article)#Falseability2.ca('create','bbb')#Trueability2.ca('create','ccc')#Falsearticle=Article('hello',2)#admiability.ca('update',article)#True#userability2.ca('update',article)#Trueability2.ca('update',Article)#True(classdotcheckcoditios)Advacedimportcacadeftest_title_gt_100(article):returle(article.title)>100defaoter_test(article,id,le_title):returarticle.user_id<idadle(article.title)>le_articleclassAbility(caca.Ability):def__iit__(self,user):self.alias_actio('create','read','update',to='cru')ifuser.role=='admi':self.add('maage','all')self.addot('destroy','gem')elifuser.role=='editor':self.add('cru',Article)self.add(['read','create'],'gem')self.add('update',Article,fuctio=test_title_gt_100)self.add('delete',Article,fuctio=aother_test,fuc_args=(10,),fuc_kwargs={"le_title":4})else:self.add('create',Article)self.add('update',Article,user_id=user.id)self.add('create','bbb')editor=User(3,'kali','editor')ability3=Ability(editor)#editorability3.ca('create',Article)#Trueability3.ca('update',Article)#Trueability3.ca('cru',Article)#Trueability3.ca('read','gem')#Trueability3.ca('create','gem')#Truearticle=Article('world',1)ability3.ca('update',article)#Falseability3.ca('delete',article)#Truearticle=Article('world'*100,1)ability3.ca('delete',article)#TrueExample

seeexample.py

ItegrateDjago

seedjago_example

功能介绍

cancan Introduction cancan is a tiny permission controller base on ruby cancan library. Once defi...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论