mirror of
https://github.com/samuelthomas2774/nxapi.git
synced 2026-03-21 18:04:10 -05:00
Fix getting auth data from API proxy returns stale data
This commit is contained in:
parent
3e0ba063f8
commit
6be0ca949a
|
|
@ -7,7 +7,7 @@ import bodyParser from 'body-parser';
|
|||
import type { Arguments as ParentArguments } from './index.js';
|
||||
import CoralApi, { CoralApiInterface, CoralErrorResponse } from '../../api/coral.js';
|
||||
import { Announcement, CoralStatus, CurrentUser, Friend, FriendCodeUrl, FriendCodeUser, Presence } from '../../api/coral-types.js';
|
||||
import { AuthPolicy, AuthToken, ZncPresenceEventStreamEvent } from '../../api/znc-proxy.js';
|
||||
import ZncProxyApi, { AuthPolicy, AuthToken, ZncPresenceEventStreamEvent } from '../../api/znc-proxy.js';
|
||||
import createDebug from '../../util/debug.js';
|
||||
import { ArgumentsCamelCase, Argv, YargsArguments } from '../../util/yargs.js';
|
||||
import { initStorage } from '../../util/storage.js';
|
||||
|
|
@ -319,7 +319,11 @@ class Server extends HttpServer {
|
|||
}
|
||||
|
||||
async handleAuthRequest({user}: RequestDataWithUser) {
|
||||
return user.data;
|
||||
if (user.nso instanceof ZncProxyApi) {
|
||||
return user.nso.fetch('/auth');
|
||||
} else {
|
||||
return user.data;
|
||||
}
|
||||
}
|
||||
|
||||
async handleTokenRequest({policy, token}: RequestData) {
|
||||
|
|
|
|||
|
|
@ -157,6 +157,8 @@ async function renewToken(
|
|||
|
||||
await storage.setItem('NsoToken.' + na_session_token, existingToken);
|
||||
renew_token_data.existingToken = existingToken;
|
||||
|
||||
return existingToken;
|
||||
} catch (err) {
|
||||
await attempt?.recordError(err);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import * as crypto from 'node:crypto';
|
||||
import * as persist from 'node-persist';
|
||||
import { Response } from 'undici';
|
||||
import createDebug from '../util/debug.js';
|
||||
import CoralApi, { CoralApiInterface, Result } from '../api/coral.js';
|
||||
import ZncProxyApi from '../api/znc-proxy.js';
|
||||
import { Announcements, Friends, Friend, GetActiveEventResult, CoralSuccessResponse, WebService, WebServices } from '../api/coral-types.js';
|
||||
import { Announcements, Friends, Friend, GetActiveEventResult, CoralSuccessResponse, WebService, WebServices, CoralError } from '../api/coral-types.js';
|
||||
import { getToken, SavedToken } from './auth/coral.js';
|
||||
import type { Store } from '../app/main/index.js';
|
||||
import { NintendoAccountUser } from '../api/na.js';
|
||||
|
|
@ -72,6 +73,16 @@ export default class Users<T extends UserData> {
|
|||
|
||||
const user = new CoralUser(nso, data, announcements, friends, webservices, active_event);
|
||||
|
||||
if (nso instanceof CoralApi && nso.onTokenExpired) {
|
||||
const renewToken = nso.onTokenExpired;
|
||||
|
||||
nso.onTokenExpired = async (error?: CoralError, response?: Response) => {
|
||||
const auth_data = await renewToken(error, response) as SavedToken;
|
||||
user.data = auth_data;
|
||||
return auth_data;
|
||||
};
|
||||
}
|
||||
|
||||
if (store) {
|
||||
await maybeUpdateWebServicesListCache(cached_webservices, store, data.user, webservices);
|
||||
user.onUpdatedWebServices = webservices => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user