CurrentTenantResolver.java
package com.tradecloud.repository.multitenant;
import com.tradecloud.authentication.CustomOAuth2User;
import com.tradecloud.authentication.User;
import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
public class CurrentTenantResolver implements CurrentTenantIdentifierResolver {
@Override
public String resolveCurrentTenantIdentifier() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String database = "tradecloud_default";
if (authentication != null && authentication.getPrincipal() instanceof User && ((User) authentication.getPrincipal()).getUsername() != null
&& ((User) authentication.getPrincipal()).getActiveClient() != null) {
User user = (User) authentication.getPrincipal();
database = "tradecloud_" + user.getActiveClient();
}
if (authentication != null && authentication.getPrincipal() instanceof CustomOAuth2User
&& ( ((CustomOAuth2User) authentication.getPrincipal()).getUser()).getUsername() != null
&& (((CustomOAuth2User) authentication.getPrincipal()).getUser()).getActiveClient() != null) {
User user = ((CustomOAuth2User) authentication.getPrincipal()).getUser();
database = "tradecloud_" + user.getActiveClient();
}
return database;
}
@Override
public boolean validateExistingCurrentSessions() {
return true;
}
}