import { observable, action, flow } from 'mobx'; import {RESOURCE} from "../common/fetch"; import {Message} from "../common/message"; import {navigate_login, navigate_replace} from "../common/utils"; let md5 = require('md5'); let sha1 = require('js-sha1'); class User { @observable isFirstLogin = localStorage.getItem('isFirstLogin') === 'true'; @observable user = {}; @observable loading = false; constructor() { this.user = JSON.parse(localStorage.getItem('paisong') || "{}"); } @action login = flow(function* ({ email, password }){ this.loading = true; try { let data = yield RESOURCE.post('/api/v1/credential/Login',{ email, password:sha1(md5(password)) }); localStorage.setItem('paisong',JSON.stringify(data.data)); this.user = data.data; let { data:{ firstLogin } } = yield RESOURCE.post('/api/v1/credential/IsFirstLogin',{ email: data.data.email}); this.isFirstLogin = firstLogin; localStorage.setItem('isFirstLogin',this.isFirstLogin); navigate_replace('/firewall'); }catch (e) { if(e.status === 403) { Message.error('用户名或密码错误!'); }else { Message.alert(e); } } this.loading = false; }.bind(this)); getToken() { let Authorization = this.user.loginToken; return Authorization ? { Authorization } : {}; } logout() { navigate_login(); localStorage.removeItem('paisong'); localStorage.removeItem('isFirstLogin'); } } export const userStore = new User();