@Autowired public AuthenticationSourceServiceImpl(Collection<? extends AuthenticationSourceProvider> providers) { this.providers = Maps.uniqueIndex( providers, p -> p.getSource().getId() ); }
default AuthenticationSource getAuthenticationSource(String mode) throws AuthenticationSourceProviderNotFoundException { return getAuthenticationSourceProvider(mode).getSource(); }
@Override public Optional<Account> findUserByNameAndSource(String username, AuthenticationSourceProvider sourceProvider) { return Optional.ofNullable( getFirstItem( "SELECT * FROM ACCOUNTS WHERE MODE = :mode AND NAME = :name", params("name", username).addValue("mode", sourceProvider.getSource().getId()), (rs, rowNum) -> toAccount(rs, mode -> sourceProvider.getSource()) ) ); }