CB-1842 hotfix for external providers in easy config

This commit is contained in:
Alexander Skoblikov
2022-04-18 20:08:13 +03:00
parent c599b57c41
commit cc05b26dc1
2 changed files with 14 additions and 10 deletions
@@ -52,7 +52,10 @@ import org.jkiss.dbeaver.model.runtime.AbstractJob;
import org.jkiss.dbeaver.model.runtime.BaseProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.ProxyProgressMonitor;
import org.jkiss.dbeaver.model.security.*;
import org.jkiss.dbeaver.model.security.SMConstants;
import org.jkiss.dbeaver.model.security.SMController;
import org.jkiss.dbeaver.model.security.SMDataSourceGrant;
import org.jkiss.dbeaver.model.security.SMSessionType;
import org.jkiss.dbeaver.model.sql.DBQuotaException;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.registry.DataSourceRegistry;
@@ -747,10 +750,11 @@ public class WebSession extends AbstractSessionPersistent implements SMSession,
}
newUser = authInfo.getUser();
}
// if (this.user == null && newUser != null) {
// forceUserRefresh(newUser);
// } else
if (!CommonUtils.equalObjects(this.user, newUser)) {
if (application.isConfigurationMode() && this.user == null && newUser != null) {
//FIXME hotfix to avoid exception after external auth provider login in easy config
this.user = newUser;
refreshUserData();
} else if (!CommonUtils.equalObjects(this.user, newUser)) {
throw new DBException("Can't authorize different users in the single session");
}
@@ -17,10 +17,6 @@
package io.cloudbeaver.service.auth.impl;
import io.cloudbeaver.DBWConstants;
import org.jkiss.dbeaver.model.auth.SMAuthInfo;
import org.jkiss.dbeaver.model.auth.SMAuthProvider;
import org.jkiss.dbeaver.model.auth.SMSession;
import org.jkiss.dbeaver.model.security.SMController;
import io.cloudbeaver.DBWUserIdentity;
import io.cloudbeaver.DBWebException;
import io.cloudbeaver.auth.SMAuthProviderExternal;
@@ -40,7 +36,11 @@ import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.auth.SMAuthInfo;
import org.jkiss.dbeaver.model.auth.SMAuthProvider;
import org.jkiss.dbeaver.model.auth.SMSession;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.security.SMController;
import org.jkiss.dbeaver.model.security.exception.SMException;
import org.jkiss.dbeaver.registry.auth.AuthProviderDescriptor;
import org.jkiss.dbeaver.registry.auth.AuthProviderRegistry;
@@ -197,7 +197,7 @@ public class WebServiceAuthImpl implements DBWServiceAuth {
if (user == null) {
user = new WebUser(userId);
}
if (smAuthInfo == null && !webSession.isAuthorizedInSecurityManager()) {
if (!configMode && smAuthInfo == null && !webSession.isAuthorizedInSecurityManager()) {
throw new DBCException("No authorization in the security manager");
}