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