重构项目架构,引入启动页(SplashActivity)检查激活状态,未激活设备引导至激活页(ActivationActivity)完成provision+token流程。集成Retrofit+RxJava3网络层、Room数据库、Lifecycle组件、MMKV等依赖,升级OkHttp/Gson版本,并将构建配置从旧项目全面迁移至新项目结构。
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { defineStore } from 'pinia';
|
|
import { ref } from 'vue';
|
|
import { adminLogin, type AdminLoginResult } from '@/api/admin';
|
|
|
|
const TOKEN_KEY = 'admin_token';
|
|
const USER_KEY = 'admin_user';
|
|
|
|
export const useUserStore = defineStore('user', () => {
|
|
const token = ref<string>(localStorage.getItem(TOKEN_KEY) || '');
|
|
const username = ref<string>(localStorage.getItem(USER_KEY) || '');
|
|
|
|
function setToken(value: string) {
|
|
if (!value) return;
|
|
token.value = value;
|
|
localStorage.setItem(TOKEN_KEY, value);
|
|
}
|
|
|
|
function setUser(value: string) {
|
|
username.value = value;
|
|
localStorage.setItem(USER_KEY, value);
|
|
}
|
|
|
|
/** 登录:使用管理员账号密码,成功后将返回的 admt_ 令牌保存到本地。 */
|
|
async function login(usernameValue: string, password: string) {
|
|
const result: AdminLoginResult = await adminLogin(usernameValue, password);
|
|
setToken(result.token);
|
|
setUser(result.username);
|
|
return result;
|
|
}
|
|
|
|
function logout() {
|
|
token.value = '';
|
|
username.value = '';
|
|
localStorage.removeItem(TOKEN_KEY);
|
|
localStorage.removeItem(USER_KEY);
|
|
}
|
|
|
|
return { token, username, setToken, setUser, login, logout };
|
|
});
|