From 3bc3227004e4f756c84a87ca789fc621191014f0 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 7 Feb 2017 10:32:08 +0200 Subject: [PATCH] Detect https protocol in case of forwarding --- .../server/controller/AuthController.java | 19 +++++++++++++++---- .../server/controller/UserController.java | 12 ++++++++++-- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/AuthController.java b/application/src/main/java/org/thingsboard/server/controller/AuthController.java index ae91ea3223..3aaa6949ea 100644 --- a/application/src/main/java/org/thingsboard/server/controller/AuthController.java +++ b/application/src/main/java/org/thingsboard/server/controller/AuthController.java @@ -124,9 +124,12 @@ public class AuthController extends BaseController { HttpServletRequest request) throws ThingsboardException { try { UserCredentials userCredentials = userService.requestPasswordReset(email); - + String scheme = request.getScheme(); + if (request.getHeader("x-forwarded-proto") != null) { + scheme = request.getHeader("x-forwarded-proto"); + } String baseUrl = String.format("%s://%s:%d", - request.getScheme(), + scheme, request.getServerName(), request.getServerPort()); String resetPasswordUrl = String.format("%s/api/noauth/resetPassword?resetToken=%s", baseUrl, @@ -172,8 +175,12 @@ public class AuthController extends BaseController { UserCredentials credentials = userService.activateUserCredentials(activateToken, encodedPassword); User user = userService.findUserById(credentials.getUserId()); SecurityUser securityUser = new SecurityUser(user, credentials.isEnabled()); + String scheme = request.getScheme(); + if (request.getHeader("x-forwarded-proto") != null) { + scheme = request.getHeader("x-forwarded-proto"); + } String baseUrl = String.format("%s://%s:%d", - request.getScheme(), + scheme, request.getServerName(), request.getServerPort()); String loginUrl = String.format("%s/login", baseUrl); @@ -209,8 +216,12 @@ public class AuthController extends BaseController { userCredentials = userService.saveUserCredentials(userCredentials); User user = userService.findUserById(userCredentials.getUserId()); SecurityUser securityUser = new SecurityUser(user, userCredentials.isEnabled()); + String scheme = request.getScheme(); + if (request.getHeader("x-forwarded-proto") != null) { + scheme = request.getHeader("x-forwarded-proto"); + } String baseUrl = String.format("%s://%s:%d", - request.getScheme(), + scheme, request.getServerName(), request.getServerPort()); String loginUrl = String.format("%s/login", baseUrl); diff --git a/application/src/main/java/org/thingsboard/server/controller/UserController.java b/application/src/main/java/org/thingsboard/server/controller/UserController.java index cd96b1dd43..3a0c401673 100644 --- a/application/src/main/java/org/thingsboard/server/controller/UserController.java +++ b/application/src/main/java/org/thingsboard/server/controller/UserController.java @@ -77,8 +77,12 @@ public class UserController extends BaseController { User savedUser = checkNotNull(userService.saveUser(user)); if (sendEmail) { UserCredentials userCredentials = userService.findUserCredentialsByUserId(savedUser.getId()); + String scheme = request.getScheme(); + if (request.getHeader("x-forwarded-proto") != null) { + scheme = request.getHeader("x-forwarded-proto"); + } String baseUrl = String.format("%s://%s:%d", - request.getScheme(), + scheme, request.getServerName(), request.getServerPort()); String activateUrl = String.format("%s/api/noauth/activate?activateToken=%s", baseUrl, @@ -107,8 +111,12 @@ public class UserController extends BaseController { User user = checkNotNull(userService.findUserByEmail(email)); UserCredentials userCredentials = userService.findUserCredentialsByUserId(user.getId()); if (!userCredentials.isEnabled()) { + String scheme = request.getScheme(); + if (request.getHeader("x-forwarded-proto") != null) { + scheme = request.getHeader("x-forwarded-proto"); + } String baseUrl = String.format("%s://%s:%d", - request.getScheme(), + scheme, request.getServerName(), request.getServerPort()); String activateUrl = String.format("%s/api/noauth/activate?activateToken=%s", baseUrl,