core: fix login gets stuck on error

This commit is contained in:
Abdullah Atta
2024-03-06 11:28:45 +05:00
parent f4064b7939
commit b3251eb016

View File

@@ -129,39 +129,43 @@ class UserManager {
) { ) {
if (!email || !password) throw new Error("email & password are required."); if (!email || !password) throw new Error("email & password are required.");
const token = await this.tokenManager.getAccessToken(); const token = await this.tokenManager.getToken();
if (!token) throw new Error("Unauthorized."); if (!token) throw new Error("No token found.");
email = email.toLowerCase(); email = email.toLowerCase();
if (!hashedPassword) { if (!hashedPassword) {
hashedPassword = await this._storage.hash(password, email); hashedPassword = await this._storage.hash(password, email);
} }
try {
await this.tokenManager.saveToken(
await http.post(
`${constants.AUTH_HOST}${ENDPOINTS.token}`,
{
grant_type: "mfa_password",
client_id: "notesnook",
scope: "notesnook.sync offline_access IdentityServerApi",
password: hashedPassword
},
token.access_token
)
);
await this.tokenManager.saveToken( const user = await this.fetchUser();
await http.post( if (!user) throw new Error("Unauthorized.");
`${constants.AUTH_HOST}${ENDPOINTS.token}`,
{
grant_type: "mfa_password",
client_id: "notesnook",
scope: "notesnook.sync offline_access IdentityServerApi",
password: hashedPassword
},
token
)
);
const user = await this.fetchUser(); if (!sessionExpired) {
if (!user) throw new Error("Unauthorized."); await this._storage.write("lastSynced", 0);
}
await this._storage.deriveCryptoKey(`_uk_@${user.email}`, { await this._storage.deriveCryptoKey(`_uk_@${user.email}`, {
password, password,
salt: user.salt salt: user.salt
}); });
if (!sessionExpired) { EV.publish(EVENTS.userLoggedIn, user);
await this._storage.write("lastSynced", 0); } catch (e) {
await this.tokenManager.saveToken(token);
throw e;
} }
EV.publish(EVENTS.userLoggedIn, user);
} }
/** /**