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
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('../../../../')
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''
# 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'))