53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
import call from './call';
|
|
|
|
export default class Auth {
|
|
constructor() {
|
|
this.isLoggedIn = false;
|
|
this.user = null;
|
|
this.user_image = null;
|
|
this.cookie = null;
|
|
|
|
this.cookie = Object.fromEntries(
|
|
document.cookie
|
|
.split('; ')
|
|
.map(part => part.split('='))
|
|
.map(d => [d[0], decodeURIComponent(d[1])])
|
|
);
|
|
|
|
this.isLoggedIn = this.cookie.user_id && this.cookie.user_id !== 'Guest';
|
|
}
|
|
|
|
async login(email, password) {
|
|
localStorage.removeItem('current_team');
|
|
let res = await call('login', {
|
|
usr: email,
|
|
pwd: password
|
|
});
|
|
if (res) {
|
|
await window.$account.fetchAccount();
|
|
let last_used_team = window.$account.team.last_used_team;
|
|
let team = window.$account.team.name;
|
|
|
|
if (last_used_team && last_used_team != team) {
|
|
team = last_used_team;
|
|
window.$account.switchTeam(last_used_team);
|
|
}
|
|
localStorage.setItem('current_team', team);
|
|
this.isLoggedIn = true;
|
|
window.location.reload();
|
|
return res;
|
|
}
|
|
return false;
|
|
}
|
|
async logout() {
|
|
localStorage.removeItem('current_team');
|
|
await call('logout');
|
|
window.location.reload();
|
|
}
|
|
async resetPassword(email) {
|
|
return await call('jcloud.api.account.send_reset_password_email', {
|
|
email
|
|
});
|
|
}
|
|
}
|