Merge remote-tracking branch 'origin/devel' into feat-routing

This commit is contained in:
Wroud
2020-05-27 17:46:21 +03:00
4 changed files with 24 additions and 0 deletions
@@ -40,4 +40,6 @@ extend type Query {
setRolePermissions(roleId: ID!, permissions: [ID]!): Boolean
setUserCredentials(userId: ID!, providerId: ID!, credentials: Object!): Boolean
}
@@ -24,6 +24,7 @@ import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import java.util.List;
import java.util.Map;
/**
* Web service API
@@ -65,4 +66,7 @@ public interface DBWServiceAdmin extends DBWService {
@WebAction(requirePermissions = AdminPermissions.PERMISSION_ADMIN)
boolean setRolePermissions(@NotNull WebSession webSession, String roleID, String[] permissions) throws DBWebException;
@WebAction(requirePermissions = AdminPermissions.PERMISSION_ADMIN)
boolean setUserCredentials(@NotNull WebSession webSession, @NotNull String userID, @NotNull String providerId, @NotNull Map<String, Object> credentials) throws DBWebException;
}
@@ -55,6 +55,8 @@ public class WebServiceBindingAdmin extends WebServiceBindingBase<DBWServiceAdmi
env -> getService(env).revokeUserRole(getWebSession(env), env.getArgument("userId"), env.getArgument("userId")));
model.getQueryType().dataFetcher("setRolePermissions",
env -> getService(env).setRolePermissions(getWebSession(env), env.getArgument("roleId"), env.getArgument("permissions")));
model.getQueryType().dataFetcher("setUserCredentials",
env -> getService(env).setUserCredentials(getWebSession(env), env.getArgument("userId"), env.getArgument("providerId"), env.getArgument("credentials")));
}
}
@@ -20,6 +20,7 @@ import io.cloudbeaver.DBWebException;
import io.cloudbeaver.model.session.WebSession;
import io.cloudbeaver.model.user.WebRole;
import io.cloudbeaver.model.user.WebUser;
import io.cloudbeaver.registry.WebAuthProviderDescriptor;
import io.cloudbeaver.registry.WebPermissionDescriptor;
import io.cloudbeaver.registry.WebServiceDescriptor;
import io.cloudbeaver.registry.WebServiceRegistry;
@@ -34,6 +35,7 @@ import org.jkiss.utils.ArrayUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* Web service implementation
@@ -184,4 +186,18 @@ public class WebServiceAdmin implements DBWServiceAdmin {
throw new DBWebException("Error setting role permissions", e);
}
}
@Override
public boolean setUserCredentials(@NotNull WebSession webSession, @NotNull String userID, @NotNull String providerId, @NotNull Map<String, Object> credentials) throws DBWebException {
WebAuthProviderDescriptor authProvider = WebServiceRegistry.getInstance().getAuthProvider(providerId);
if (authProvider == null) {
throw new DBWebException("Invalid auth provider '" + providerId + "'");
}
try {
CBPlatform.getInstance().getApplication().getSecurityController().setUserCredentials(userID, authProvider, credentials);
return true;
} catch (Exception e) {
throw new DBWebException("Error setting user credentials", e);
}
}
}