- primo aggiornamento myreccard

- aggiunta sito germogliamo.app
- aggiornato login con il parametro "browser_random" che serve per fare un login anche su 2 pagine contemporaneamente.
This commit is contained in:
Surya Paolo
2025-11-25 17:45:17 +01:00
parent e9fa53a637
commit b37204f543
104 changed files with 6364 additions and 453 deletions

View File

@@ -68,6 +68,7 @@ async function generateStream(
'Content-Type': 'application/json',
'x-auth': userStore.x_auth_token,
'x-refrtok': userStore.refreshToken,
'x-browser-random': userStore.browser_random,
},
body: JSON.stringify(payload),
signal: options?.signal,
@@ -137,6 +138,7 @@ async function Request(
'Content-Type': isFormData ? 'multipart/form-data' : 'application/json',
'x-auth': userStore.x_auth_token,
'x-refrtok': userStore.refreshToken,
'x-browser-random': userStore.browser_random,
},
...responsedata,
};
@@ -214,16 +216,16 @@ async function Request(
} else {
throw new Error(`Unsupported request type: ${type}`);
}
const x_auth_token = String(response.headers['x-auth'] || '');
// Gestione aggiornamento token se necessario
const setAuthToken = path === '/updatepwd' || path === '/users/login';
//const setAuthToken = path === '/updatepwd' || path === '/users/login';
const setAuthToken = !!x_auth_token;
if (
response &&
response.status === 200 &&
(setAuthToken || path === '/users/login')
response && setAuthToken
) {
const x_auth_token = String(response.headers['x-auth'] || '');
const refreshToken = String(response.headers['x-refrtok'] || '');
const browser_random = userStore.getBrowserRandom()
if (!x_auth_token) {
userStore.setServerCode(toolsext.ERR_AUTHENTICATION);
}
@@ -232,9 +234,10 @@ async function Request(
localStorage.setItem(toolsext.localStorage.token, x_auth_token);
localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken);
}
userStore.setAuth(x_auth_token, refreshToken);
userStore.setAuth(x_auth_token, refreshToken, browser_random);
localStorage.setItem(toolsext.localStorage.token, x_auth_token);
localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken);
localStorage.setItem(toolsext.localStorage. browser_random, browser_random);
}
globalStore.setStateConnection('online');

View File

@@ -156,7 +156,7 @@ export const Api = {
const newAccessToken = await this.refreshToken();
if (newAccessToken) {
userStore.setAuth(newAccessToken, userStore.refreshToken);
userStore.setAuth(newAccessToken, userStore.refreshToken, userStore.browser_random);
if (!evitaloop) {
console.log('Nuovo token ottenuto. Riprovo la richiesta...');

View File

@@ -4798,6 +4798,7 @@ export const tools = {
return [
{ name: 'x-auth', value: userStore.x_auth_token },
{ name: 'x-refrtok', value: userStore.refreshToken },
{ name: 'x-browser-random', value: userStore.browser_random },
];
},
@@ -11417,8 +11418,7 @@ export const tools = {
},
convertinbspInSpazi(str: string) {
return str
.replace(/ /g, ' ') // Converti   in spazi normali
return str.replace(/ /g, ' '); // Converti   in spazi normali
},
convertinbspInSpaziNormali(str: string) {
@@ -11428,6 +11428,13 @@ export const tools = {
.trim();
},
getTokenRandom() {
// Soluzione 1: Usando Web Crypto API (moderno)
const array = new Uint8Array(32);
crypto.getRandomValues(array);
return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');
},
// FINE !
// getLocale() {

View File

@@ -125,6 +125,7 @@ export const toolsext = {
userId: 'uid',
token: 'tk',
refreshToken: 'rt',
browser_random: 'brr',
username: 'uname',
lastUserLogged: 'lul',
name: 'nm',

View File

@@ -212,6 +212,7 @@ export const useUserStore = defineStore('UserStore', {
servercode: 0,
resStatus: 0,
x_auth_token: '',
browser_random: '',
refreshToken: '',
isLogged: false,
isAdmin: false,
@@ -993,6 +994,7 @@ export const useUserStore = defineStore('UserStore', {
this.isLogged = false;
this.x_auth_token = '';
this.refreshToken = '';
this.browser_random = '';
console.log('SBIANCA VUOTO ------------ x_auth_token');
return true;
@@ -1443,6 +1445,7 @@ export const useUserStore = defineStore('UserStore', {
access: 'auth',
token: this.x_auth_token,
refreshToken: this.refreshToken,
browser_random: this.browser_random,
data_login: tools.getDateNow(),
});
} catch (e) {
@@ -1472,6 +1475,7 @@ export const useUserStore = defineStore('UserStore', {
);
else tools.localStSetItem(toolsext.localStorage.img, '');
localStorage.setItem(toolsext.localStorage.token, this.x_auth_token);
localStorage.setItem(toolsext.localStorage.browser_random, this.getBrowserRandom());
// console.log('updateLocalStorage: salva refreshtoken', this.refreshToken)
localStorage.setItem(toolsext.localStorage.refreshToken, this.refreshToken);
localStorage.setItem(
@@ -1525,6 +1529,7 @@ export const useUserStore = defineStore('UserStore', {
.then((hashedPassword: string) => {
authData.lang = mylang;
authData.password = String(hashedPassword);
authData.br = this.getBrowserRandom();
this.setServerCode(tools.CALLING);
@@ -1553,6 +1558,7 @@ export const useUserStore = defineStore('UserStore', {
tools.localStSetItem(toolsext.localStorage.name, newuser.name);
tools.localStSetItem(toolsext.localStorage.surname, newuser.surname);
localStorage.setItem(toolsext.localStorage.token, this.x_auth_token);
localStorage.setItem(toolsext.localStorage.browser_random, this.getBrowserRandom());
localStorage.setItem(
toolsext.localStorage.refreshToken,
this.refreshToken
@@ -1598,6 +1604,7 @@ export const useUserStore = defineStore('UserStore', {
access: 'auth',
token: x_auth_token,
refreshToken,
browser_random: this.getBrowserRandom(),
data_login: tools.getDateNow(),
};
@@ -1625,8 +1632,9 @@ export const useUserStore = defineStore('UserStore', {
// console.log('setRefreshToken', refreshToken)
},
setAuth(x_auth_token: string, refreshToken: string) {
setAuth(x_auth_token: string, refreshToken: string, browser_random: string) {
this.x_auth_token = x_auth_token;
this.browser_random = browser_random;
this.setRefreshToken(refreshToken);
},
@@ -1681,6 +1689,7 @@ export const useUserStore = defineStore('UserStore', {
password: authData.password.trim(),
lang: this.lang,
options,
br: this.getBrowserRandom(),
};
if (import.meta.env.VITE_DEBUG === '1') {
@@ -1745,6 +1754,7 @@ export const useUserStore = defineStore('UserStore', {
localStorage.removeItem(toolsext.localStorage.expirationDate);
localStorage.removeItem(toolsext.localStorage.token);
// localStorage.removeItem(toolsext.localStorage.browser_random);
localStorage.removeItem(toolsext.localStorage.userId);
localStorage.removeItem(toolsext.localStorage.username);
localStorage.removeItem(toolsext.localStorage.name);
@@ -1852,10 +1862,11 @@ export const useUserStore = defineStore('UserStore', {
const token = localStorage.getItem(toolsext.localStorage.token);
let refreshToken = localStorage.getItem(toolsext.localStorage.refreshToken);
let browser_random = localStorage.getItem(toolsext.localStorage.browser_random);
if (!refreshToken) refreshToken = '';
if (token) {
this.setAuth(token, refreshToken);
this.setAuth(token, refreshToken, browser_random);
if (globalStore.site.confpages?.enableTokenExpired) {
if (token && refreshToken) {
isLogged = true;
@@ -2631,5 +2642,15 @@ export const useUserStore = defineStore('UserStore', {
}
return null;
},
getBrowserRandom() {
if (!this.browser_random) {
this.browser_random = localStorage.getItem(toolsext.localStorage.browser_random);
}
if (!this.browser_random) {
this.browser_random = tools.getTokenRandom()
}
return this.browser_random;
}
},
});

View File

@@ -1158,6 +1158,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
others: {
userId: userStore.my._id,
access: userStore.my.tokens![0].access,
browser_random: userStore.getBrowserRandom()
},
};
@@ -1182,8 +1183,10 @@ export const useGlobalStore = defineStore('GlobalStore', {
async deleteSubscriptionToServer() {
console.log('DeleteSubscriptionToServer: ');
const userStore = useUserStore();
try {
return Api.SendReq('/subscribe/del', 'DELETE', null);
return Api.SendReq('/subscribe/del', 'DELETE', {browser_random: userStore.getBrowserRandom()});
} catch (e) {
console.error('deleteSubscriptionToServer');
}