119
119
return account->credentialsId();
122
void Authenticator::process(SignOn::Identity *identity,
123
const QString &tokenName,
124
const QString &userName,
125
const QString &password,
128
auto session = identity->createSession(QStringLiteral("ubuntuone"));
129
if (Q_UNLIKELY(!session)) {
130
qCritical() << "Unable to create AuthSession.";
131
Q_EMIT error(AuthenticationError, "");
135
connect(session, SIGNAL(response(const SignOn::SessionData&)),
136
this, SLOT(handleSessionData(const SignOn::SessionData&)));
137
connect(session, SIGNAL(error(const SignOn::Error&)),
138
this, SLOT(handleError(const SignOn::Error&)));
141
data.setTokenName(tokenName);
142
data.setUserName(userName);
143
data.setSecret(password);
144
data.setOneTimePassword(otp);
145
int uiPolicy = m_uiAllowed ?
146
SignOn::DefaultPolicy : SignOn::NoUserInteractionPolicy;
147
data.setUiPolicy(uiPolicy);
149
data.setInvalidateToken(true);
150
m_invalidate = false;
153
session->process(data, QStringLiteral("ubuntuone"));
122
156
void Authenticator::authenticate(const QString &tokenName,
123
157
const QString &userName,
124
158
const QString &password,
136
170
identity = SignOn::Identity::newIdentity(info, this);
137
171
connect(identity, &SignOn::Identity::credentialsStored,
138
[this](const quint32 id) {
172
[=](const quint32 id) {
139
173
m_credentialsId = id;
174
process(identity, tokenName, userName, password, otp);
141
176
connect(identity, &SignOn::Identity::error,
142
[this](const SignOn::Error &err) {
177
[=](const SignOn::Error &err) {
143
178
qCritical() << "authenticate(): unable to store identity";
144
179
Q_EMIT error(AccountNotFound, "");
151
186
Q_EMIT error(AccountNotFound, "");
156
auto session = identity->createSession(QStringLiteral("ubuntuone"));
157
if (Q_UNLIKELY(!session)) {
158
qCritical() << "Unable to create AuthSession.";
159
Q_EMIT error(AuthenticationError, "");
163
connect(session, SIGNAL(response(const SignOn::SessionData&)),
164
this, SLOT(handleSessionData(const SignOn::SessionData&)));
165
connect(session, SIGNAL(error(const SignOn::Error&)),
166
this, SLOT(handleError(const SignOn::Error&)));
169
data.setTokenName(tokenName);
170
data.setUserName(userName);
171
data.setSecret(password);
172
data.setOneTimePassword(otp);
173
int uiPolicy = m_uiAllowed ?
174
SignOn::DefaultPolicy : SignOn::NoUserInteractionPolicy;
175
data.setUiPolicy(uiPolicy);
177
data.setInvalidateToken(true);
178
m_invalidate = false;
181
session->process(data, QStringLiteral("ubuntuone"));
189
process(identity, tokenName, userName, password, otp);
184
194
void Authenticator::invalidateCredentials()
196
m_credentialsId = existingCredentialsId();
197
if (m_credentialsId == 0) {
198
qCritical() << "invalidateCredentials(): no existing credentials.";
199
Q_EMIT error(AccountNotFound, "");
203
auto identity = SignOn::Identity::existingIdentity(m_credentialsId, this);
204
process(identity, Token::buildTokenName());
189
207
void Authenticator::setUiAllowed(bool allowed)