示例#1
0
    def __call__(self):
        request = self.request
        siteURL = u'%s/'%absoluteURL(getSite(), request)

        if not IUnauthenticatedPrincipal.providedBy(request.principal):
            request.response.redirect(siteURL)
            return u''

        if not 'openid_form_submitted' in request:
            request.response.redirect(siteURL)
            return u''

        identifier = request.get('openid_identifier')
        if not identifier:
            IStatusMessage(request).add(
                _(u"Please specify your OpenID identifier."))
            request.response.redirect(siteURL)
            return u''

        authenticator = getUtility(IOpenIdAuthenticator)
        session = ISession(request)[SESSION_KEY]
        consumer = Consumer(session, authenticator.store)

        try:
            authRequest = consumer.begin(identifier)
            redirectURL = authRequest.redirectURL(
                siteURL, getReturnToURL(request))
        except Exception, err:
            IStatusMessage(request).add(err, 'error')
            redirectURL = siteURL
示例#2
0
    def update(self):
        request = self.request
        principal = self.context.__principal__

        if 'form.remove' in request:
            internal = removeSecurityProxy(IOpenIdPrincipal(principal))
            del internal.__parent__[internal.__name__]

            IStatusMessage(request).add(_('User has been removed.'))
            return self.redirect('../../../../')
示例#3
0
    def __call__(self, *args, **kw):
        request = self.request
        principal = request.principal
        auth = getUtility(IAuthentication)

        if IUnauthenticatedPrincipal.providedBy(principal):
            msg = auth.loginMessage
            if not msg:
                msg = _('Login failed.')

            IStatusMessage(request).add(msg, 'warning')

            request.response.redirect(
                u'%s/login.html'%absoluteURL(getSite(), request))
        elif 'processed' in request:
            if getMultiAdapter((auth, request), ILoginService).success():
                return

        request.response.redirect(u'%s/'%absoluteURL(getSite(), request))
        return u''
示例#4
0
        # notify about principal removing
        internal = self[id]

        auth = getUtility(IAuthentication)
        info = OpenIdPrincipalInfo(self.prefix+id, internal)
        info.credentialsPlugin = None
        info.authenticatorPlugin = self
        principal = IFoundPrincipalFactory(info)(auth)
        principal.id = auth.prefix + self.prefix + id
        event.notify(PrincipalRemovingEvent(principal))

        # actual remove
        super(AuthenticatorPlugin, self).__delitem__(id)

        del self.__id_by_identifier[internal.identifier]


@component.adapter(IOpenIdUsersPlugin, IObjectRemovedEvent)
def pluginRemovedHandler(plugin, event):
    plugin = removeAllProxies(plugin)

    for id in plugin:
        del plugin[id]


authenticatorFactory = AuthenticatorPluginFactory(
    "principal.openid", AuthenticatorPlugin, ((IOpenIdUsersPlugin, ''),),
    _(u'OpenId plugin'),
    _(u'This plugin allow use openid login '
      u'like google, yahoo, lifejournal and many others'))