token checking

This commit is contained in:
Jan Prochazka
2024-08-14 15:34:08 +02:00
parent 83ce5710ae
commit a9f9085daa
3 changed files with 13 additions and 5 deletions

View File

@@ -18,6 +18,7 @@ const { connectionHasPermission, testConnectionPermission } = require('../utilit
const pipeForkLogs = require('../utility/pipeForkLogs'); const pipeForkLogs = require('../utility/pipeForkLogs');
const requireEngineDriver = require('../utility/requireEngineDriver'); const requireEngineDriver = require('../utility/requireEngineDriver');
const { getAuthProviderById } = require('../auth/authProvider'); const { getAuthProviderById } = require('../auth/authProvider');
const { startTokenChecking } = require('../utility/authProxy');
const logger = getLogger('connections'); const logger = getLogger('connections');
@@ -394,23 +395,27 @@ module.exports = {
const { conid, state, redirectUri } = req.query; const { conid, state, redirectUri } = req.query;
const connection = await this.getCore({ conid }); const connection = await this.getCore({ conid });
const driver = requireEngineDriver(connection); const driver = requireEngineDriver(connection);
const authUrl = await driver.getRedirectAuthUrl(connection, { const authResp = await driver.getRedirectAuthUrl(connection, {
redirectUri, redirectUri,
state, state,
client: 'web', client: 'web',
}); });
res.redirect(authUrl); res.redirect(authResp.url);
}, },
dbloginApp_meta: true, dbloginApp_meta: true,
async dbloginApp({ conid, state }) { async dbloginApp({ conid, state }) {
const connection = await this.getCore({ conid }); const connection = await this.getCore({ conid });
const driver = requireEngineDriver(connection); const driver = requireEngineDriver(connection);
const url = await driver.getRedirectAuthUrl(connection, { const resp = await driver.getRedirectAuthUrl(connection, {
state, state,
client: 'app', client: 'app',
}); });
return { url }; startTokenChecking(resp.sid, async token => {
const volatile = await this.saveVolatile({ conid, accessToken: token });
socket.emit('got-volatile-token', { savedConId: conid, volatileConId: volatile._id });
});
return resp;
}, },
dbloginToken_meta: true, dbloginToken_meta: true,

View File

@@ -10,8 +10,11 @@ async function authProxyGetTokenFromCode(options) {
return null; return null;
} }
function startTokenChecking(sid, callback) {}
module.exports = { module.exports = {
isAuthProxySupported, isAuthProxySupported,
authProxyGetRedirectUrl, authProxyGetRedirectUrl,
authProxyGetTokenFromCode, authProxyGetTokenFromCode,
startTokenChecking,
}; };

View File

@@ -149,7 +149,7 @@ export interface EngineDriver {
summaryCommand(pool, command, row): Promise<void>; summaryCommand(pool, command, row): Promise<void>;
startProfiler(pool, options): Promise<any>; startProfiler(pool, options): Promise<any>;
stopProfiler(pool, profiler): Promise<void>; stopProfiler(pool, profiler): Promise<void>;
getRedirectAuthUrl(connection, options): Promise<string>; getRedirectAuthUrl(connection, options): Promise<{ url: string; sid: string }>;
getAuthTokenFromCode(connection, options): Promise<string>; getAuthTokenFromCode(connection, options): Promise<string>;
getAccessTokenFromAuth(connection, req): Promise<string | null>; getAccessTokenFromAuth(connection, req): Promise<string | null>;