Add VSponsorAdminOrAdminSecret validator.

This commit is contained in:
bsimpson63
2013-06-03 15:28:17 -04:00
parent 80b5a9256e
commit 65431d18ae

View File

@@ -779,14 +779,18 @@ class VAdmin(Validator):
if not c.user_is_admin:
abort(404, "page not found")
class VAdminOrAdminSecret(VAdmin):
def run(self, secret):
'''If validation succeeds, return True if the secret was used,
False otherwise'''
if secret and constant_time_compare(secret, g.ADMINSECRET):
return True
super(VAdminOrAdminSecret, self).run()
return False
def make_or_admin_secret_cls(base_cls):
class VOrAdminSecret(base_cls):
def run(self, secret=None):
'''If validation succeeds, return True if the secret was used,
False otherwise'''
if secret and constant_time_compare(secret, g.ADMINSECRET):
return True
super(VOrAdminSecret, self).run()
return False
return VOrAdminSecret
VAdminOrAdminSecret = make_or_admin_secret_cls(VAdmin)
class VVerifiedUser(VUser):
def run(self):
@@ -813,6 +817,8 @@ class VSponsorAdmin(VVerifiedUser):
return
abort(403, 'forbidden')
VSponsorAdminOrAdminSecret = make_or_admin_secret_cls(VSponsorAdmin)
class VSponsor(VVerifiedUser):
"""
Not intended to be used as a check for c.user_is_sponsor, but