1

I am using flask principal, the latest version Flask-Principal (0.4.0)
I have certain url route e.g. gpsData, reports, entry etc

individual route can be viewed by multiple user role
url------------Role
gpsData -- admin, reporter, client
reports -- admin, reporter
entry -- admin, client, data_entry
e.g.

@login_module.route('/gpsData')
@admin.require()
@reporter.require()
@client.require()
def gpsData():
    return "only admin, reporter and client can view"  

@login_module.route('/reports')
@admin.require()
@reporter.require()
def reports():
    return "only admin and reporter can view"
   
@identity_loaded.connect_via(app)
def on_identity_loaded(sender, identity):
    #identity.provides.add(RoleNeed('report'))  
    identity.provides.add(RoleNeed(identity.id))

Only one require at a time seems to works, like in this case the "reporter.require" is only working. If logged in using admin id, it genrates error.

Update:

Also in Template I just want to show urls that can be viewed by particular user role only.

Community
  • 1
  • 1
beebek
  • 1,893
  • 5
  • 29
  • 33

1 Answers1

0

Have you tried using union?

admin_reporter_permission = admin_permission.union(reporter_permission)
bill__
  • 101
  • 1
  • 4