You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

121 lines
2.9 KiB

import { defineStore } from 'pinia';
const IDENTITY_LABELS = {
1: "超管",
2: "管理员",
3: "代理",
4: "运营"
};
function parseComma(val) {
if (!val) return [];
return val.split(",").map((s) => s.trim()).filter(Boolean);
}
function saveToStorage(data) {
}
const useAuthStore = defineStore("auth", {
state: () => ({
token: "",
account: "",
identity: 0,
access: [],
apps: [],
regions: [],
products: [],
appbinds: [],
currentAppId: 0,
siteTitle: ""
}),
getters: {
isSuperAdmin() {
return this.identity === 1;
},
isAdmin() {
return this.identity === 1 || this.identity === 2;
},
identityLabel() {
return IDENTITY_LABELS[this.identity] ?? "";
},
isLoggedIn() {
return !!this.token;
}
},
actions: {
setLoginData(data) {
this.token = data.token;
this.account = data.account;
this.identity = data.identity;
this.access = parseComma(data.access);
this.apps = parseComma(data.apps);
this.regions = parseComma(data.regions);
this.products = parseComma(data.products);
this.appbinds = data.appbinds ?? [];
if (this.appbinds.length > 0 && !this.currentAppId) {
this.currentAppId = this.appbinds[0].id;
}
saveToStorage({
token: this.token,
account: this.account,
identity: this.identity,
access: this.access,
apps: this.apps,
regions: this.regions,
products: this.products,
appbinds: this.appbinds,
currentAppId: this.currentAppId,
siteTitle: this.siteTitle
});
},
setCurrentApp(id) {
this.currentAppId = id;
saveToStorage({
token: this.token,
account: this.account,
identity: this.identity,
access: this.access,
apps: this.apps,
regions: this.regions,
products: this.products,
appbinds: this.appbinds,
currentAppId: this.currentAppId,
siteTitle: this.siteTitle
});
},
setSiteTitle(title) {
this.siteTitle = title;
saveToStorage({
token: this.token,
account: this.account,
identity: this.identity,
access: this.access,
apps: this.apps,
regions: this.regions,
products: this.products,
appbinds: this.appbinds,
currentAppId: this.currentAppId,
siteTitle: this.siteTitle
});
},
logout() {
this.token = "";
this.account = "";
this.identity = 0;
this.access = [];
this.apps = [];
this.regions = [];
this.products = [];
this.appbinds = [];
this.currentAppId = 0;
this.siteTitle = "";
},
restore() {
return;
},
hasAccess(pageId) {
if (this.identity === 1) return true;
return this.access.includes(pageId);
}
}
});
export { useAuthStore as u };
//# sourceMappingURL=auth-QFkCoU1C.mjs.map