void AuthWidget::oAuthDone(OAuthProcess *oauth, const Identity& identity) { /* * FIXME: perhaps consider moving this to the model with signals or * by passing the Login object ? */ if (identity.isValid()) { LOG_SECURE(oauth->service().name() << ": identified: as " << identity.id() << ", " << identity.name() << ", " << identity.email()); std::auto_ptr<AbstractUserDatabase::Transaction> t(model_->users().startTransaction()); User user = model_->baseAuth()->identifyUser(identity, model_->users()); if (user.isValid()) login_.login(user); else registerNewUser(identity); if (t.get()) t->commit(); } else { LOG_SECURE(oauth->service().name() << ": error: " << oauth->error()); displayError(oauth->error()); } }
User AuthService::identifyUser(const Identity& identity, AbstractUserDatabase& users) const { std::auto_ptr<AbstractUserDatabase::Transaction> t(users.startTransaction()); User user = users.findWithIdentity(identity.provider(), WString::fromUTF8(identity.id())); if (user.isValid()) { if (t.get()) t->commit(); return user; } /* * Scenarios to handle with respect to the email address. * * - in case we are doing email address verification * - existing user has same email address * - new email address is verified -> merge new identity and * simply login as that user [X] * - new email address is not verified -> send email to confirm * to merge the accounts when registring -> TODO * - in case we are not doing email address verification * - we'll simply error on a duplicate email address [X] */ if (!identity.email().empty()) { if (emailVerification_ && identity.emailVerified()) { user = users.findWithEmail(identity.email()); if (user.isValid()) { user.addIdentity(identity.provider(), identity.id()); if (t.get()) t->commit(); return user; } } } if (t.get()) t->commit(); return User(); }
// replace placeholders void KNode::StringFilter::expand( KNGroup *g ) { Identity *id = (g) ? g->identity() : 0; if (!id) { id = (g) ? g->account()->identity() : 0; if (!id) id = knGlobals.configManager()->identity(); } expanded = data; expanded.replace(QRegExp("%MYNAME"), id->name()); expanded.replace(QRegExp("%MYEMAIL"), id->email()); }
void RegistrationWidget::oAuthDone(OAuthProcess *oauth, const Identity& identity) { if (identity.isValid()) { LOG_SECURE(oauth->service().name() << ": identified: as " << identity.id() << ", " << identity.name() << ", " << identity.email()); if (!model_->registerIdentified(identity)) update(); } else { if (authWidget_) authWidget_->displayError(oauth->error()); LOG_SECURE(oauth->service().name() << ": error: " << oauth->error()); } }