In my application lots of nodes use the same controllers and views. I store 
some settings in session[id] where id is the id of the node. Based on 
whether a user has access to a function or not I build a menu and set 
session[id].functionname=True. This is part of the code:

if a.nav.id==ABOUTNAVID:
    session[id].site_menu.append([T(a.nav.name),False,'#'])
elif a.nav.id==WHOWEARENAVID:
    aboutDropdown(id,a)
    session[id].whoWeAre=True
elif a.nav.id==WHATWEDONAVID:
    aboutDropdown(id,a)
    session[id].whatWeDo=True
elif a.nav.id==HOWWEWORKNAVID:
    aboutDropdown(id,a)
    session[id].howWeWork=True
elif a.nav.id==WHEREWEARENAVID:
    aboutDropdown(id,a) 
    session[id].whereWeAre=True 

Now when a visitor request a function, I want the function to first check 
session[request.args(0)].functionname.

def whoWeAre():
    if has_access(request.function):
        ....

This is the has_access function:

def has_access(function):
    if not len(request.args):
        redirect(URL('addressbook','router'))
    elif not session[request.args(0)]:
        redirect(URL('addressbook','router',args=request.args(0)))
    elif session[request.args(0)].function:
        return True
    else:
        redirect(URL('addressbook','router',args=request.args(0)))

I wonder whether the has_access function has been written correctly, for 
the result doesn't seem to be consistent.


Kind regards,

Annet

-- 



Reply via email to