Source code for uw.local.print_.webui.authority
"""Authorization-related utility routines.
Authorization checkers are provided for admin users, as well as access to
orgunits and individual jobs and requisitions.
"""
[docs]def check_admin (environ, cursor, **params):
"""Check for administrator access.
For use with :func:`uw.web.wsgi.authority.check_authority`.
"""
person_id = environ['remote_identity'].person_id
return cursor.check_perm_admin (person_id=person_id)
[docs]def check_orgunit (environ, cursor, orgunit, **params):
"""Check for access to an orgunit.
For use with :func:`uw.web.wsgi.authority.check_authority`.
"""
person_id = environ['remote_identity'].person_id
return cursor.check_perm_orgunit (person_id=person_id, orgunit=orgunit) or cursor.check_perm_admin (person_id=person_id)
[docs]def check_job (environ, cursor, job, **params):
"""Check for access to a job.
For use with :func:`uw.web.wsgi.authority.check_authority`.
"""
return check_orgunit (environ, cursor, job.requisition_orgunit)
[docs]def check_requisition (environ, cursor, requisition, **params):
"""Check for access to a requisition.
For use with :func:`uw.web.wsgi.authority.check_authority`.
"""
job = cursor.job_by_id (job_id=requisition.job_id)
if job is None:
return check_admin (environ, cursor)
else:
return check_orgunit (environ, cursor, job.requisition_orgunit)