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"
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)
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)
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
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
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