def update(self): request = self.request principal = self.context.__principal__ if 'form.remove' in request: internal = removeSecurityProxy(IGoogleFCPrincipal(principal)) del internal.__parent__[internal.__name__] IStatusMessage(request).add(_('User has been removed.')) return self.redirect('../../../../')
def __call__(self, *args, **kw): context = self.context 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(context, request)) else: product = getUtility(IGoogleFCAuthenticationProduct) cookie = request.getCookies().get(product.cookieNames[0]) if cookie: if getMultiAdapter((auth, request), ILoginService).success(): return u'' request.response.redirect(u'%s/'%absoluteURL(getSite(), request)) return u''
# notify about principal removing internal = self[id] auth = getUtility(IAuthentication) info = GoogleFCPrincipalInfo(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(IGoogleFCUsersPlugin, IObjectRemovedEvent) def pluginRemovedHandler(plugin, event): plugin = removeAllProxies(plugin) for id in plugin: del plugin[id] authenticatorFactory = AuthenticatorPluginFactory( "principal.googlefc", AuthenticatorPlugin, ((IGoogleFCUsersPlugin, ''),), _(u'Google Friend Connect plugin'), _(u'This plugin allow use googlefc login ' u'like google, yahoo, lifejournal and many others'))