Files
CloudrevePlus-frontend/src/middleware/Auth.ts
2024-02-25 08:27:01 +08:00

53 lines
1.5 KiB
TypeScript

const Auth = {
isAuthenticated: false,
authenticate(cb: any) {
Auth.SetUser(cb);
Auth.isAuthenticated = true;
},
GetUser() {
return JSON.parse(localStorage.getItem("user") || "null");
},
SetUser(newUser: any) {
localStorage.setItem("user", JSON.stringify(newUser));
},
Check(): boolean {
if (Auth.isAuthenticated) {
return true;
}
if (localStorage.getItem("user") !== null) {
return !Auth.GetUser().anonymous;
}
return false;
},
signout() {
Auth.isAuthenticated = false;
const oldUser = Auth.GetUser();
oldUser.id = 0;
localStorage.setItem("user", JSON.stringify(oldUser));
},
SetPreference(key: string, value: any) {
let preference = JSON.parse(
localStorage.getItem("user_preference") || "{}"
);
preference = preference == null ? {} : preference;
preference[key] = value;
localStorage.setItem("user_preference", JSON.stringify(preference));
},
GetPreference(key: string): any | null {
const preference = JSON.parse(
localStorage.getItem("user_preference") || "{}"
);
if (preference && preference[key] !== undefined) {
return preference[key];
}
return null;
},
GetPreferenceWithDefault(key: string, defaultVal: any): any {
return Auth.GetPreference(key) !== null
? Auth.GetPreference(key)
: defaultVal;
},
};
export default Auth;