64 lines
1.4 KiB
TypeScript
64 lines
1.4 KiB
TypeScript
import {Injectable} from '@angular/core';
|
|
import {User} from '../class/User';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class LocalStorageService {
|
|
|
|
constructor() {
|
|
}
|
|
|
|
// 30s
|
|
readonly place = 30 * 1000;
|
|
|
|
getToken(): string {
|
|
return localStorage.getItem('token');
|
|
}
|
|
|
|
setToken(token: string) {
|
|
localStorage.setItem('t', new Date().valueOf().toString());
|
|
localStorage.setItem('token', token);
|
|
}
|
|
|
|
removeToken() {
|
|
localStorage.removeItem('token');
|
|
}
|
|
|
|
isLogin() {
|
|
return this.getToken() != null;
|
|
}
|
|
|
|
setUser(user: User) {
|
|
// TODO: 简单加个密
|
|
localStorage.setItem('t', new Date().valueOf().toString());
|
|
return localStorage.setItem('user', JSON.stringify(user));
|
|
}
|
|
|
|
getUser(): User {
|
|
if (!this.checkNeedNet()) {
|
|
return JSON.parse(localStorage.getItem('user'));
|
|
}
|
|
}
|
|
|
|
removeUser() {
|
|
return localStorage.removeItem('user');
|
|
}
|
|
|
|
clear() {
|
|
localStorage.removeItem('token');
|
|
localStorage.removeItem('user');
|
|
return localStorage.removeItem('t');
|
|
}
|
|
|
|
checkNeedNet() {
|
|
const t: number = Number.parseInt(localStorage.getItem('t'), 10);
|
|
if (isNaN(t) || new Date().valueOf() - t > this.place) {
|
|
localStorage.removeItem('t');
|
|
localStorage.removeItem('user');
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|