Commit d751ace71cabc64ab16b1286693c579a1487fbdf
1 parent
efb03e49
Use x-forwarded-port header to detect base URL port.
Showing
3 changed files
with
25 additions
and
40 deletions
... | ... | @@ -124,14 +124,7 @@ public class AuthController extends BaseController { |
124 | 124 | HttpServletRequest request) throws ThingsboardException { |
125 | 125 | try { |
126 | 126 | UserCredentials userCredentials = userService.requestPasswordReset(email); |
127 | - String scheme = request.getScheme(); | |
128 | - if (request.getHeader("x-forwarded-proto") != null) { | |
129 | - scheme = request.getHeader("x-forwarded-proto"); | |
130 | - } | |
131 | - String baseUrl = String.format("%s://%s:%d", | |
132 | - scheme, | |
133 | - request.getServerName(), | |
134 | - request.getServerPort()); | |
127 | + String baseUrl = constructBaseUrl(request); | |
135 | 128 | String resetPasswordUrl = String.format("%s/api/noauth/resetPassword?resetToken=%s", baseUrl, |
136 | 129 | userCredentials.getResetToken()); |
137 | 130 | |
... | ... | @@ -175,14 +168,7 @@ public class AuthController extends BaseController { |
175 | 168 | UserCredentials credentials = userService.activateUserCredentials(activateToken, encodedPassword); |
176 | 169 | User user = userService.findUserById(credentials.getUserId()); |
177 | 170 | SecurityUser securityUser = new SecurityUser(user, credentials.isEnabled()); |
178 | - String scheme = request.getScheme(); | |
179 | - if (request.getHeader("x-forwarded-proto") != null) { | |
180 | - scheme = request.getHeader("x-forwarded-proto"); | |
181 | - } | |
182 | - String baseUrl = String.format("%s://%s:%d", | |
183 | - scheme, | |
184 | - request.getServerName(), | |
185 | - request.getServerPort()); | |
171 | + String baseUrl = constructBaseUrl(request); | |
186 | 172 | String loginUrl = String.format("%s/login", baseUrl); |
187 | 173 | String email = user.getEmail(); |
188 | 174 | mailService.sendAccountActivatedEmail(loginUrl, email); |
... | ... | @@ -216,14 +202,7 @@ public class AuthController extends BaseController { |
216 | 202 | userCredentials = userService.saveUserCredentials(userCredentials); |
217 | 203 | User user = userService.findUserById(userCredentials.getUserId()); |
218 | 204 | SecurityUser securityUser = new SecurityUser(user, userCredentials.isEnabled()); |
219 | - String scheme = request.getScheme(); | |
220 | - if (request.getHeader("x-forwarded-proto") != null) { | |
221 | - scheme = request.getHeader("x-forwarded-proto"); | |
222 | - } | |
223 | - String baseUrl = String.format("%s://%s:%d", | |
224 | - scheme, | |
225 | - request.getServerName(), | |
226 | - request.getServerPort()); | |
205 | + String baseUrl = constructBaseUrl(request); | |
227 | 206 | String loginUrl = String.format("%s/login", baseUrl); |
228 | 207 | String email = user.getEmail(); |
229 | 208 | mailService.sendPasswordWasResetEmail(loginUrl, email); | ... | ... |
... | ... | @@ -57,6 +57,7 @@ import org.thingsboard.server.service.component.ComponentDiscoveryService; |
57 | 57 | import org.thingsboard.server.service.security.model.SecurityUser; |
58 | 58 | |
59 | 59 | import javax.mail.MessagingException; |
60 | +import javax.servlet.http.HttpServletRequest; | |
60 | 61 | import javax.servlet.http.HttpServletResponse; |
61 | 62 | import java.util.List; |
62 | 63 | import java.util.Optional; |
... | ... | @@ -381,4 +382,23 @@ public abstract class BaseController { |
381 | 382 | checkTenantId(rule.getTenantId()); |
382 | 383 | return rule; |
383 | 384 | } |
385 | + | |
386 | + protected String constructBaseUrl(HttpServletRequest request) { | |
387 | + String scheme = request.getScheme(); | |
388 | + if (request.getHeader("x-forwarded-proto") != null) { | |
389 | + scheme = request.getHeader("x-forwarded-proto"); | |
390 | + } | |
391 | + int serverPort = request.getServerPort(); | |
392 | + if (request.getHeader("x-forwarded-port") != null) { | |
393 | + try { | |
394 | + serverPort = request.getIntHeader("x-forwarded-port"); | |
395 | + } catch (NumberFormatException e) {} | |
396 | + } | |
397 | + | |
398 | + String baseUrl = String.format("%s://%s:%d", | |
399 | + scheme, | |
400 | + request.getServerName(), | |
401 | + serverPort); | |
402 | + return baseUrl; | |
403 | + } | |
384 | 404 | } | ... | ... |
... | ... | @@ -77,14 +77,7 @@ public class UserController extends BaseController { |
77 | 77 | User savedUser = checkNotNull(userService.saveUser(user)); |
78 | 78 | if (sendEmail) { |
79 | 79 | UserCredentials userCredentials = userService.findUserCredentialsByUserId(savedUser.getId()); |
80 | - String scheme = request.getScheme(); | |
81 | - if (request.getHeader("x-forwarded-proto") != null) { | |
82 | - scheme = request.getHeader("x-forwarded-proto"); | |
83 | - } | |
84 | - String baseUrl = String.format("%s://%s:%d", | |
85 | - scheme, | |
86 | - request.getServerName(), | |
87 | - request.getServerPort()); | |
80 | + String baseUrl = constructBaseUrl(request); | |
88 | 81 | String activateUrl = String.format("%s/api/noauth/activate?activateToken=%s", baseUrl, |
89 | 82 | userCredentials.getActivateToken()); |
90 | 83 | String email = savedUser.getEmail(); |
... | ... | @@ -111,14 +104,7 @@ public class UserController extends BaseController { |
111 | 104 | User user = checkNotNull(userService.findUserByEmail(email)); |
112 | 105 | UserCredentials userCredentials = userService.findUserCredentialsByUserId(user.getId()); |
113 | 106 | if (!userCredentials.isEnabled()) { |
114 | - String scheme = request.getScheme(); | |
115 | - if (request.getHeader("x-forwarded-proto") != null) { | |
116 | - scheme = request.getHeader("x-forwarded-proto"); | |
117 | - } | |
118 | - String baseUrl = String.format("%s://%s:%d", | |
119 | - scheme, | |
120 | - request.getServerName(), | |
121 | - request.getServerPort()); | |
107 | + String baseUrl = constructBaseUrl(request); | |
122 | 108 | String activateUrl = String.format("%s/api/noauth/activate?activateToken=%s", baseUrl, |
123 | 109 | userCredentials.getActivateToken()); |
124 | 110 | mailService.sendActivationEmail(activateUrl, email); | ... | ... |