def authorize(referrer): if not users.get_current_user(): return login(referrer) else: cache_key='{0}/authorizations'.format(request.referrer) auth=cache.get(cache_key) email=db.Email(users.get_current_user().email()) if auth is None: auth=Authorization.get_by_key_name(request.referrer) if auth is not None: cache.set(cache_key, auth) try: a=auth.approved.index(email) except ValueError: a=-1 if a <> -1: return logout(referrer) else: try: p=auth.pending.index(email) except ValueError: p=-1 if p <> -1: return pending_logout(referrer) else: try: r=auth.rejected.index(email) except ValueError: r=-1 if r <> -1: return rejected_logout(referrer) return authorize_logout(referrer)
def reject_ticket(referrer, email): auth=Authorization.get_by_key_name(referrer) auth.pending.remove(email) auth.rejected.append(email) auth.put() cache_key='{0}/authorizations'.format(referrer) cache.set(cache_key, auth)
def authorization_request(referrer): if not users.get_current_user(): return login(referrer) else: email=db.Email(users.get_current_user().email()) ar=AuthRequest(referrer=referrer, email=email) ar.put() auth=Authorization.get_by_key_name(request.referrer) auth.pending.append(email) auth.put() return pending_logout(referrer)
def decorated_view(*args, **kwargs): if not request.referrer: try: referrer=request.json['referrer'] except KeyError: return jsonify(error='referrer missing') else: referrer=request.referrer cache_key='{0}/approved'.format(referrer) auth=cache.get(cache_key) email=db.Email(users.get_current_user().email()) if users.is_current_user_admin(): if auth is None: auth=Authorization.get_by_key_name(referrer) if auth is None: auth=Authorization(key_name=referrer) auth.put() try: i=auth.approved.index(email) except ValueError: i=-1 if i==-1: auth.approved.append(email) auth.put() cache.set(cache_key, auth) return func(*args, **kwargs) if auth is None: auth=Authorization.get_by_key_name(referrer) if auth is not None: cache.set(cache_key, auth) try: i=auth.approved.index(email) except ValueError: i=-1 if i <> -1: return func(*args, **kwargs) return jsonify(error='not authorized')