- catalogo

- corretto logica del RefreshToken che non richiedeva il nuovo token, quindi scadeva tutte le volte, richiedendo sempre l'accesso !
This commit is contained in:
Surya Paolo
2025-01-07 17:17:08 +01:00
parent ce86dd51a8
commit 3734762a8b
72 changed files with 2112 additions and 3592650 deletions

View File

@@ -129,6 +129,37 @@ export const Api = {
throw error
}
},
async checkTokenScaduto(status: number, evitaloop: boolean, resolve: any, reject: any, url: string, method: string, mydata: any, setAuthToken = false) {
const userStore = useUserStore()
const $router = useRouter()
if (status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) {
try {
console.log('Token Scaduto.')
const newAccessToken = await this.refreshToken();
if (newAccessToken) {
userStore.setAuth(newAccessToken, userStore.refreshToken);
if (!evitaloop) {
console.log('uso il RefreshToken...')
return resolve(this.SendReq(url, method, mydata, setAuthToken, true));
}
} else {
$router.push('/signin')
}
} catch (err2: any) {
console.error('err2, Token Invalido', err2)
if (err2?.code === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) {
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
userStore.setAuth('', '')
return reject({ code: toolsext.ERR_AUTHENTICATION })
}
}
return null
}
},
async SendReqBase(url: string, method: string, mydata: any, setAuthToken = false, evitaloop = false, myformdata?: any, responsedata?: any): Promise<Types.AxiosSuccess | Types.AxiosError> {
@@ -146,8 +177,8 @@ export const Api = {
userStore.setResStatus(0)
return new Promise((resolve, reject) => sendRequest(url, method, mydataout, myformdata, responsedata)
.then((res) => {
setTimeout(() => {
.then(async (res) => {
setTimeout( () => {
if (method === 'get') {
globalStore.connData.downloading_server = 0
} else {
@@ -164,6 +195,12 @@ export const Api = {
return reject({ code: toolsext.ERR_AUTHENTICATION })
}
}
const ret = await this.checkTokenScaduto(res.status, evitaloop, resolve, reject, url, method, mydataout, setAuthToken)
if (ret) {
return ret
}
if (tools.isDebug())
console.log(' ----> ', res)
return resolve(res)
@@ -178,27 +215,9 @@ export const Api = {
}
}, 1000)
if (error.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) {
try {
console.log('Token Scaduto.')
const newAccessToken = await this.refreshToken();
if (newAccessToken) {
userStore.setAuth(newAccessToken, userStore.refreshToken);
if (!evitaloop) {
console.log('uso il RefreshToken...')
return resolve(this.SendReq(url, method, mydata, setAuthToken, true));
}
} else {
$router.push('/signin')
}
} catch (err2: any) {
console.error('err2, Token Invalido', err2)
if (err2?.code === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) {
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
userStore.setAuth('', '')
return reject({ code: toolsext.ERR_AUTHENTICATION })
}
}
const ret = await this.checkTokenScaduto(error.status, evitaloop, resolve, reject, url, method, mydataout, setAuthToken)
if (ret) {
return ret
}
console.log('ERROR', error)
@@ -206,6 +225,7 @@ export const Api = {
}))
},
/**
* Creates a Promise that resolves after a specified number of milliseconds.
* Useful for creating delayed operations or pause in async functions.
@@ -229,7 +249,7 @@ export const Api = {
* // Usage with Promise chaining
* delay(1000).then(() => console.log('1 second passed'));
*/
async delay (ms: number): Promise<void> {
async delay(ms: number): Promise<void> {
// Input validation
if (ms < 0) {
throw new Error('Delay time cannot be negative');
@@ -253,7 +273,13 @@ export const Api = {
const response = await this.SendReqBase(url, method, mydata, setAuthToken, evitaloop, myformdata, responsedata);
return response;
} catch (error: any) {
if (retryCount > 0) {
let riprova = true
try {
riprova = (error.status !== 403);
} catch (e) {
}
if (retryCount > 0 && riprova) {
// (!error.hasOwnProperty('data') || (error.hasOwnProperty('data') && !error.data.error.hasOwnProperty('code')) && (!error.hasOwnProperty('msgerr')))
console.log(`❌❌❌ Retrying request. Attempts remaining: ${retryCount}`);
await this.delay(retryDelay);