electron auth proxy WIP

This commit is contained in:
Jan Prochazka 2024-08-14 14:23:00 +02:00
parent ddf385caac
commit 83ce5710ae
4 changed files with 33 additions and 10 deletions

View File

@ -37,7 +37,8 @@ function authMiddleware(req, res, next) {
'/stream',
'storage/get-connections-for-login-page',
'auth/get-providers',
'/connections/dblogin',
'/connections/dblogin-web',
'/connections/dblogin-app',
'/connections/dblogin-auth',
'/connections/dblogin-auth-token',
];

View File

@ -386,18 +386,33 @@ module.exports = {
return res;
},
dblogin_meta: {
dbloginWeb_meta: {
raw: true,
method: 'get',
},
async dblogin(req, res) {
async dbloginWeb(req, res) {
const { conid, state, redirectUri } = req.query;
const connection = await this.getCore({ conid });
const driver = requireEngineDriver(connection);
const authUrl = await driver.getRedirectAuthUrl(connection, { redirectUri, state });
const authUrl = await driver.getRedirectAuthUrl(connection, {
redirectUri,
state,
client: 'web',
});
res.redirect(authUrl);
},
dbloginApp_meta: true,
async dbloginApp({ conid, state }) {
const connection = await this.getCore({ conid });
const driver = requireEngineDriver(connection);
const url = await driver.getRedirectAuthUrl(connection, {
state,
client: 'app',
});
return { url };
},
dbloginToken_meta: true,
async dbloginToken({ code, conid, strmid, redirectUri, sid }) {
try {

View File

@ -97,11 +97,19 @@ async function processApiResponse(route, args, resp) {
const state = `dbg-dblogin:${strmid}:${resp.detail.conid}`;
localStorage.setItem('dbloginState', state);
if (getElectron()) {
const dbloginApp = await apiCall('connections/dblogin-app', {
conid: resp.detail.conid,
state,
});
openWebLink(dbloginApp.url);
} else {
openWebLink(
`connections/dblogin?conid=${resp.detail.conid}&state=${encodeURIComponent(state)}&redirectUri=${
`connections/dblogin-web?conid=${resp.detail.conid}&state=${encodeURIComponent(state)}&redirectUri=${
location.origin + location.pathname
}`
);
}
} else if (!isDatabaseLoginVisible()) {
showModal(DatabaseLoginModal, resp.detail);
}

View File

@ -141,7 +141,6 @@ const driver = {
if (connection.authType != 'msentra') return null;
return authProxy.authProxyGetRedirectUrl({
...options,
client: platformInfo.isElectron ? 'app' : 'web',
type: 'msentra',
});
},