46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
// 简单的本地账号系统:用户数据保存在 localStorage
|
|
(function () {
|
|
const USERS_KEY = 'tp_users';
|
|
const SESSION_KEY = 'tp_session';
|
|
|
|
function getUsers() {
|
|
try { return JSON.parse(localStorage.getItem(USERS_KEY)) || {}; }
|
|
catch (e) { return {}; }
|
|
}
|
|
function saveUsers(users) {
|
|
localStorage.setItem(USERS_KEY, JSON.stringify(users));
|
|
}
|
|
|
|
const Auth = {
|
|
currentUser() {
|
|
return localStorage.getItem(SESSION_KEY) || null;
|
|
},
|
|
login(username, password) {
|
|
const users = getUsers();
|
|
if (!users[username]) return { ok: false, msg: '用户不存在,请先注册' };
|
|
if (users[username] !== password) return { ok: false, msg: '密码错误' };
|
|
localStorage.setItem(SESSION_KEY, username);
|
|
return { ok: true };
|
|
},
|
|
register(username, password) {
|
|
if (!username || !password) return { ok: false, msg: '用户名和密码不能为空' };
|
|
const users = getUsers();
|
|
if (users[username]) return { ok: false, msg: '用户已存在' };
|
|
users[username] = password;
|
|
saveUsers(users);
|
|
localStorage.setItem(SESSION_KEY, username);
|
|
return { ok: true };
|
|
},
|
|
logout() {
|
|
localStorage.removeItem(SESSION_KEY);
|
|
},
|
|
// 每个用户独立的数据命名空间
|
|
dataKey(name) {
|
|
const u = this.currentUser();
|
|
return u ? `tp_data_${u}_${name}` : null;
|
|
}
|
|
};
|
|
|
|
window.Auth = Auth;
|
|
})();
|