Exemplo n.º 1
0
class LoggedInHandler(webapp2.RequestHandler):
    """
    Provides a base set of functionality for pages that need logins.
    Currently does not support caching as easily as CacheableHandler.
    """

    def __init__(self, *args, **kw):
        super(LoggedInHandler, self).__init__(*args, **kw)
        self.user_bundle = UserBundle()
        self.template_values = {
            "user_bundle": self.user_bundle
        }
        self.response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
        self.response.headers['Pragma'] = 'no-cache'
        self.response.headers['Expires'] = '0'

    def _require_admin(self):
        self._require_login()
        if not self.user_bundle.is_current_user_admin:
            return self.redirect(self.user_bundle.login_url, abort=True)

    def _require_login(self, target_url="/"):
        if not self.user_bundle.user:
            return self.redirect(
                self.user_bundle.create_login_url(target_url),
                abort=True
            )

    def _require_registration(self, target_url="/"):
        if not self.user_bundle.account.registered:
            return self.redirect(
                target_url,
                abort=True
            )
class LoggedInHandler(webapp2.RequestHandler):
    """
    Provides a base set of functionality for pages that need logins.
    Currently does not support caching as easily as CacheableHandler.
    """
    def __init__(self, *args, **kw):
        super(LoggedInHandler, self).__init__(*args, **kw)
        self.user_bundle = UserBundle()
        self.template_values = {"user_bundle": self.user_bundle}
        self.response.headers[
            'Cache-Control'] = 'no-cache, no-store, must-revalidate'
        self.response.headers['Pragma'] = 'no-cache'
        self.response.headers['Expires'] = '0'

    def _require_admin(self):
        self._require_login()
        if not self.user_bundle.is_current_user_admin:
            return self.redirect(self.user_bundle.login_url, abort=True)

    def _require_login(self, target_url="/"):
        if not self.user_bundle.user:
            return self.redirect(self.user_bundle.create_login_url(target_url),
                                 abort=True)

    def _require_registration(self, target_url="/"):
        if not self.user_bundle.account.registered:
            return self.redirect(target_url, abort=True)
Exemplo n.º 3
0
class LoggedInHandler(webapp2.RequestHandler):
    """
    Provides a base set of functionality for pages that need logins.
    Currently does not support caching as easily as CacheableHandler.
    """

    def __init__(self, *args, **kw):
        super(LoggedInHandler, self).__init__(*args, **kw)
        self.user_bundle = UserBundle()
        self.template_values = {
            "user_bundle": self.user_bundle
        }
        self.response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
        self.response.headers['Pragma'] = 'no-cache'
        self.response.headers['Expires'] = '0'
        self.response.headers['Vary'] = 'Accept-Encoding'

    def _get_login_url(self, target_url):
        return self.user_bundle.create_login_url(target_url)

    def _require_admin(self):
        self._require_login()
        if not self.user_bundle.is_current_user_admin:
            return self.redirect(self.user_bundle.login_url, abort=True)

    def _require_login(self, redirect_url=None):
        import urllib

        if not self.user_bundle.user:
            if not redirect_url:
                redirect_url = self.request.get('redirect')
            if not redirect_url:
                redirect_url = self.request.url
            return self.redirect(
                '/account/login_required?redirect={}'.format(urllib.quote(redirect_url)),
                abort=True
            )

    def _require_permission(self, permission):
        self._require_registration()
        if permission not in self.user_bundle.account.permissions:
            return self.redirect(
                "/",
                abort=True
            )

    def _require_registration(self, redirect_url=None):
        import urllib

        self._require_login()
        if not self.user_bundle.account.registered:
            if not redirect_url:
                redirect_url = self.request.get('redirect')
            if not redirect_url:
                redirect_url = self.request.url
            return self.redirect(
                '/account/register?redirect={}'.format(urllib.quote(redirect_url)),
                abort=True
            )
Exemplo n.º 4
0
class LoggedInHandler(webapp2.RequestHandler):
    """
    Provides a base set of functionality for pages that need logins.
    Currently does not support caching as easily as CacheableHandler.
    """
    def __init__(self, *args, **kw):
        super(LoggedInHandler, self).__init__(*args, **kw)
        self.user_bundle = UserBundle()
        self.template_values = {"user_bundle": self.user_bundle}
        self.response.headers[
            'Cache-Control'] = 'no-cache, no-store, must-revalidate'
        self.response.headers['Pragma'] = 'no-cache'
        self.response.headers['Expires'] = '0'
        self.response.headers['Vary'] = 'Accept-Encoding'

    def _get_login_url(self, target_url):
        return self.user_bundle.create_login_url(target_url)

    def _require_admin(self):
        self._require_login()
        if not self.user_bundle.is_current_user_admin:
            return self.redirect(self.user_bundle.login_url, abort=True)

    def _require_login(self, redirect_url=None):
        import urllib

        if not self.user_bundle.user:
            if not redirect_url:
                redirect_url = self.request.get('redirect')
            if not redirect_url:
                redirect_url = self.request.url
            return self.redirect('/account/login_required?redirect={}'.format(
                urllib.quote(redirect_url)),
                                 abort=True)

    def _require_permission(self, permission):
        self._require_registration()
        if permission not in self.user_bundle.account.permissions:
            return self.redirect("/", abort=True)

    def _require_registration(self, redirect_url=None):
        import urllib

        self._require_login()
        if not self.user_bundle.account.registered:
            if not redirect_url:
                redirect_url = self.request.get('redirect')
            if not redirect_url:
                redirect_url = self.request.url
            return self.redirect('/account/register?redirect={}'.format(
                urllib.quote(redirect_url)),
                                 abort=True)
Exemplo n.º 5
0
class LoggedInHandler(webapp2.RequestHandler):
    """
    Provides a base set of functionality for pages that need logins.
    Currently does not support caching as easily as CacheableHandler.
    """
    def __init__(self, *args, **kw):
        super(LoggedInHandler, self).__init__(*args, **kw)
        self.user_bundle = UserBundle()
        self.template_values = {"user_bundle": self.user_bundle}

    def _require_admin(self):
        self._require_login()
        if not self.user_bundle.is_current_user_admin:
            return self.redirect(self.user_bundle.login_url, abort=True)

    def _require_login(self, target_url="/"):
        if not self.user_bundle.user:
            return self.redirect(self.user_bundle.create_login_url(target_url),
                                 abort=True)
class LoggedInHandler(webapp2.RequestHandler):
    """
    Provides a base set of functionality for pages that need logins.
    Currently does not support caching as easily as CacheableHandler.
    """

    def __init__(self, *args, **kw):
        super(LoggedInHandler, self).__init__(*args, **kw)
        self.user_bundle = UserBundle()
        self.template_values = {
            "user_bundle": self.user_bundle
        }

    def _require_admin(self):
        self._require_login()
        if not self.user_bundle.is_current_user_admin:
            return self.redirect(self.user_bundle.login_url, abort=True)

    def _require_login(self, target_url="/"):
        if not self.user_bundle.user:
            return self.redirect(
                self.user_bundle.create_login_url(target_url),
                abort=True
            )
Exemplo n.º 7
0
class LoggedInHandler(webapp2.RequestHandler):
    """
    Provides a base set of functionality for pages that need logins.
    Currently does not support caching as easily as CacheableHandler.
    """

    def __init__(self, *args, **kw):
        super(LoggedInHandler, self).__init__(*args, **kw)
        if type(self.request) == webapp2.Request:
            trace_context.request = self.request

        self.user_bundle = UserBundle()
        self.template_values = {
            "user_bundle": self.user_bundle
        }
        self.response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
        self.response.headers['Pragma'] = 'no-cache'
        self.response.headers['Expires'] = '0'
        self.response.headers['Vary'] = 'Accept-Encoding'
        self.response.headers['X-Robots-Tag'] = 'noindex'

    def _get_login_url(self, target_url):
        return self.user_bundle.create_login_url(target_url)

    def _require_admin(self):
        self._require_login()
        if not self.user_bundle.is_current_user_admin:
            return self.redirect(self.user_bundle.login_url, abort=True)

    def _require_login(self, redirect_url=None):
        import urllib

        if not self.user_bundle.user:
            if not redirect_url:
                redirect_url = self.request.get('redirect')
            if not redirect_url:
                redirect_url = self.request.url
            return self.redirect(
                '/account/login_required?redirect={}'.format(urllib.quote(redirect_url)),
                abort=True
            )

    def _require_permission(self, permission):
        self._require_registration()
        if permission not in self.user_bundle.account.permissions:
            return self.redirect(
                "/",
                abort=True
            )

    def _require_registration(self, redirect_url=None):
        import urllib

        self._require_login()
        if not self.user_bundle.account.registered:
            if not redirect_url:
                redirect_url = self.request.get('redirect')
            if not redirect_url:
                redirect_url = self.request.url
            return self.redirect(
                '/account/register?redirect={}'.format(urllib.quote(redirect_url)),
                abort=True
            )

    def _require_team_admin_access(self, team_number, redirect_url=None):
        self._require_login(redirect_url)
        if self.user_bundle.is_current_user_admin:
            # Admins have this granted
            return

        user = self.user_bundle.account.key
        now = datetime.datetime.now()
        existing_access = existing_access = TeamAdminAccess.query(
            TeamAdminAccess.account == user,
            TeamAdminAccess.team_number == team_number,
            TeamAdminAccess.expiration > now).fetch()
        if not existing_access:
            return self.abort(403)

    def _require_request_user_is_bundle_user(self):
        current_user_account_id = self.user_bundle.account.key.id()

        target_account_id = self.request.get('account_id')
        if not target_account_id:
            return self.abort(403)

        if target_account_id != current_user_account_id:
            return self.abort(403)
Exemplo n.º 8
0
class LoggedInHandler(webapp2.RequestHandler):
    """
    Provides a base set of functionality for pages that need logins.
    Currently does not support caching as easily as CacheableHandler.
    """

    def __init__(self, *args, **kw):
        super(LoggedInHandler, self).__init__(*args, **kw)
        if type(self.request) == webapp2.Request:
            trace_context.request = self.request

        self.user_bundle = UserBundle()
        self.template_values = {
            "user_bundle": self.user_bundle
        }
        self.response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
        self.response.headers['Pragma'] = 'no-cache'
        self.response.headers['Expires'] = '0'
        self.response.headers['Vary'] = 'Accept-Encoding'
        self.response.headers['X-Robots-Tag'] = 'noindex'

    def _get_login_url(self, target_url):
        return self.user_bundle.create_login_url(target_url)

    def _require_admin(self):
        self._require_login()
        if not self.user_bundle.is_current_user_admin:
            return self.redirect(self.user_bundle.login_url, abort=True)

    def _require_login(self, redirect_url=None):
        import urllib

        if not self.user_bundle.user:
            if not redirect_url:
                redirect_url = self.request.get('redirect')
            if not redirect_url:
                redirect_url = self.request.url
            return self.redirect(
                '/account/login_required?redirect={}'.format(urllib.quote(redirect_url)),
                abort=True
            )

    def _require_permission(self, permission):
        self._require_registration()
        if permission not in self.user_bundle.account.permissions:
            return self.redirect(
                "/",
                abort=True
            )

    def _require_registration(self, redirect_url=None):
        import urllib

        self._require_login()
        if not self.user_bundle.account.registered:
            if not redirect_url:
                redirect_url = self.request.get('redirect')
            if not redirect_url:
                redirect_url = self.request.url
            return self.redirect(
                '/account/register?redirect={}'.format(urllib.quote(redirect_url)),
                abort=True
            )

    def _require_team_admin_access(self, team_number, redirect_url=None):
        self._require_login(redirect_url)
        if self.user_bundle.is_current_user_admin:
            # Admins have this granted
            return

        user = self.user_bundle.account.key
        now = datetime.datetime.now()
        existing_access = existing_access = TeamAdminAccess.query(
            TeamAdminAccess.account == user,
            TeamAdminAccess.team_number == team_number,
            TeamAdminAccess.expiration > now).fetch()
        if not existing_access:
            return self.abort(403)