Пример #1
0
def logout():
    for key in ['auth_user_username', 'auth_user_id', 'auth_user_fullname', 'auth_user_access_token']:
        try:
            del session.data[key]
        except KeyError:
            pass
    Session.remove(Q('_id', 'eq', session._id))
    return True
Пример #2
0
def logout():
    for key in [
            'auth_user_username', 'auth_user_id', 'auth_user_fullname',
            'auth_user_access_token'
    ]:
        try:
            del session.data[key]
        except KeyError:
            pass
    Session.remove(Q('_id', 'eq', session._id))
    return True
Пример #3
0
 def test_log_logged_in(self, mock_capture):
     user = UserFactory()
     session_record = Session()
     session_record.data['auth_user_id'] = user._id
     set_session(session_record)
     sentry.log_exception()
     mock_capture.assert_called_with(extra={
         'session': {
             'auth_user_id': user._id,
         },
     }, )
Пример #4
0
 def test_log_logged_in(self, mock_capture):
     user = UserFactory()
     session_record = Session()
     session_record.data['auth_user_id'] = user._id
     set_session(session_record)
     sentry.log_exception()
     mock_capture.assert_called_with(
         extra={
             'session': {
                 'auth_user_id': user._id,
             },
         },
     )
Пример #5
0
 def test_log_not_logged_in(self, mock_capture):
     session_record = Session()
     set_session(session_record)
     sentry.log_exception()
     mock_capture.assert_called_with(extra={
         'session': {},
     }, )
Пример #6
0
def get_user_from_cookie(cookie):
    if not cookie:
        return None
    try:
        token = itsdangerous.Signer(settings.SECRET_KEY).unsign(cookie)
    except itsdangerous.BadSignature:
        raise HTTPError(httplib.UNAUTHORIZED)
    session = Session.load(token)
    if session is None:
        raise HTTPError(httplib.UNAUTHORIZED)
    return User.load(session.data['auth_user_id'])
Пример #7
0
def get_user_from_cookie(cookie):
    if not cookie:
        return None
    try:
        token = itsdangerous.Signer(settings.SECRET_KEY).unsign(cookie)
    except itsdangerous.BadSignature:
        raise HTTPError(httplib.UNAUTHORIZED)
    session = Session.load(token)
    if session is None:
        raise HTTPError(httplib.UNAUTHORIZED)
    return User.load(session.data['auth_user_id'])
Пример #8
0
def get_theme(session: Session) -> str:
    """
    Loads and returns user's current theme from its session.
    Returns default theme if session is not provided.

    :param session: session ID
    :return: current theme
    """

    theme = session.get("theme", DEFAULT_THEME)
    return theme
Пример #9
0
class HttpRequest(NamedTuple):
    method: str = "get"
    path: Optional[str] = "/"
    headers: Optional[Dict] = None
    GET: Optional[Dict] = None
    POST: Optional[Dict] = None
    content_type: Optional[str] = None
    session: Optional[Session] = None
    file_name: Optional[str] = None

    @classmethod
    def default(cls):
        return HttpRequest(headers={},
                           GET={},
                           POST={},
                           session=Session(),
                           content_type="text/html")

    @classmethod
    def build(
        cls,
        /,
        url: str,
        method: Optional[str] = None,
        headers: Optional[Dict] = None,
        form_data: Optional[str] = None,
    ) -> "HttpRequest":
        if not url:
            return cls.default()

        components = urlsplit(url)
        normal, file_name = cls._url_to_normal_and_file_name(components)
        content_type = cls._guess_content_type(headers, file_name)
        session = Session.from_headers(headers)

        return HttpRequest(
            method=method or "get",
            path=normal,
            headers=headers or {},
            GET=parse_qs(components.query or ""),
            POST=parse_qs(form_data or ""),
            content_type=content_type,
            session=session,
            file_name=file_name,
        )
Пример #10
0
    def test_confirm_email(self, mock_mail):
        user = UnregUserFactory()

        auth.register_unconfirmed(
            username=user.username,
            password='******',
            fullname='Rosie',
        )

        user.reload()
        token = user.get_confirmation_token(user.username)

        res = self.app.get('/confirm/{}/{}'.format(user._id, token),
                           allow_redirects=False)
        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_in('login?service=', res.location)

        user.reload()
        mock_mail.assert_called()
        assert_equal(len(mock_mail.call_args_list), 1)
        empty, kwargs = mock_mail.call_args
        kwargs['user'].reload()

        assert_equal(empty, ())
        assert_equal(
            kwargs, {
                'user': user,
                'mimetype': 'html',
                'mail': mails.WELCOME,
                'to_addr': user.username,
            })

        self.app.set_cookie(settings.COOKIE_NAME, user.get_or_create_cookie())
        res = self.app.get('/confirm/{}/{}'.format(user._id, token))

        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_equal('/', urlparse.urlparse(res.location).path)
        assert_equal(len(mock_mail.call_args_list), 1)
        session = Session.find(Q('data.auth_user_id', 'eq',
                                 user._id)).sort('-date_modified').limit(1)[0]
        assert_equal(len(session.data['status']), 1)
Пример #11
0
    def test_confirm_email(self, mock_mail):
        user = UnregUserFactory()

        auth.register_unconfirmed(
            username=user.username,
            password='******',
            fullname='Rosie',
        )

        token = user.get_confirmation_token(user.username)

        res = self.app.get('/confirm/{}/{}'.format(user._id, token), allow_redirects=False)
        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_in('login?service=', res.location)

        user.reload()
        assert_equal(len(mock_mail.call_args_list), 1)
        empty, kwargs = mock_mail.call_args
        kwargs['user'].reload()

        assert_equal(empty, ())
        assert_equal(kwargs, {
            'user': user,
            'mimetype': 'html',
            'mail': mails.WELCOME,
            'to_addr': user.username,
        })

        self.app.set_cookie(settings.COOKIE_NAME, user.get_or_create_cookie())
        res = self.app.get('/confirm/{}/{}'.format(user._id, token))

        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_equal('/', urlparse.urlparse(res.location).path)
        assert_equal(len(mock_mail.call_args_list), 1)
        session = Session.find(
            Q('data.auth_user_id', 'eq', user._id)
        ).sort(
            '-date_modified'
        ).limit(1)[0]
        assert_equal(len(session.data['status']), 1)
Пример #12
0
 def default(cls):
     return HttpRequest(headers={},
                        GET={},
                        POST={},
                        session=Session(),
                        content_type="text/html")