You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by of...@apache.org on 2019/10/07 09:26:27 UTC

[incubator-dlab] 01/01: [DLAB-1156] Update user in mongo while refreshing access token

This is an automated email from the ASF dual-hosted git repository.

ofuks pushed a commit to branch DLAB-1156-fix
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 1a50ceae43f8a4d30376b7995f7e597ea6d58a98
Author: ofuks <ol...@gmail.com>
AuthorDate: Mon Oct 7 12:26:06 2019 +0300

    [DLAB-1156] Update user in mongo while refreshing access token
---
 .../src/main/java/com/epam/dlab/backendapi/dao/SecurityDAO.java  | 9 +++++++++
 .../com/epam/dlab/backendapi/resources/KeycloakResource.java     | 3 +++
 2 files changed, 12 insertions(+)

diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/SecurityDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/SecurityDAO.java
index ad56155..731b046 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/SecurityDAO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/SecurityDAO.java
@@ -88,6 +88,15 @@ public class SecurityDAO extends BaseDAO {
 				true);
 	}
 
+	public void updateUser(String userName, AccessTokenResponse accessTokenResponse) {
+		updateOne(SECURITY_COLLECTION, eq(ID, userName),
+				new Document(SET,
+						new Document()
+								.append(ID, userName)
+								.append("last_access", new Date())
+								.append(TOKEN_RESPONSE, convertToBson(accessTokenResponse))));
+	}
+
 	public Optional<UserInfo> getUser(String token) {
 		return Optional.ofNullable(mongoService.getCollection(SECURITY_COLLECTION)
 				.findOneAndUpdate(and(eq(TOKEN_RESPONSE + ".access_token", token), gte("last_access",
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/KeycloakResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/KeycloakResource.java
index 4faa974..2926710 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/KeycloakResource.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/KeycloakResource.java
@@ -7,6 +7,7 @@ import com.epam.dlab.backendapi.dao.SecurityDAO;
 import com.epam.dlab.backendapi.roles.UserRoles;
 import com.epam.dlab.backendapi.service.KeycloakService;
 import com.epam.dlab.backendapi.service.SecurityService;
+import com.epam.dlab.backendapi.util.KeycloakUtil;
 import com.epam.dlab.exceptions.DlabException;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.inject.Inject;
@@ -93,6 +94,8 @@ public class KeycloakResource {
 		AccessTokenResponse tokenResponse;
 		try {
 			tokenResponse = keycloakService.refreshToken(refreshToken);
+			final String username = KeycloakUtil.parseToken(tokenResponse.getToken()).getPreferredUsername();
+			securityDAO.updateUser(username, tokenResponse);
 		} catch (DlabException e) {
 			return Response.status(Response.Status.BAD_REQUEST)
 					.location(new URI(logoutUri))


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org