Exemplo n.º 1
0
 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')
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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'))