mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 22:26:01 +00:00
auth db login workflow
This commit is contained in:
@@ -22,6 +22,19 @@ export function isDbLoginCallback() {
|
||||
);
|
||||
}
|
||||
|
||||
export function isDbLoginAuthCallback() {
|
||||
const params = new URLSearchParams(location.search);
|
||||
const sentCode = params.get('code');
|
||||
const sentState = params.get('state');
|
||||
|
||||
return (
|
||||
sentCode &&
|
||||
sentState &&
|
||||
sentState.startsWith('dbg-dblogin:') &&
|
||||
sentState == sessionStorage.getItem('dbloginAuthState')
|
||||
);
|
||||
}
|
||||
|
||||
export function handleOauthCallback() {
|
||||
const params = new URLSearchParams(location.search);
|
||||
const sentCode = params.get('code');
|
||||
@@ -37,7 +50,7 @@ export function handleOauthCallback() {
|
||||
if (accessToken) {
|
||||
console.log('Settings access token from OAUTH');
|
||||
localStorage.setItem('accessToken', accessToken);
|
||||
internalRedirectTo('/');
|
||||
internalRedirectTo('?');
|
||||
} else {
|
||||
console.log('Error when processing OAUTH callback', error || errorMessage);
|
||||
internalRedirectTo(`?page=not-logged&error=${error || errorMessage}`);
|
||||
@@ -60,7 +73,29 @@ export function handleOauthCallback() {
|
||||
if (authResp.success) {
|
||||
window.close();
|
||||
} else if (authResp.error) {
|
||||
internalRedirectTo(`?page=error&error=${encodeURIComponent(authResp)}`);
|
||||
internalRedirectTo(`?page=error&error=${encodeURIComponent(authResp.error)}`);
|
||||
} else {
|
||||
internalRedirectTo(`?page=error`);
|
||||
}
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isDbLoginAuthCallback()) {
|
||||
const [_prefix, strmid, conid] = sessionStorage.getItem('dbloginAuthState').split(':');
|
||||
sessionStorage.removeItem('dbloginAuthState');
|
||||
|
||||
apiCall('connections/dblogin-auth-token', {
|
||||
code: sentCode,
|
||||
conid,
|
||||
redirectUri: location.origin + location.pathname,
|
||||
}).then(authResp => {
|
||||
if (authResp.accessToken) {
|
||||
localStorage.setItem('accessToken', authResp.accessToken);
|
||||
internalRedirectTo('?');
|
||||
} else if (authResp.error) {
|
||||
internalRedirectTo(`?page=error&error=${encodeURIComponent(authResp.error)}`);
|
||||
} else {
|
||||
internalRedirectTo(`?page=error`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user