auth.requires_login(otheriwise=A(..))

This commit is contained in:
mdipierro
2012-08-07 11:31:10 -05:00
parent ef90f698d5
commit 686ff2bfeb
2 changed files with 18 additions and 12 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.00.0 (2012-08-07 11:21:45) dev Version 2.00.0 (2012-08-07 11:31:08) dev
+17 -11
View File
@@ -1,4 +1,4 @@
!/bin/python #!/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
""" """
@@ -2679,7 +2679,7 @@ class Auth(object):
raise HTTP(403,'ACCESS DENIED') raise HTTP(403,'ACCESS DENIED')
return 'ACCESS DENIED' return 'ACCESS DENIED'
def requires(self, condition, requires_login=True): def requires(self, condition, requires_login=True, otherwise=None):
""" """
decorator that prevents access to action if not logged in decorator that prevents access to action if not logged in
""" """
@@ -2692,7 +2692,9 @@ class Auth(object):
user = user or self.user user = user or self.user
if requires_login: if requires_login:
if not user: if not user:
if self.settings.allow_basic_login_only or \ if not otherwise is None:
return otherwise
elif self.settings.allow_basic_login_only or \
basic_accepted or current.request.is_restful: basic_accepted or current.request.is_restful:
raise HTTP(403,"Not authorized") raise HTTP(403,"Not authorized")
elif current.request.ajax: elif current.request.ajax:
@@ -2721,37 +2723,41 @@ class Auth(object):
return decorator return decorator
def requires_login(self): def requires_login(self,otherwise=None):
""" """
decorator that prevents access to action if not logged in decorator that prevents access to action if not logged in
""" """
return self.requires(True) return self.requires(True,otherwise=otherwise)
def requires_membership(self, role=None, group_id=None): def requires_membership(self, role=None, group_id=None,otherwise=None):
""" """
decorator that prevents access to action if not logged in or decorator that prevents access to action if not logged in or
if user logged in is not a member of group_id. if user logged in is not a member of group_id.
If role is provided instead of group_id then the If role is provided instead of group_id then the
group_id is calculated. group_id is calculated.
""" """
return self.requires(lambda: self.has_membership(group_id=group_id, role=role)) return self.requires(lambda: self.has_membership(
group_id=group_id, role=role),otherwise=otherwise)
def requires_permission(self, name, table_name='', record_id=0): def requires_permission(self, name, table_name='', record_id=0,
otherwise=None):
""" """
decorator that prevents access to action if not logged in or decorator that prevents access to action if not logged in or
if user logged in is not a member of any group (role) that if user logged in is not a member of any group (role) that
has 'name' access to 'table_name', 'record_id'. has 'name' access to 'table_name', 'record_id'.
""" """
return self.requires(lambda: self.has_permission(name, table_name, record_id)) return self.requires(lambda: self.has_permission(
name, table_name, record_id),otherwise=otherwise)
def requires_signature(self): def requires_signature(self,otherwise=None):
""" """
decorator that prevents access to action if not logged in or decorator that prevents access to action if not logged in or
if user logged in is not a member of group_id. if user logged in is not a member of group_id.
If role is provided instead of group_id then the If role is provided instead of group_id then the
group_id is calculated. group_id is calculated.
""" """
return self.requires(lambda: URL.verify(current.request,user_signature=True)) return self.requires(lambda: URL.verify(
current.request,user_signature=True),otherwise=otherwise)
def add_group(self, role, description=''): def add_group(self, role, description=''):
""" """