def requesthandler(self): """ Combined GET and POST requesthandler.""" doc = self.request.get('doc') if user_service == 'google': if doc =='y': www.serve(self,self.__doc__,title = '/users/logout') else: user = users.get_current_user() if user is not None: self.redirect(users.create_logout_url(self.request.uri)) else: self.redirect('/') else: success = False cookies = Cookies(self,max_age=3600) t = '<table><form action=/users/logout method=post>' t = t + '<tr><td>Session ID</td><td><input type=text name=session></td></tr>' t = t + '<tr><td colspan=2><input type=submit value=Logout></td></tr></table></form>' if doc == 'y': www.serve(self,t, sidebar = self.__doc__, title = '/users/logout') else: try: session = cookies['session'] except: session = self.request.get('session') if len(session) > 0 and len(session) < 256: success = Users.logout(session=session) cookies['session']='' self.response.headers['Content-Type']='text/plain' if success: self.response.out.write('ok') else: self.response.out.write('error') else: www.serve(self,t, sidebar=self.__doc__, title = '/users/logout')
def login(): try: payload = converts_keys(json.loads(request.data), case='snake') except ValueError: raise EmptyPayloadError check_only_required_payload_props(payload, 'login', 'password', 'remember_me') if payload.pop('remember_me'): max_age = REMEMBER_ME_MAX_AGE else: max_age = None with connect(DSN) as connection: with connection.cursor(cursor_factory=RealDictCursor) as cursor: if 'token' in request.cookies: try: cursor.execute(Users.logout(), request.cookies) except Exception: pass cursor.execute(Users.login(), payload) record = cursor.fetchone() try: token = record['token'] except TypeError: raise AuthenticationError response = make_response(jsonify(), 201) response.set_cookie('token', value=token, max_age=max_age, samesite=None, secure=False, httponly=False) return response
def logout(): with connect(DSN) as connection: with connection.cursor(cursor_factory=RealDictCursor) as cursor: cursor.execute(Users.logout(), request.cookies) response = make_response(jsonify(), 205) response.set_cookie('token', value='', max_age=0, samesite=None, secure=False, httponly=False) return response
def get_user_data(user_id): cookies = request.cookies with connect(DSN) as connection: with connection.cursor(cursor_factory=RealDictCursor) as cursor: if 'token' in cookies: cursor.execute(Users.get_user_id(), cookies) record = cursor.fetchone() try: follower_id = record['user_id'] except KeyError: cursor(Users.logout(), cookies) follower_id = 0 else: follower_id = 0 cursor.execute(Users.get_user_data(), { 'id': user_id, 'follower_id': follower_id }) profile = cursor.fetchone() put_out_contacts(profile) return jsonify(converts_keys(profile, case='camel'))