Пример #1
0
class SessionAuth(AuthMethod):
    """
    Secondary authentication method. After authenticating with a
    primary authentication method, call GetSession() to generate a
    session key that may be used for subsequent calls.
    """

    def check(self):
        assert self.auth.has_key('session')

        query_sessions = Query.get('local:session').filter_by('session', '==', self.auth['session'])
        sessions = self.interface.execute_local_query(query_sessions)
        if not sessions:
            del self.auth['session']
            raise AuthenticationFailure, "No such session: %s" % self.auth
        session = sessions[0]

        user_id = session['user_id']
        try:
            query_users = Query.get('local:user').filter_by('user_id', '==', user_id)
            user, = self.interface.execute_local_query(query_users)
        except Exception, e:
            raise AuthenticationFailure, "No such user_id: %s" % e
        
        if user and session['expires'] > time.time():
            return user
        else:
            query_sessions = Query.delete('local:session').filter_by('session', '==', session['session'])
            try:
                self.interface.execute_local_query(query_sessions)
            except: pass
            raise AuthenticationFailure, "Invalid session"
Пример #2
0
 def delete(self):
     query = Query.delete(self.type)
     query = self.applyFilters(query, True)
     if self.filters :
         query.set(self.filters)
     else:
         raise Exception, "Filters are required for delete"
     return execute_query(self.request, query)
Пример #3
0
def dispatch(request, action):

    results = []
    error = None
    try:
        if request.method == 'POST':
            req_items = request.POST
        elif request.method == 'GET':
            req_items = request.GET

        for el in req_items.items():
            if el[0].startswith('slice_hrn'):
                slice_hrn = el[1]
            elif el[0].startswith('initscript_code'):
                initscript_code = el[1]

        if (action == 'get'):
            # select initscript_code from initscript where slice_hrn=='onelab.upmc.express'
            query = Query.get('initscript').filter_by(
                'slice_hrn', '==', slice_hrn).select('initscript_code')
            results = execute_admin_query(request, query)

        if (action == 'update'):
            # UPDATE initscript SET initscript_code='test3' where slice_hrn=='onelab.upmc.express'
            params = {'initscript_code': initscript_code}
            query = Query.update('initscript').filter_by(
                'slice_hrn', '==', slice_hrn).set(params)
            results = execute_admin_query(request, query)

            if results[0]['initscript_code'] == 1:
                results[0]['initscript_code'] = initscript_code
            else:
                error = "Error in update return value"

        if (action == 'delete'):
            # delete from initscript where slice_hrn=='onelab.upmc.express'
            query = Query.delete('initscript').filter_by(
                'slice_hrn', '==', slice_hrn)
            results = execute_admin_query(request, query)

            if results[0]['initscript_code'] == 1:
                results[0]['initscript_code'] = ""
            else:
                error = "Error in delete return value"
    except Exception, e:
        error = str(e)
Пример #4
0
    def check(self):
        # Method.type_check() should have checked that all of the
        # mandatory fields were present.
        assert self.auth.has_key('Username')
        
        # Get record (must be enabled)
        try:
            query_users = Query.get('local:user').filter_by('email', '==', self.auth['Username'].lower())
            user, = self.interface.execute_local_query(query_users)
        except Exception, e:
            import traceback
            traceback.print_exc()
            Log.warning("Authentication failed, delete expired sessions")
            query_sessions = Query.delete('local:session').filter_by('expires', '<', int(time.time()))
            try:
                self.interface.execute_local_query(query_sessions)
            except: pass

            raise AuthenticationFailure, "No such account (PW): %s" % e
Пример #5
0
 def clean_sessions(self):
     # Before a new session is added, delete expired sessions
     query_sessions = Query.delete('local:session').filter_by('expires', '<', int(time.time()))
     try:
         self.interface.execute_local_query(query_sessions)
     except: pass
Пример #6
0
def manifold_delete_account(request, platform_id, user_id, account_params):
    query = Query.delete('local:account').filter_by('platform_id', '==', platform_id).filter_by('user_id', '==', user_id).set(account_params).select('user_id')
    results = execute_admin_query(request,query)
    return results