예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
 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')