This commit is contained in:
j3d1 2025-09-24 22:10:55 +02:00
parent 17bfb84a94
commit 2fe8d14c2c
35 changed files with 1976 additions and 2134 deletions

View file

@ -3,6 +3,9 @@ import router from '@/router';
import FallBackResolver from "@/dns";
import NeighborsCache from "@/neigbors";
import {createNullAuth, createSignAuth, createTokenAuth, ServerSet, ServerSetUnion} from "@/federation";
import {parseIdentityRecord, serializeIdentityRecord} from "@/identity";
//import sharedStatePlugin from "@/../extras/shared-state-plugin";
//import persistentStatePlugin from "@/../extras/persistent-state-plugin";
export default createStore({
@ -29,30 +32,6 @@ export default createStore({
storage_locations: [],
},
mutations: {
setUser(state, user) {
state.user = user;
if (state.remember)
localStorage.setItem('user', user);
},
setToken(state, token) {
state.token = token;
if (state.remember)
localStorage.setItem('token', token);
},
setKey(state, keypair) {
state.keypair = nacl.crypto_sign_keypair_from_seed(nacl.from_hex(keypair))
if (state.remember)
localStorage.setItem('keypair', nacl.to_hex(state.keypair.signSk).slice(0, 64))
},
setRemember(state, remember) {
state.remember = remember;
if (!remember) {
localStorage.removeItem('user');
localStorage.removeItem('token');
localStorage.removeItem('keypair');
}
localStorage.setItem('remember', remember);
},
setInventoryItems(state, {url, items}) {
state.item_map[url] = items;
},
@ -86,6 +65,45 @@ export default createStore({
setFiles(state, files) {
state.files = files;
},
setUser(state, user) {
state.user = user;
if (state.remember)
localStorage.setItem('user', user);
},
setToken(state, token) {
state.token = token;
if (state.remember)
localStorage.setItem('token', token);
},
setKey(state, keypair) {
state.keypair = nacl.crypto_sign_keypair_from_seed(nacl.from_hex(keypair))
if (state.remember)
localStorage.setItem('keypair', nacl.to_hex(state.keypair.signSk).slice(0, 64))
},
setRemember(state, remember) {
state.remember = remember;
if (!remember) {
localStorage.removeItem('user');
localStorage.removeItem('token');
localStorage.removeItem('keypair');
}
localStorage.setItem('remember', remember);
},
setUserFromIdentityRecord(state, {user, keypair}) {
try {
localStorage.removeItem('user');
localStorage.removeItem('token');
localStorage.removeItem('keypair');
state.user = user;
state.keypair = keypair;
if (state.remember) {
localStorage.setItem('user', user);
localStorage.setItem('keypair', key)
}
} catch (e) {
console.error('Invalid identity record')
}
},
logout(state) {
state.user = null;
state.token = null;
@ -357,6 +375,9 @@ export default createStore({
state.last_load.categories = Date.now()
state.last_load.availability_policies = Date.now()
return data
},
async userIdentityRecord({state}, {password}) {
return await serializeIdentityRecord(state.user, state.keypair, password);
}
},
getters: {
@ -371,7 +392,7 @@ export default createStore({
state.local_loaded = true
}
return state.user !== null && state.token !== null;
return state.user !== null && (state.token !== null || state.keypair !== null)
},
signAuth(state) {
return createSignAuth(state.user, state.keypair.signSk)