def _handle_verify_continuation(self, request): _ = request.getText oidconsumer = consumer.Consumer(request.session, MoinOpenIDStore(request)) query = {} for key in request.form: query[key] = request.form[key][0] current_url = get_multistage_continuation_url(request, self.name, {"oidstage": "1"}) info = oidconsumer.complete(query, current_url) if info.status == consumer.FAILURE: return CancelLogin(_("OpenID error: %s.") % info.message) elif info.status == consumer.CANCEL: return CancelLogin(_("Verification canceled.")) elif info.status == consumer.SUCCESS: request.session["openid.id"] = info.identity_url request.session["openid.info"] = info # try to find user object uid = user.getUserIdByOpenId(request, info.identity_url) if uid: u = user.User(request, id=uid, auth_method=self.name, auth_username=info.identity_url) else: u = None # create or update the user according to the registration data u = self._handle_user_data(request, u) if u: return ContinueLogin(u) # if no user found, then we need to ask for a username, # possibly associating an existing account. request.session["openid.id"] = info.identity_url return MultistageFormLogin(self._get_account_name) else: return CancelLogin(_("OpenID failure."))
def _handle_oidreturn(self): request = self.request _ = request.getText oidconsumer = consumer.Consumer(request.session, MoinOpenIDStore(request)) query = {} for key in request.values: query[key] = request.values[key] qstr = {'action': 'userprefs', 'handler': 'oid', 'oid.return': '1'} return_to = request.getQualifiedURL(request.page.url(request, qstr)) info = oidconsumer.complete(query, return_to) if info.status == consumer.FAILURE: return 'error', _('OpenID error: %s.') % info.message elif info.status == consumer.CANCEL: return 'info', _('Verification canceled.') elif info.status == consumer.SUCCESS: if not hasattr(self.request.user, 'openids'): request.user.openids = [] if info.identity_url in request.user.openids: return 'error', _("OpenID is already present.") if user.getUserIdByOpenId(request, info.identity_url): return 'error', _("This OpenID is already used for another account.") # all fine request.user.openids.append(info.identity_url) request.user.save() return 'info', _("OpenID added successfully.") else: return 'error', _('OpenID failure.')
def _handle_verify_continuation(self, request): _ = request.getText oidconsumer = consumer.Consumer(request.session, MoinOpenIDStore(request)) query = {} for key in request.values.keys(): query[key] = request.values.get(key) current_url = get_multistage_continuation_url(request, self.name, {'oidstage': '1'}) info = oidconsumer.complete(query, current_url) if info.status == consumer.FAILURE: logging.debug(_("OpenID error: %s.") % info.message) return CancelLogin(_('OpenID error: %s.') % info.message) elif info.status == consumer.CANCEL: logging.debug(_("OpenID verification canceled.")) return CancelLogin(_('Verification canceled.')) elif info.status == consumer.SUCCESS: logging.debug(_("OpenID success. id: %s") % info.identity_url) request.session['openid.id'] = info.identity_url request.session['openid.info'] = info # try to find user object uid = user.getUserIdByOpenId(request, info.identity_url) if uid: u = user.User(request, id=uid, auth_method=self.name, auth_username=info.identity_url, auth_attribs=self.auth_attribs) else: u = None # create or update the user according to the registration data u = self._handle_user_data(request, u) if u: return ContinueLogin(u) # if no user found, then we need to ask for a username, # possibly associating an existing account. logging.debug("OpenID: No user found, prompting for username") #request.session['openid.id'] = info.identity_url return MultistageFormLogin(self._get_account_name) else: logging.debug(_("OpenID failure")) return CancelLogin(_('OpenID failure.'))
def _handle_verify_continuation(self, request): _ = request.getText info = {} #Response() #info.status = 'success' openid = request.form.get('openid_identifier') if openid: logging.debug(_("OpenID success. id: %s") % openid) request.session['openid.id'] = openid request.session['openid.info'] = info # try to find user object uid = user.getUserIdByOpenId(request, openid) logging.debug('openid %s' % request.session['openid.id']) logging.debug('uid %s' % uid) if uid: u = user.User(request, id=uid, auth_method=self.name, auth_username=openid, auth_attribs=self.auth_attribs) else: u = None # create or update the user according to the registration data u = self._handle_user_data(request, u) if u: return ContinueLogin(u) # if no user found, then we need to ask for a username, # possibly associating an existing account. logging.debug("OpenID: No user found, prompting for username") #request.session['openid.id'] = info.identity_url return MultistageFormLogin(self._get_account_name) else: logging.debug(_("OpenID failure")) return CancelLogin(_('Unable to get OpenID.'))