Merge pull request #21533 from RadekKoubsky
* pr/21533: Polish "Add support for webAdminPassword property of H2 Console" Add support for webAdminPassword property of H2 Console Closes gh-21533
This commit is contained in:
commit
ac0f175c57
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -32,6 +32,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.h2.H2ConsoleProperties.Settings;
|
||||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
||||||
|
|
@ -62,13 +63,7 @@ public class H2ConsoleAutoConfiguration {
|
||||||
String path = properties.getPath();
|
String path = properties.getPath();
|
||||||
String urlMapping = path + (path.endsWith("/") ? "*" : "/*");
|
String urlMapping = path + (path.endsWith("/") ? "*" : "/*");
|
||||||
ServletRegistrationBean<WebServlet> registration = new ServletRegistrationBean<>(new WebServlet(), urlMapping);
|
ServletRegistrationBean<WebServlet> registration = new ServletRegistrationBean<>(new WebServlet(), urlMapping);
|
||||||
H2ConsoleProperties.Settings settings = properties.getSettings();
|
configureH2ConsoleSettings(registration, properties.getSettings());
|
||||||
if (settings.isTrace()) {
|
|
||||||
registration.addInitParameter("trace", "");
|
|
||||||
}
|
|
||||||
if (settings.isWebAllowOthers()) {
|
|
||||||
registration.addInitParameter("webAllowOthers", "");
|
|
||||||
}
|
|
||||||
dataSource.ifAvailable((available) -> {
|
dataSource.ifAvailable((available) -> {
|
||||||
try (Connection connection = available.getConnection()) {
|
try (Connection connection = available.getConnection()) {
|
||||||
logger.info("H2 console available at '" + path + "'. Database available at '"
|
logger.info("H2 console available at '" + path + "'. Database available at '"
|
||||||
|
|
@ -81,4 +76,16 @@ public class H2ConsoleAutoConfiguration {
|
||||||
return registration;
|
return registration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void configureH2ConsoleSettings(ServletRegistrationBean<WebServlet> registration, Settings settings) {
|
||||||
|
if (settings.isTrace()) {
|
||||||
|
registration.addInitParameter("trace", "");
|
||||||
|
}
|
||||||
|
if (settings.isWebAllowOthers()) {
|
||||||
|
registration.addInitParameter("webAllowOthers", "");
|
||||||
|
}
|
||||||
|
if (settings.getWebAdminPassword() != null) {
|
||||||
|
registration.addInitParameter("webAdminPassword", settings.getWebAdminPassword());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -77,6 +77,11 @@ public class H2ConsoleProperties {
|
||||||
*/
|
*/
|
||||||
private boolean webAllowOthers = false;
|
private boolean webAllowOthers = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Password to access preferences and tools of H2 Console.
|
||||||
|
*/
|
||||||
|
private String webAdminPassword;
|
||||||
|
|
||||||
public boolean isTrace() {
|
public boolean isTrace() {
|
||||||
return this.trace;
|
return this.trace;
|
||||||
}
|
}
|
||||||
|
|
@ -93,6 +98,14 @@ public class H2ConsoleProperties {
|
||||||
this.webAllowOthers = webAllowOthers;
|
this.webAllowOthers = webAllowOthers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getWebAdminPassword() {
|
||||||
|
return this.webAdminPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWebAdminPassword(String webAdminPassword) {
|
||||||
|
this.webAdminPassword = webAdminPassword;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -79,6 +79,7 @@ class H2ConsoleAutoConfigurationTests {
|
||||||
assertThat(registrationBean.getUrlMappings()).contains("/h2-console/*");
|
assertThat(registrationBean.getUrlMappings()).contains("/h2-console/*");
|
||||||
assertThat(registrationBean.getInitParameters()).doesNotContainKey("trace");
|
assertThat(registrationBean.getInitParameters()).doesNotContainKey("trace");
|
||||||
assertThat(registrationBean.getInitParameters()).doesNotContainKey("webAllowOthers");
|
assertThat(registrationBean.getInitParameters()).doesNotContainKey("webAllowOthers");
|
||||||
|
assertThat(registrationBean.getInitParameters()).doesNotContainKey("webAdminPassword");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -114,13 +115,15 @@ class H2ConsoleAutoConfigurationTests {
|
||||||
void customInitParameters() {
|
void customInitParameters() {
|
||||||
this.context.register(H2ConsoleAutoConfiguration.class);
|
this.context.register(H2ConsoleAutoConfiguration.class);
|
||||||
TestPropertyValues.of("spring.h2.console.enabled:true", "spring.h2.console.settings.trace=true",
|
TestPropertyValues.of("spring.h2.console.enabled:true", "spring.h2.console.settings.trace=true",
|
||||||
"spring.h2.console.settings.webAllowOthers=true").applyTo(this.context);
|
"spring.h2.console.settings.webAllowOthers=true", "spring.h2.console.settings.webAdminPassword=abcd")
|
||||||
|
.applyTo(this.context);
|
||||||
this.context.refresh();
|
this.context.refresh();
|
||||||
assertThat(this.context.getBeansOfType(ServletRegistrationBean.class)).hasSize(1);
|
assertThat(this.context.getBeansOfType(ServletRegistrationBean.class)).hasSize(1);
|
||||||
ServletRegistrationBean<?> registrationBean = this.context.getBean(ServletRegistrationBean.class);
|
ServletRegistrationBean<?> registrationBean = this.context.getBean(ServletRegistrationBean.class);
|
||||||
assertThat(registrationBean.getUrlMappings()).contains("/h2-console/*");
|
assertThat(registrationBean.getUrlMappings()).contains("/h2-console/*");
|
||||||
assertThat(registrationBean.getInitParameters()).containsEntry("trace", "");
|
assertThat(registrationBean.getInitParameters()).containsEntry("trace", "");
|
||||||
assertThat(registrationBean.getInitParameters()).containsEntry("webAllowOthers", "");
|
assertThat(registrationBean.getInitParameters()).containsEntry("webAllowOthers", "");
|
||||||
|
assertThat(registrationBean.getInitParameters()).containsEntry("webAdminPassword", "abcd");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue