Exemplo n.º 1
0
 def after_update(self, context, pkg_dict):
     is_suitable = twitter_helpers.twitter_pkg_suitable(context,
                                                        pkg_dict['id'])
     if is_suitable:
         try:
             session.pop('twitter_is_suitable', '')
             session.setdefault('twitter_is_suitable', pkg_dict['id'])
             session.save()
         except TypeError:
             print "session not iterable"
Exemplo n.º 2
0
    def logged_in(self):
        # we need to set the language via a redirect
        lang = session.pop('lang', None)
        session.save()
        came_from = request.params.get('came_from', '')

        # we need to set the language explicitly here or the flash
        # messages will not be translated.
        i18n.set_lang(lang)

        if c.user:
            context = None
            data_dict = {'id': c.user}

            user_dict = get_action('user_show')(context, data_dict)

            h.flash_success(
                _("%s is now logged in") % user_dict['display_name'])
            if came_from:
                return h.redirect_to(str(came_from))
            return self.me()
        else:
            err = _('Login failed. Bad username or password.')
            if g.openid_enabled:
                err += _(' (Or if using OpenID, it hasn\'t been associated '
                         'with a user account.)')
            if h.asbool(config.get('ckan.legacy_templates', 'false')):
                h.flash_error(err)
                h.redirect_to(locale=lang,
                              controller='user',
                              action='login',
                              came_from=came_from)
            else:
                return self.login(error=err)
Exemplo n.º 3
0
    def login(self, error=None):
        lang = session.pop('lang', None)
        if lang:
            session.save()
            return h.redirect_to(locale=str(lang),
                                 controller='user',
                                 action='login')

        # Do any plugin login stuff
        for item in p.PluginImplementations(p.IAuthenticator):
            item.login()

        if 'error' in request.params:
            h.flash_error(request.params['error'])

        if request.environ['SCRIPT_NAME'] and g.openid_enabled:
            # #1662 restriction
            log.warn('Cannot mount CKAN at a URL and login with OpenID.')
            g.openid_enabled = False

        if not c.user:
            came_from = request.params.get('came_from', '')
            c.login_handler = h.url_for(
                self._get_repoze_handler('login_handler_path'),
                came_from=came_from)
            if error:
                vars = {'error_summary': {'': error}}
            else:
                vars = {}
            return render('user/login.html', extra_vars=vars)
        else:
            return render('user/logout_first.html')
Exemplo n.º 4
0
    def logged_in(self):
        # we need to set the language via a redirect
        lang = session.pop('lang', None)
        session.save()
        came_from = request.params.get('came_from', '')

        # we need to set the language explicitly here or the flash
        # messages will not be translated.
        i18n.set_lang(lang)

        if c.user:
            context = None
            data_dict = {'id': c.user}

            user_dict = get_action('user_show')(context, data_dict)

            h.flash_success(_("%s is now logged in") %
                            user_dict['display_name'])
            if came_from:
                return h.redirect_to(str(came_from))
            return self.me()
        else:
            err = _('Login failed. Bad username or password.')
            if g.openid_enabled:
                err += _(' (Or if using OpenID, it hasn\'t been associated '
                         'with a user account.)')
            if h.asbool(config.get('ckan.legacy_templates', 'false')):
                h.flash_error(err)
                h.redirect_to(locale=lang, controller='user',
                              action='login', came_from=came_from)
            else:
                return self.login(error=err)
Exemplo n.º 5
0
    def login(self, error=None):
        lang = session.pop('lang', None)
        if lang:
            session.save()
            return h.redirect_to(locale=str(lang), controller='user',
                                 action='login')
        if 'error' in request.params:
            h.flash_error(request.params['error'])

        if request.environ['SCRIPT_NAME'] and g.openid_enabled:
            # #1662 restriction
            log.warn('Cannot mount CKAN at a URL and login with OpenID.')
            g.openid_enabled = False

        if not c.user:
            came_from = request.params.get('came_from', '')
            c.login_handler = h.url_for(
                self._get_repoze_handler('login_handler_path'),
                came_from=came_from)
            if error:
                vars = {'error_summary': {'': error}}
            else:
                vars = {}
            return render('user/login.html', extra_vars=vars)
        else:
            return render('user/logout_first.html')
Exemplo n.º 6
0
def callback():
    logger.info('callback(): user=%s request.params=%s', c.userobj,
                request.params)
    try:
        check_access('orcid_callback', _make_context())
    except logic.NotAuthorized as ex:
        return Response('Not authorized',
                        status=403,
                        content_type='text/plain')

    if not ('orcid' in session) or not ('state' in session['orcid']):
        return Response('No state for this authorization request!',
                        status=403,
                        content_type='text/plain')

    now = long(time.time())
    state, state_expires_at = session['orcid']['state']
    if state_expires_at < now:
        return Response('The authorization request has expired!',
                        status=400,
                        content_type='text/plain')
    if request.params.get('state') != state:
        return Response('The request state is invalid',
                        status=400,
                        content_type='text/plain')

    authorization_code = request.params.get('code')
    r = _exchange_code_with_token(authorization_code)
    orcid_identifier = r['orcid']
    access_token = r['access_token']
    refresh_token = r['refresh_token']
    access_expires_at = now + long(r['expires_in'])
    scope = r['scope']
    logger.info(
        'Acquired token for user %s: orcid_identifier=%s access_token=%s scope=%r',
        c.user, orcid_identifier, access_token, scope)

    # Assosicate user with ORCID information (identifier and access tokens)

    save_orcid_for_user(c.userobj.id, orcid_identifier, access_token,
                        refresh_token, now, access_expires_at)

    # Fetch person info (invoke ORCID member API)

    person_info = get_person_info(orcid_identifier, access_token)

    # Redirect to return page

    return_url = None
    try:
        return_url = session.pop('return_to')
    except KeyError as ex:
        return_url = toolkit.url_for('user.read', id=c.user)

    logger.info("callback(): Redirecting to %s", return_url)
    return toolkit.redirect_to(return_url)
 def tweet_ready(self, package_id):
     '''
     Checks the session to see if the package has been marked as ready
     for tweeting via the update hook. Removes the 'twitter_is_suitable'
     key from the session if present.
     :param package_id: The package ID.
     :return: boolean
     '''
     in_session = session.pop('twitter_is_suitable', '') == package_id
     return in_session