From 8d0b0e1c658b6f8e613ff4eb53d33867a3c54424 Mon Sep 17 00:00:00 2001 From: DenisSinelnikov <142215442+DenisSinelnikov@users.noreply.github.com> Date: Tue, 17 Dec 2024 21:14:24 +0400 Subject: [PATCH] =?UTF-8?q?CB-5807.=20Implemented=20logic=20to=20get=20loc?= =?UTF-8?q?alized=20text=20by=20locale,=20translate=E2=80=A6=20(#3117)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CB-5807. Implemented logic to get localized text by locale, translated global prefer and part of identity provider on en/ru * CB-5807. Refactor after review * CB-5807. Refactor after review, move logic to base class * CB-5807. Refactor after review, move logic to base class * CB-5807. Added new translation for IP * CB-5807. Refactor after review * CB-5807. Refactor after review * CB-5807. Refactor after review * CB-5807. Fixed typo in ru locale * CB-5807. Refactor after review * CB-5807. Revert * CB-5807. Remove comment --------- Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com> Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com> Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com> --- .../registry/WebAuthProviderDescriptor.java | 4 ++- .../registry/WebAuthProviderProperty.java | 18 ++++++++++--- .../registry/WebAuthProviderRegistry.java | 4 +-- ...bCommonAuthProviderPropertyDescriptor.java | 2 +- .../META-INF/MANIFEST.MF | 1 + .../OSGI-INF/l10n/bundle.properties | 2 ++ .../OSGI-INF/l10n/bundle_ru.properties | 2 ++ .../io.cloudbeaver.server/build.properties | 1 + .../auth/model/user/WebAuthProviderInfo.java | 1 + .../META-INF/MANIFEST.MF | 1 + .../OSGI-INF/l10n/bundle.properties | 19 ++++++++++++++ .../OSGI-INF/l10n/bundle_ru.properties | 18 +++++++++++++ .../build.properties | 1 + .../plugin.xml | 25 +++++++++---------- .../META-INF/MANIFEST.MF | 1 + .../OSGI-INF/l10n/bundle.properties | 16 ++++++++++++ .../OSGI-INF/l10n/bundle_ru.properties | 16 ++++++++++++ .../build.properties | 1 + .../plugin.xml | 16 ++++++------ 19 files changed, 121 insertions(+), 28 deletions(-) create mode 100644 server/bundles/io.cloudbeaver.server/OSGI-INF/l10n/bundle.properties create mode 100644 server/bundles/io.cloudbeaver.server/OSGI-INF/l10n/bundle_ru.properties create mode 100644 server/bundles/io.cloudbeaver.service.ldap.auth/OSGI-INF/l10n/bundle.properties create mode 100644 server/bundles/io.cloudbeaver.service.ldap.auth/OSGI-INF/l10n/bundle_ru.properties create mode 100644 server/bundles/io.cloudbeaver.service.security/OSGI-INF/l10n/bundle.properties create mode 100644 server/bundles/io.cloudbeaver.service.security/OSGI-INF/l10n/bundle_ru.properties diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderDescriptor.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderDescriptor.java index 78a87c8fcb..bbe49bfaa1 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderDescriptor.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderDescriptor.java @@ -22,6 +22,8 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.DBPImage; +import org.jkiss.dbeaver.model.DBPNamedObjectLocalized; +import org.jkiss.dbeaver.model.DBPObjectWithDescriptionLocalized; import org.jkiss.dbeaver.model.auth.AuthPropertyDescriptor; import org.jkiss.dbeaver.model.auth.SMAuthProvider; import org.jkiss.dbeaver.model.impl.AbstractDescriptor; @@ -73,7 +75,7 @@ public WebAuthProviderDescriptor(IConfigurationElement cfg) { this.isCaseInsensitive = CommonUtils.toBoolean(cfg.getAttribute("caseInsensitive")); for (IConfigurationElement cfgElement : cfg.getChildren("configuration")) { - List properties = WebAuthProviderRegistry.readProperties(cfgElement); + List properties = WebAuthProviderRegistry.readProperties(cfgElement, getId()); for (WebAuthProviderProperty property : properties) { configurationParameters.put(CommonUtils.toString(property.getId()), property); } diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderProperty.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderProperty.java index cf30e97988..73867179d8 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderProperty.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderProperty.java @@ -19,15 +19,18 @@ import org.eclipse.core.runtime.IConfigurationElement; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.model.impl.PropertyDescriptor; +import org.jkiss.dbeaver.model.impl.LocalizedPropertyDescriptor; -public class WebAuthProviderProperty extends PropertyDescriptor { +public class WebAuthProviderProperty extends LocalizedPropertyDescriptor { private final String[] requiredFeatures; @Nullable private final String type; - public WebAuthProviderProperty(String category, IConfigurationElement config) { + private final String authProviderId; + + public WebAuthProviderProperty(String category, IConfigurationElement config, String authProviderId) { super(category, config); + this.authProviderId = authProviderId; String featuresAttr = config.getAttribute("requiredFeatures"); this.requiredFeatures = featuresAttr == null ? new String[0] : featuresAttr.split(","); this.type = config.getAttribute("type"); @@ -42,4 +45,13 @@ public String[] getRequiredFeatures() { public String getType() { return type; } + + @Override + public String getPropertyId() { + if (authProviderId != null) { + return "prop.auth.model." + authProviderId + "." + this.getId(); + } else { + return "prop.auth.model." + this.getId(); + } + } } diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderRegistry.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderRegistry.java index e2a842ffdb..c4cc0d1e02 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderRegistry.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebAuthProviderRegistry.java @@ -81,13 +81,13 @@ private void loadExtensions(IExtensionRegistry registry) { } } - static List readProperties(IConfigurationElement root) { + static List readProperties(IConfigurationElement root, String authProviderId) { List properties = new ArrayList<>(); for (IConfigurationElement propGroup : ArrayUtils.safeArray(root.getChildren(PropertyDescriptor.TAG_PROPERTY_GROUP))) { String category = propGroup.getAttribute(PropertyDescriptor.ATTR_LABEL); IConfigurationElement[] propElements = propGroup.getChildren(PropertyDescriptor.TAG_PROPERTY); for (IConfigurationElement prop : propElements) { - WebAuthProviderProperty propertyDescriptor = new WebAuthProviderProperty(category, prop); + WebAuthProviderProperty propertyDescriptor = new WebAuthProviderProperty(category, prop, authProviderId); properties.add(propertyDescriptor); } } diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebCommonAuthProviderPropertyDescriptor.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebCommonAuthProviderPropertyDescriptor.java index 818f2a55a4..aba6f9af3f 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebCommonAuthProviderPropertyDescriptor.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebCommonAuthProviderPropertyDescriptor.java @@ -34,7 +34,7 @@ public class WebCommonAuthProviderPropertyDescriptor extends AbstractDescriptor public WebCommonAuthProviderPropertyDescriptor(IConfigurationElement cfg) { super(cfg); - configurationParameters = WebAuthProviderRegistry.readProperties(cfg); + configurationParameters = WebAuthProviderRegistry.readProperties(cfg, null); String supportedCategoriesAttr = cfg.getAttribute("supportedProviderCategories"); if (CommonUtils.isNotEmpty(supportedCategoriesAttr)) { supportedProviderCategories.addAll(Arrays.stream(supportedCategoriesAttr.split(",")).toList()); diff --git a/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF index a7e70de63a..25f4864a82 100644 --- a/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF +++ b/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF @@ -37,4 +37,5 @@ Export-Package: io.cloudbeaver, io.cloudbeaver.service.navigator, io.cloudbeaver.service.sql Import-Package: org.slf4j +Bundle-Localization: OSGI-INF/l10n/bundle Automatic-Module-Name: io.cloudbeaver.server diff --git a/server/bundles/io.cloudbeaver.server/OSGI-INF/l10n/bundle.properties b/server/bundles/io.cloudbeaver.server/OSGI-INF/l10n/bundle.properties new file mode 100644 index 0000000000..3552b1a8df --- /dev/null +++ b/server/bundles/io.cloudbeaver.server/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,2 @@ +log.api.graphql.debug = Enable detailed logging +log.api.graphql.debug.description = Enable detailed logging of GraphQL queries in the server log, including all provided variables \ No newline at end of file diff --git a/server/bundles/io.cloudbeaver.server/OSGI-INF/l10n/bundle_ru.properties b/server/bundles/io.cloudbeaver.server/OSGI-INF/l10n/bundle_ru.properties new file mode 100644 index 0000000000..9bbef88573 --- /dev/null +++ b/server/bundles/io.cloudbeaver.server/OSGI-INF/l10n/bundle_ru.properties @@ -0,0 +1,2 @@ +log.api.graphql.debug = \u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0435 \u043B\u043E\u0433\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 +log.api.graphql.debug.description = \u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0435 \u043B\u043E\u0433\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 GraphQL \u0432 \u0436\u0443\u0440\u043D\u0430\u043B\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0432\u043A\u043B\u044E\u0447\u0430\u044F \u0432\u0441\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 \ No newline at end of file diff --git a/server/bundles/io.cloudbeaver.server/build.properties b/server/bundles/io.cloudbeaver.server/build.properties index 0e7161380c..6728418a75 100644 --- a/server/bundles/io.cloudbeaver.server/build.properties +++ b/server/bundles/io.cloudbeaver.server/build.properties @@ -2,6 +2,7 @@ source.. = src/ output.. = target/classes/ bin.includes = .,\ META-INF/,\ + OSGI-INF/,\ schema/,\ static/,\ plugin.xml diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/model/user/WebAuthProviderInfo.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/model/user/WebAuthProviderInfo.java index 90257b64e6..7919d5b7b1 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/model/user/WebAuthProviderInfo.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/model/user/WebAuthProviderInfo.java @@ -20,6 +20,7 @@ import io.cloudbeaver.auth.SMAuthProviderFederated; import io.cloudbeaver.auth.provisioning.SMProvisioner; import io.cloudbeaver.model.app.ServletAuthConfiguration; +import io.cloudbeaver.model.session.WebSession; import io.cloudbeaver.registry.WebAuthProviderConfiguration; import io.cloudbeaver.registry.WebAuthProviderDescriptor; import io.cloudbeaver.server.CBApplication; diff --git a/server/bundles/io.cloudbeaver.service.ldap.auth/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.service.ldap.auth/META-INF/MANIFEST.MF index aeb12d9208..4a0ee8d587 100644 --- a/server/bundles/io.cloudbeaver.service.ldap.auth/META-INF/MANIFEST.MF +++ b/server/bundles/io.cloudbeaver.service.ldap.auth/META-INF/MANIFEST.MF @@ -11,4 +11,5 @@ Bundle-ClassPath: . Require-Bundle: org.jkiss.dbeaver.model;visibility:=reexport, org.jkiss.dbeaver.registry;visibility:=reexport, io.cloudbeaver.model +Bundle-Localization: OSGI-INF/l10n/bundle Automatic-Module-Name: io.cloudbeaver.service.ldap.auth diff --git a/server/bundles/io.cloudbeaver.service.ldap.auth/OSGI-INF/l10n/bundle.properties b/server/bundles/io.cloudbeaver.service.ldap.auth/OSGI-INF/l10n/bundle.properties new file mode 100644 index 0000000000..d6918a3638 --- /dev/null +++ b/server/bundles/io.cloudbeaver.service.ldap.auth/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,19 @@ +prop.auth.model.ldap.ldap-host = Host +prop.auth.model.ldap.ldap-host.description = LDAP server host +prop.auth.model.ldap.ldap-port = Port +prop.auth.model.ldap.ldap-port.description = LDAP server port, default is 389 +prop.auth.model.ldap.ldap-identifier-attr = User identifier attribute +prop.auth.model.ldap.ldap-identifier-attr.description = LDAP attribute used as a user ID. Will be automatically added to the beginning of the 'User DN' value during authorization if not explicitly specified +prop.auth.model.ldap.ldap-dn = Base Distinguished Name +prop.auth.model.ldap.ldap-dn.description = Base Distinguished Name applicable for all users, example: dc=myOrg,dc=com. Will be automatically added to the end of the 'User DN' value during authorization if not explicitly specified +prop.auth.model.ldap.ldap-bind-user = Bind User DN +prop.auth.model.ldap.ldap-bind-user.description = DN of user, who has permissions to search for users to check access to the application with the specified filter. +prop.auth.model.ldap.ldap-bind-user-pwd = Bind User Password +prop.auth.model.ldap.ldap-bind-user-pwd.description = Bind user password. +prop.auth.model.ldap.ldap-filter = User Filter +prop.auth.model.ldap.ldap-filter.description = Filter that will be used to verify users access to the application. To use the filter, the bind user configuration is mandatory. +prop.auth.model.ldap.user-dn = User DN +prop.auth.model.ldap.user-dn.description = LDAP user name +prop.auth.model.ldap.password = User password +prop.auth.model.ldap.password.description = LDAP user password + diff --git a/server/bundles/io.cloudbeaver.service.ldap.auth/OSGI-INF/l10n/bundle_ru.properties b/server/bundles/io.cloudbeaver.service.ldap.auth/OSGI-INF/l10n/bundle_ru.properties new file mode 100644 index 0000000000..297d608e44 --- /dev/null +++ b/server/bundles/io.cloudbeaver.service.ldap.auth/OSGI-INF/l10n/bundle_ru.properties @@ -0,0 +1,18 @@ +prop.auth.model.ldap.ldap-host = \u0425\u043E\u0441\u0442 +prop.auth.model.ldap.ldap-host.description = \u0425\u043E\u0441\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 LDAP +prop.auth.model.ldap.ldap-port = \u041F\u043E\u0440\u0442 +prop.auth.model.ldap.ldap-port.description = \u041F\u043E\u0440\u0442 LDAP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E 389 +prop.auth.model.ldap.ldap-identifier-attr = \u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +prop.auth.model.ldap.ldap-identifier-attr.description = \u0410\u0442\u0440\u0438\u0431\u0443\u0442 LDAP, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F. \u0411\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u0432 \u043D\u0430\u0447\u0430\u043B\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F 'User DN' \u043F\u0440\u0438 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D \u044F\u0432\u043D\u043E +prop.auth.model.ldap.ldap-dn = \u0411\u0430\u0437\u043E\u0432\u043E\u0435 \u043E\u0442\u043B\u0438\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0438\u043C\u044F +prop.auth.model.ldap.ldap-dn.description = \u0411\u0430\u0437\u043E\u0432\u043E\u0435 \u043E\u0442\u043B\u0438\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0438\u043C\u044F, \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u043C\u043E\u0435 \u043A\u043E \u0432\u0441\u0435\u043C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u043C, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: dc=myOrg,dc=com. \u0411\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E \u0432 \u043A\u043E\u043D\u0435\u0446 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F 'User DN' \u043F\u0440\u0438 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u044F\u0432\u043D\u043E +prop.auth.model.ldap.ldap-bind-user = \u041F\u0440\u0438\u0432\u044F\u0437\u043A\u0430 DN \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +prop.auth.model.ldap.ldap-bind-user.description = DN \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0438\u043C\u0435\u0435\u0442 \u043F\u0440\u0430\u0432\u0430 \u043D\u0430 \u043F\u043E\u0438\u0441\u043A \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044E \u0441 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u0444\u0438\u043B\u044C\u0442\u0440\u043E\u043C. +prop.auth.model.ldap.ldap-bind-user-pwd = \u0421\u0432\u044F\u0437\u0430\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +prop.auth.model.ldap.ldap-bind-user-pwd.description = \u041F\u0440\u0438\u0432\u044F\u0437\u043A\u0430 \u043F\u0430\u0440\u043E\u043B\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F. +prop.auth.model.ldap.ldap-filter = \u0424\u0438\u043B\u044C\u0442\u0440 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +prop.auth.model.ldap.ldap-filter.description = \u0424\u0438\u043B\u044C\u0442\u0440, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u043A \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044E. \u0414\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u0430 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 bind user. +prop.auth.model.ldap.user-dn = \u0418\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F DN +prop.auth.model.ldap.user-dn.description = LDAP \u0438\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +prop.auth.model.ldap.password = \u041F\u0430\u0440\u043E\u043B\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +prop.auth.model.ldap.password.description = LDAP \u043F\u0430\u0440\u043E\u043B\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F diff --git a/server/bundles/io.cloudbeaver.service.ldap.auth/build.properties b/server/bundles/io.cloudbeaver.service.ldap.auth/build.properties index 95692a59c9..3c833df018 100644 --- a/server/bundles/io.cloudbeaver.service.ldap.auth/build.properties +++ b/server/bundles/io.cloudbeaver.service.ldap.auth/build.properties @@ -2,4 +2,5 @@ source.. = src/ output.. = target/classes/ bin.includes = .,\ META-INF/,\ + OSGI-INF/,\ plugin.xml diff --git a/server/bundles/io.cloudbeaver.service.ldap.auth/plugin.xml b/server/bundles/io.cloudbeaver.service.ldap.auth/plugin.xml index e908b7dc2a..18e0023dab 100644 --- a/server/bundles/io.cloudbeaver.service.ldap.auth/plugin.xml +++ b/server/bundles/io.cloudbeaver.service.ldap.auth/plugin.xml @@ -10,24 +10,23 @@ > - - - + + - + - - - + diff --git a/server/bundles/io.cloudbeaver.service.security/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.service.security/META-INF/MANIFEST.MF index 69fcfdb9bc..993bb39bfb 100644 --- a/server/bundles/io.cloudbeaver.service.security/META-INF/MANIFEST.MF +++ b/server/bundles/io.cloudbeaver.service.security/META-INF/MANIFEST.MF @@ -19,4 +19,5 @@ Export-Package: io.cloudbeaver.auth.provider.local, io.cloudbeaver.auth.provider.rp, io.cloudbeaver.service.security, io.cloudbeaver.service.security.db +Bundle-Localization: OSGI-INF/l10n/bundle Automatic-Module-Name: io.cloudbeaver.service.security diff --git a/server/bundles/io.cloudbeaver.service.security/OSGI-INF/l10n/bundle.properties b/server/bundles/io.cloudbeaver.service.security/OSGI-INF/l10n/bundle.properties new file mode 100644 index 0000000000..c871cdc03a --- /dev/null +++ b/server/bundles/io.cloudbeaver.service.security/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,16 @@ +prop.auth.model.reverseProxy.logout-url = Logout URL +prop.auth.model.reverseProxy.logout-url.description = Logout URL +prop.auth.model.reverseProxy.user-header = Username header +prop.auth.model.reverseProxy.user-header.description = Username header +prop.auth.model.reverseProxy.team-header = Team header +prop.auth.model.reverseProxy.team-header.description = Team header +prop.auth.model.reverseProxy.team-delimiter = Team delimiter symbol +prop.auth.model.reverseProxy.team-delimiter.description = Team delimiter symbol, default: | +prop.auth.model.reverseProxy.first-name-header = First name header +prop.auth.model.reverseProxy.first-name-header.description = First name header name +prop.auth.model.reverseProxy.last-name-header = Last name header +prop.auth.model.reverseProxy.last-name-header.description = Last name header name +prop.auth.model.reverseProxy.full-name-header = Full name header +prop.auth.model.reverseProxy.full-name-header.description = Full name header name +prop.auth.model.reverseProxy.role-header = Role header +prop.auth.model.reverseProxy.role-header.description = Role header name diff --git a/server/bundles/io.cloudbeaver.service.security/OSGI-INF/l10n/bundle_ru.properties b/server/bundles/io.cloudbeaver.service.security/OSGI-INF/l10n/bundle_ru.properties new file mode 100644 index 0000000000..3ea886d38a --- /dev/null +++ b/server/bundles/io.cloudbeaver.service.security/OSGI-INF/l10n/bundle_ru.properties @@ -0,0 +1,16 @@ +prop.auth.model.reverseProxy.logout-url = URL-\u0430\u0434\u0440\u0435\u0441 \u0432\u044B\u0445\u043E\u0434\u0430 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043C\u044B +prop.auth.model.reverseProxy.logout-url.description = URL-\u0430\u0434\u0440\u0435\u0441 \u0432\u044B\u0445\u043E\u0434\u0430 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043C\u044B +prop.auth.model.reverseProxy.user-header = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0438\u043C\u0435\u043D\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +prop.auth.model.reverseProxy.user-header.description = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0438\u043C\u0435\u043D\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +prop.auth.model.reverseProxy.team-header = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043A\u043E\u043C\u0430\u043D\u0434\u044B +prop.auth.model.reverseProxy.team-header.description = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043A\u043E\u043C\u0430\u043D\u0434\u044B +prop.auth.model.reverseProxy.team-delimiter = \u0421\u0438\u043C\u0432\u043E\u043B \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434 +prop.auth.model.reverseProxy.team-delimiter.description = \u0421\u0438\u043C\u0432\u043E\u043B \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434, \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E: | +prop.auth.model.reverseProxy.first-name-header = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0438\u043C\u0435\u043D\u0438 +prop.auth.model.reverseProxy.first-name-header.description = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0438\u043C\u0435\u043D\u0438 +prop.auth.model.reverseProxy.last-name-header = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0444\u0430\u043C\u0438\u043B\u0438\u0438 +prop.auth.model.reverseProxy.last-name-header.description = \u0418\u043C\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0444\u0430\u043C\u0438\u043B\u0438\u0438 +prop.auth.model.reverseProxy.full-name-header = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043F\u043E\u043B\u043D\u043E\u0433\u043E \u0438\u043C\u0435\u043D\u0438 +prop.auth.model.reverseProxy.full-name-header.description = \u0418\u043C\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043F\u043E\u043B\u043D\u043E\u0433\u043E \u0438\u043C\u0435\u043D\u0438 +prop.auth.model.reverseProxy.role-header = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0440\u043E\u043B\u0438 +prop.auth.model.reverseProxy.role-header.description = \u0418\u043C\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0440\u043E\u043B\u0438 \ No newline at end of file diff --git a/server/bundles/io.cloudbeaver.service.security/build.properties b/server/bundles/io.cloudbeaver.service.security/build.properties index d9f1a1b5a9..261610303e 100644 --- a/server/bundles/io.cloudbeaver.service.security/build.properties +++ b/server/bundles/io.cloudbeaver.service.security/build.properties @@ -2,5 +2,6 @@ source.. = src/ output.. = target/classes/ bin.includes = .,\ META-INF/,\ + OSGI-INF/,\ db/,\ plugin.xml diff --git a/server/bundles/io.cloudbeaver.service.security/plugin.xml b/server/bundles/io.cloudbeaver.service.security/plugin.xml index e4b77aab29..64ed39e591 100644 --- a/server/bundles/io.cloudbeaver.service.security/plugin.xml +++ b/server/bundles/io.cloudbeaver.service.security/plugin.xml @@ -29,14 +29,14 @@ - - - - - - - - + + + + + + + +