def login(self,env,start_response): cl = vanilla.getContentLength(env) if cl == None: return vanilla.http_error(411,env,start_response,'missing Content-Length header') content = env['wsgi.input'].read(cl) query = urlparse.parse_qs(content) if 'username' not in query: return vanilla.http_error(400,env,start_response,msg='missing username') #Use first occurence from query string username = query['username'][0] if 'password' not in query: return vanilla.http_error(400,env,start_response,msg='missing password') #Use first occurence from query string password = query['password'][0] userId = self.authenticateUser(username,password) if userId == None: self.logger.info('Failed authorization for user:%s' , username) return vanilla.sendJsonWsgiResponse(env,start_response,{'error':'bad username or password'}) session = self.sm.startSession(username,userId) return vanilla.sendJsonWsgiResponse(env,start_response,self.getResponseForSession(session),additionalHeaders=[session.getCookie()])
def _extractParams(self, env): #If the function doesn't request parameters, #then don't read from env['wsgi.input']. It is possible #the function handles what it needs on its own if len(self.parameters) == 0: return {} requestMethod = env['REQUEST_METHOD'] retval = {} if requestMethod == 'POST': cl = vanilla.getContentLength(env) if cl == None: raise ValueError('Missing content length header') query = urlparse.parse_qs(env['wsgi.input'].read(cl)) for parameter, converter, isArray in self.parameters: if parameter not in query: raise ValueError('Missing parameter %s' % parameter) if isArray: if converter: raise NotImplementedError( 'Cannot handle array parameters with conversion') retval[parameter] = query[parameter] else: retval[parameter] = query[parameter][0] if converter: result = converter(retval[parameter]) if result == None: if len(retval[parameter]) < 64: raise ValueError( 'Bad value "%s" for parameter %s' % ( retval[parameter], parameter, )) else: raise ValueError('Bad value for parameter %s' % (parameter, )) retval[parameter] = result return retval else: raise NotImplementedError( "Cannot handle %s requests with parameters" % requestMethod)
def _extractParams(self,env): #If the function doesn't request parameters, #then don't read from env['wsgi.input']. It is possible #the function handles what it needs on its own if len(self.parameters) == 0: return {} requestMethod = env['REQUEST_METHOD'] retval = {} if requestMethod == 'POST': cl = vanilla.getContentLength(env) if cl == None: raise ValueError('Missing content length header') query = urlparse.parse_qs(env['wsgi.input'].read(cl)) for parameter,converter,isArray in self.parameters: if parameter not in query: raise ValueError('Missing parameter %s' % parameter) if isArray: if converter: raise NotImplementedError('Cannot handle array parameters with conversion') retval[parameter] = query[parameter] else: retval[parameter] = query[parameter][0] if converter: result = converter(retval[parameter]) if result == None: if len(retval[parameter]) < 64: raise ValueError('Bad value "%s" for parameter %s' % (retval[parameter], parameter,)) else: raise ValueError('Bad value for parameter %s' %(parameter,)) retval[parameter] = result return retval else: raise NotImplementedError("Cannot handle %s requests with parameters" % requestMethod)
def login(self, env, start_response): cl = vanilla.getContentLength(env) if cl == None: return vanilla.http_error(411, env, start_response, 'missing Content-Length header') content = env['wsgi.input'].read(cl) query = urlparse.parse_qs(content) if 'username' not in query: return vanilla.http_error(400, env, start_response, msg='missing username') #Use first occurence from query string username = query['username'][0] if 'password' not in query: return vanilla.http_error(400, env, start_response, msg='missing password') #Use first occurence from query string password = query['password'][0] userId = self.authenticateUser(username, password) if userId == None: self.logger.info('Failed authorization for user:%s', username) return vanilla.sendJsonWsgiResponse( env, start_response, {'error': 'bad username or password'}) session = self.sm.startSession(username, userId) return vanilla.sendJsonWsgiResponse( env, start_response, self.getResponseForSession(session), additionalHeaders=[session.getCookie()])