Use x-forwarded-port header to detect base URL port.
This commit is contained in:
		
							parent
							
								
									efb03e4954
								
							
						
					
					
						commit
						d751ace71c
					
				@ -124,14 +124,7 @@ public class AuthController extends BaseController {
 | 
				
			|||||||
            HttpServletRequest request) throws ThingsboardException {
 | 
					            HttpServletRequest request) throws ThingsboardException {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            UserCredentials userCredentials = userService.requestPasswordReset(email);
 | 
					            UserCredentials userCredentials = userService.requestPasswordReset(email);
 | 
				
			||||||
            String scheme = request.getScheme();
 | 
					            String baseUrl = constructBaseUrl(request);
 | 
				
			||||||
            if (request.getHeader("x-forwarded-proto") != null) {
 | 
					 | 
				
			||||||
                scheme = request.getHeader("x-forwarded-proto");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            String baseUrl = String.format("%s://%s:%d",
 | 
					 | 
				
			||||||
                    scheme,
 | 
					 | 
				
			||||||
                    request.getServerName(), 
 | 
					 | 
				
			||||||
                    request.getServerPort());             
 | 
					 | 
				
			||||||
            String resetPasswordUrl = String.format("%s/api/noauth/resetPassword?resetToken=%s", baseUrl,
 | 
					            String resetPasswordUrl = String.format("%s/api/noauth/resetPassword?resetToken=%s", baseUrl,
 | 
				
			||||||
                    userCredentials.getResetToken());
 | 
					                    userCredentials.getResetToken());
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
@ -175,14 +168,7 @@ public class AuthController extends BaseController {
 | 
				
			|||||||
            UserCredentials credentials = userService.activateUserCredentials(activateToken, encodedPassword);
 | 
					            UserCredentials credentials = userService.activateUserCredentials(activateToken, encodedPassword);
 | 
				
			||||||
            User user = userService.findUserById(credentials.getUserId());
 | 
					            User user = userService.findUserById(credentials.getUserId());
 | 
				
			||||||
            SecurityUser securityUser = new SecurityUser(user, credentials.isEnabled());
 | 
					            SecurityUser securityUser = new SecurityUser(user, credentials.isEnabled());
 | 
				
			||||||
            String scheme = request.getScheme();
 | 
					            String baseUrl = constructBaseUrl(request);
 | 
				
			||||||
            if (request.getHeader("x-forwarded-proto") != null) {
 | 
					 | 
				
			||||||
                scheme = request.getHeader("x-forwarded-proto");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            String baseUrl = String.format("%s://%s:%d",
 | 
					 | 
				
			||||||
                    scheme,
 | 
					 | 
				
			||||||
                    request.getServerName(), 
 | 
					 | 
				
			||||||
                    request.getServerPort());             
 | 
					 | 
				
			||||||
            String loginUrl = String.format("%s/login", baseUrl);
 | 
					            String loginUrl = String.format("%s/login", baseUrl);
 | 
				
			||||||
            String email = user.getEmail();
 | 
					            String email = user.getEmail();
 | 
				
			||||||
            mailService.sendAccountActivatedEmail(loginUrl, email);
 | 
					            mailService.sendAccountActivatedEmail(loginUrl, email);
 | 
				
			||||||
@ -216,14 +202,7 @@ public class AuthController extends BaseController {
 | 
				
			|||||||
                userCredentials = userService.saveUserCredentials(userCredentials);
 | 
					                userCredentials = userService.saveUserCredentials(userCredentials);
 | 
				
			||||||
                User user = userService.findUserById(userCredentials.getUserId());
 | 
					                User user = userService.findUserById(userCredentials.getUserId());
 | 
				
			||||||
                SecurityUser securityUser = new SecurityUser(user, userCredentials.isEnabled());
 | 
					                SecurityUser securityUser = new SecurityUser(user, userCredentials.isEnabled());
 | 
				
			||||||
                String scheme = request.getScheme();
 | 
					                String baseUrl = constructBaseUrl(request);
 | 
				
			||||||
                if (request.getHeader("x-forwarded-proto") != null) {
 | 
					 | 
				
			||||||
                    scheme = request.getHeader("x-forwarded-proto");
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                String baseUrl = String.format("%s://%s:%d",
 | 
					 | 
				
			||||||
                        scheme,
 | 
					 | 
				
			||||||
                        request.getServerName(), 
 | 
					 | 
				
			||||||
                        request.getServerPort());             
 | 
					 | 
				
			||||||
                String loginUrl = String.format("%s/login", baseUrl);
 | 
					                String loginUrl = String.format("%s/login", baseUrl);
 | 
				
			||||||
                String email = user.getEmail();
 | 
					                String email = user.getEmail();
 | 
				
			||||||
                mailService.sendPasswordWasResetEmail(loginUrl, email);
 | 
					                mailService.sendPasswordWasResetEmail(loginUrl, email);
 | 
				
			||||||
 | 
				
			|||||||
@ -57,6 +57,7 @@ import org.thingsboard.server.service.component.ComponentDiscoveryService;
 | 
				
			|||||||
import org.thingsboard.server.service.security.model.SecurityUser;
 | 
					import org.thingsboard.server.service.security.model.SecurityUser;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.mail.MessagingException;
 | 
					import javax.mail.MessagingException;
 | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletRequest;
 | 
				
			||||||
import javax.servlet.http.HttpServletResponse;
 | 
					import javax.servlet.http.HttpServletResponse;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Optional;
 | 
					import java.util.Optional;
 | 
				
			||||||
@ -381,4 +382,23 @@ public abstract class BaseController {
 | 
				
			|||||||
        checkTenantId(rule.getTenantId());
 | 
					        checkTenantId(rule.getTenantId());
 | 
				
			||||||
        return rule;
 | 
					        return rule;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected String constructBaseUrl(HttpServletRequest request) {
 | 
				
			||||||
 | 
					        String scheme = request.getScheme();
 | 
				
			||||||
 | 
					        if (request.getHeader("x-forwarded-proto") != null) {
 | 
				
			||||||
 | 
					            scheme = request.getHeader("x-forwarded-proto");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        int serverPort = request.getServerPort();
 | 
				
			||||||
 | 
					        if (request.getHeader("x-forwarded-port") != null) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                serverPort = request.getIntHeader("x-forwarded-port");
 | 
				
			||||||
 | 
					            } catch (NumberFormatException e) {}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String baseUrl = String.format("%s://%s:%d",
 | 
				
			||||||
 | 
					                scheme,
 | 
				
			||||||
 | 
					                request.getServerName(),
 | 
				
			||||||
 | 
					                serverPort);
 | 
				
			||||||
 | 
					        return baseUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -77,14 +77,7 @@ public class UserController extends BaseController {
 | 
				
			|||||||
            User savedUser = checkNotNull(userService.saveUser(user));
 | 
					            User savedUser = checkNotNull(userService.saveUser(user));
 | 
				
			||||||
            if (sendEmail) {
 | 
					            if (sendEmail) {
 | 
				
			||||||
                UserCredentials userCredentials = userService.findUserCredentialsByUserId(savedUser.getId());
 | 
					                UserCredentials userCredentials = userService.findUserCredentialsByUserId(savedUser.getId());
 | 
				
			||||||
                String scheme = request.getScheme();
 | 
					                String baseUrl = constructBaseUrl(request);
 | 
				
			||||||
                if (request.getHeader("x-forwarded-proto") != null) {
 | 
					 | 
				
			||||||
                    scheme = request.getHeader("x-forwarded-proto");
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                String baseUrl = String.format("%s://%s:%d",
 | 
					 | 
				
			||||||
                        scheme,
 | 
					 | 
				
			||||||
                        request.getServerName(), 
 | 
					 | 
				
			||||||
                        request.getServerPort());             
 | 
					 | 
				
			||||||
                String activateUrl = String.format("%s/api/noauth/activate?activateToken=%s", baseUrl,
 | 
					                String activateUrl = String.format("%s/api/noauth/activate?activateToken=%s", baseUrl,
 | 
				
			||||||
                        userCredentials.getActivateToken());
 | 
					                        userCredentials.getActivateToken());
 | 
				
			||||||
                String email = savedUser.getEmail();
 | 
					                String email = savedUser.getEmail();
 | 
				
			||||||
@ -111,14 +104,7 @@ public class UserController extends BaseController {
 | 
				
			|||||||
            User user = checkNotNull(userService.findUserByEmail(email));
 | 
					            User user = checkNotNull(userService.findUserByEmail(email));
 | 
				
			||||||
            UserCredentials userCredentials = userService.findUserCredentialsByUserId(user.getId());
 | 
					            UserCredentials userCredentials = userService.findUserCredentialsByUserId(user.getId());
 | 
				
			||||||
            if (!userCredentials.isEnabled()) {
 | 
					            if (!userCredentials.isEnabled()) {
 | 
				
			||||||
                String scheme = request.getScheme();
 | 
					                String baseUrl = constructBaseUrl(request);
 | 
				
			||||||
                if (request.getHeader("x-forwarded-proto") != null) {
 | 
					 | 
				
			||||||
                    scheme = request.getHeader("x-forwarded-proto");
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                String baseUrl = String.format("%s://%s:%d",
 | 
					 | 
				
			||||||
                        scheme,
 | 
					 | 
				
			||||||
                        request.getServerName(), 
 | 
					 | 
				
			||||||
                        request.getServerPort());             
 | 
					 | 
				
			||||||
                String activateUrl = String.format("%s/api/noauth/activate?activateToken=%s", baseUrl,
 | 
					                String activateUrl = String.format("%s/api/noauth/activate?activateToken=%s", baseUrl,
 | 
				
			||||||
                        userCredentials.getActivateToken());
 | 
					                        userCredentials.getActivateToken());
 | 
				
			||||||
                mailService.sendActivationEmail(activateUrl, email);
 | 
					                mailService.sendActivationEmail(activateUrl, email);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user