Compare commits
17 Commits
2.2.1.RELE
...
2.2.3.RELE
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1afb5d5a17 | ||
|
|
365a244a9b | ||
|
|
0b4140d892 | ||
|
|
78a85789c9 | ||
|
|
59350ed559 | ||
|
|
811e156a9c | ||
|
|
05a9903348 | ||
|
|
d8ae336b24 | ||
|
|
315112f2a2 | ||
|
|
e859da6d27 | ||
|
|
028bae1f11 | ||
|
|
234cb6dd88 | ||
|
|
43101308ec | ||
|
|
089f6b92de | ||
|
|
c6d129a5a5 | ||
|
|
938fd3c2e5 | ||
|
|
45bb0f9b0c |
3
Jenkinsfile
vendored
3
Jenkinsfile
vendored
@@ -120,7 +120,8 @@ try {
|
||||
withCredentials([usernamePassword(credentialsId: 'oss-token', passwordVariable: 'OSSRH_PASSWORD', usernameVariable: 'OSSRH_USERNAME')]) {
|
||||
withCredentials([usernamePassword(credentialsId: '02bd1690-b54f-4c9f-819d-a77cb7a9822c', usernameVariable: 'ARTIFACTORY_USERNAME', passwordVariable: 'ARTIFACTORY_PASSWORD')]) {
|
||||
withEnv(["JAVA_HOME=${tool 'jdk8'}"]) {
|
||||
sh './gradlew deployArtifacts finalizeDeployArtifacts --no-daemon --stacktrace -Psigning.secretKeyRingFile=$SIGNING_KEYRING_FILE -Psigning.keyId=$SPRING_SIGNING_KEYID -Psigning.password=$SIGNING_PASSWORD -PossrhUsername=$OSSRH_USERNAME -PossrhPassword=$OSSRH_PASSWORD -PartifactoryUsername=$ARTIFACTORY_USERNAME -PartifactoryPassword=$ARTIFACTORY_PASSWORD'
|
||||
sh './gradlew deployArtifacts --no-daemon --stacktrace -Psigning.secretKeyRingFile=$SIGNING_KEYRING_FILE -Psigning.keyId=$SPRING_SIGNING_KEYID -Psigning.password=$SIGNING_PASSWORD -PossrhUsername=$OSSRH_USERNAME -PossrhPassword=$OSSRH_PASSWORD -PartifactoryUsername=$ARTIFACTORY_USERNAME -PartifactoryPassword=$ARTIFACTORY_PASSWORD'
|
||||
sh './gradlew finalizeDeployArtifacts --no-daemon --stacktrace -Psigning.secretKeyRingFile=$SIGNING_KEYRING_FILE -Psigning.keyId=$SPRING_SIGNING_KEYID -Psigning.password=$SIGNING_PASSWORD -PossrhUsername=$OSSRH_USERNAME -PossrhPassword=$OSSRH_PASSWORD -PartifactoryUsername=$ARTIFACTORY_USERNAME -PartifactoryPassword=$ARTIFACTORY_PASSWORD'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ buildscript {
|
||||
snapshotBuild = version.endsWith('SNAPSHOT')
|
||||
milestoneBuild = !(releaseBuild || snapshotBuild)
|
||||
|
||||
springBootVersion = '2.2.4.RELEASE'
|
||||
springBootVersion = '2.2.7.RELEASE'
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
org.gradle.parallel=true
|
||||
version=2.2.1.RELEASE
|
||||
version=2.2.3.RELEASE
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom 'io.projectreactor:reactor-bom:Dysprosium-SR4'
|
||||
mavenBom 'io.projectreactor:reactor-bom:Dysprosium-SR7'
|
||||
mavenBom 'org.junit:junit-bom:5.5.2'
|
||||
mavenBom 'org.springframework:spring-framework-bom:5.2.2.RELEASE'
|
||||
mavenBom 'org.springframework.data:spring-data-releasetrain:Moore-SR4'
|
||||
mavenBom 'org.springframework.security:spring-security-bom:5.2.1.RELEASE'
|
||||
mavenBom 'org.testcontainers:testcontainers-bom:1.12.2'
|
||||
mavenBom 'org.springframework:spring-framework-bom:5.2.6.RELEASE'
|
||||
mavenBom 'org.springframework.data:spring-data-releasetrain:Moore-SR7'
|
||||
mavenBom 'org.springframework.security:spring-security-bom:5.2.4.RELEASE'
|
||||
mavenBom 'org.testcontainers:testcontainers-bom:1.12.5'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -20,16 +20,16 @@ dependencyManagement {
|
||||
dependency 'com.oracle.ojdbc:ojdbc8:19.3.0.0'
|
||||
dependency 'com.zaxxer:HikariCP:3.4.1'
|
||||
dependency 'edu.umd.cs.mtc:multithreadedtc:1.01'
|
||||
dependency 'io.lettuce:lettuce-core:5.2.0.RELEASE'
|
||||
dependency 'io.lettuce:lettuce-core:5.2.2.RELEASE'
|
||||
dependency 'javax.annotation:javax.annotation-api:1.3.2'
|
||||
dependency 'javax.servlet:javax.servlet-api:4.0.1'
|
||||
dependency 'junit:junit:4.12'
|
||||
dependency 'mysql:mysql-connector-java:8.0.17'
|
||||
dependency 'mysql:mysql-connector-java:8.0.19'
|
||||
dependency 'org.apache.derby:derby:10.14.2.0'
|
||||
dependency 'org.assertj:assertj-core:3.13.2'
|
||||
dependency 'org.hsqldb:hsqldb:2.5.0'
|
||||
dependency 'org.mariadb.jdbc:mariadb-java-client:2.4.4'
|
||||
dependency 'org.mockito:mockito-core:3.0.0'
|
||||
dependency 'org.postgresql:postgresql:42.2.8'
|
||||
dependency 'org.postgresql:postgresql:42.2.12'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ class FindByUsernameTests {
|
||||
|
||||
private WebDriver driver;
|
||||
|
||||
private WebDriver driver2;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
this.driver = MockMvcHtmlUnitDriverBuilder.mockMvcSetup(this.mockMvc).build();
|
||||
@@ -61,6 +63,9 @@ class FindByUsernameTests {
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
this.driver.quit();
|
||||
if (this.driver2 != null) {
|
||||
this.driver2.quit();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -79,6 +84,25 @@ class FindByUsernameTests {
|
||||
home.terminateButtonDisabled();
|
||||
}
|
||||
|
||||
@Test
|
||||
void terminateOtherSession() throws Exception {
|
||||
HomePage forgotToLogout = home(this.driver);
|
||||
|
||||
this.driver2 = MockMvcHtmlUnitDriverBuilder.mockMvcSetup(this.mockMvc).build();
|
||||
HomePage terminateFogotSession = home(this.driver2);
|
||||
terminateFogotSession.terminateSession(forgotToLogout.getSessionId()).assertAt();
|
||||
|
||||
LoginPage login = HomePage.go(this.driver);
|
||||
login.assertAt();
|
||||
}
|
||||
|
||||
private static HomePage home(WebDriver driver) {
|
||||
LoginPage login = HomePage.go(driver);
|
||||
HomePage home = login.form().login(HomePage.class);
|
||||
home.assertAt();
|
||||
return home;
|
||||
}
|
||||
|
||||
@TestConfiguration
|
||||
static class Config {
|
||||
|
||||
|
||||
@@ -56,6 +56,18 @@ public class HomePage extends BasePage {
|
||||
}
|
||||
|
||||
public void terminateButtonDisabled() {
|
||||
String sessionId = getSessionId();
|
||||
WebElement element = getDriver().findElement(By.id("terminate-" + sessionId));
|
||||
assertThat(element.isEnabled()).isFalse();
|
||||
}
|
||||
|
||||
public HomePage terminateSession(String sessionId) {
|
||||
WebElement terminate = getDriver().findElement(By.id("terminate-" + sessionId));
|
||||
terminate.click();
|
||||
return new HomePage(getDriver());
|
||||
}
|
||||
|
||||
public String getSessionId() {
|
||||
Set<Cookie> cookies = getDriver().manage().getCookies();
|
||||
String cookieValue = null;
|
||||
for (Cookie cookie : cookies) {
|
||||
@@ -63,8 +75,7 @@ public class HomePage extends BasePage {
|
||||
cookieValue = new String(Base64.getDecoder().decode(cookie.getValue()));
|
||||
}
|
||||
}
|
||||
WebElement element = getDriver().findElement(By.id("terminate-" + cookieValue));
|
||||
assertThat(element.isEnabled()).isFalse();
|
||||
return cookieValue;
|
||||
}
|
||||
|
||||
public HomePage logout() {
|
||||
|
||||
@@ -26,8 +26,8 @@ import org.springframework.session.Session;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
/**
|
||||
* Controller for sending the user to the login view.
|
||||
@@ -50,7 +50,7 @@ public class IndexController {
|
||||
}
|
||||
// end::findbyusername[]
|
||||
|
||||
@RequestMapping(value = "/sessions/{sessionIdToDelete}", method = RequestMethod.DELETE)
|
||||
@PostMapping("/sessions/{sessionIdToDelete}")
|
||||
public String removeSession(Principal principal, @PathVariable String sessionIdToDelete) {
|
||||
Set<String> usersSessionIds = this.sessions.findByPrincipalName(principal.getName()).keySet();
|
||||
if (usersSessionIds.contains(sessionIdToDelete)) {
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<td th:text="${#temporals.format(sessionElement.lastAccessedTime.atZone(T(java.time.ZoneId).systemDefault()),'dd/MMM/yyyy HH:mm:ss')}"></td>
|
||||
<td th:text="${details?.accessType}"></td>
|
||||
<td>
|
||||
<form th:action="@{'/sessions/' + ${sessionElement.id}}" th:method="delete">
|
||||
<form th:action="@{'/sessions/' + ${sessionElement.id}}" th:method="post">
|
||||
<input th:id="'terminate-' + ${sessionElement.id}" type="submit" value="Terminate" th:disabled="${sessionElement.id == #httpSession.id}"/>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
Reference in New Issue
Block a user