2019-06-02 05:03:08 +03:00
|
|
|
package pro.gravit.launchserver.auth;
|
2019-03-22 09:14:29 +03:00
|
|
|
|
2019-06-03 11:50:28 +03:00
|
|
|
import pro.gravit.launchserver.LaunchServer;
|
2019-06-02 05:03:08 +03:00
|
|
|
import pro.gravit.launchserver.auth.handler.AuthHandler;
|
|
|
|
import pro.gravit.launchserver.auth.provider.AuthProvider;
|
|
|
|
import pro.gravit.launchserver.auth.texture.TextureProvider;
|
2019-03-22 09:14:29 +03:00
|
|
|
|
2019-10-19 19:46:04 +03:00
|
|
|
import java.io.IOException;
|
2020-01-19 09:50:48 +03:00
|
|
|
import java.util.Map;
|
2019-10-19 19:46:04 +03:00
|
|
|
|
2019-03-22 09:14:29 +03:00
|
|
|
public class AuthProviderPair {
|
2020-01-19 09:50:48 +03:00
|
|
|
public AuthProvider provider;
|
|
|
|
public AuthHandler handler;
|
|
|
|
public TextureProvider textureProvider;
|
|
|
|
public Map<String, String> links;
|
2020-02-11 08:08:35 +03:00
|
|
|
public transient String name;
|
2019-04-13 20:55:01 +03:00
|
|
|
public String displayName;
|
2019-10-19 19:43:25 +03:00
|
|
|
public final boolean isDefault = true;
|
2019-03-22 09:14:29 +03:00
|
|
|
|
2020-03-20 02:52:36 +03:00
|
|
|
public AuthProviderPair(AuthProvider provider, AuthHandler handler, TextureProvider textureProvider) {
|
2019-03-22 09:14:29 +03:00
|
|
|
this.provider = provider;
|
|
|
|
this.handler = handler;
|
|
|
|
this.textureProvider = textureProvider;
|
|
|
|
}
|
|
|
|
|
2020-02-11 08:08:35 +03:00
|
|
|
public void init(LaunchServer srv, String name) {
|
|
|
|
this.name = name;
|
|
|
|
if(links != null) link(srv);
|
2020-01-19 09:50:48 +03:00
|
|
|
if(provider == null) throw new NullPointerException(String.format("Auth %s provider null", name));
|
|
|
|
if(handler == null) throw new NullPointerException(String.format("Auth %s handler null", name));
|
|
|
|
if(textureProvider == null) throw new NullPointerException(String.format("Auth %s textureProvider null", name));
|
2019-06-03 11:50:28 +03:00
|
|
|
provider.init(srv);
|
2019-06-03 13:12:10 +03:00
|
|
|
handler.init(srv);
|
2019-03-22 09:14:29 +03:00
|
|
|
}
|
2020-01-19 09:50:48 +03:00
|
|
|
public void link(LaunchServer srv)
|
|
|
|
{
|
|
|
|
links.forEach((k,v) -> {
|
|
|
|
AuthProviderPair pair = srv.config.getAuthProviderPair(v);
|
|
|
|
if(pair == null)
|
|
|
|
{
|
|
|
|
throw new NullPointerException(String.format("Auth %s link failed. Pair %s not found", name, v));
|
|
|
|
}
|
|
|
|
if("provider".equals(k))
|
|
|
|
{
|
|
|
|
if(pair.provider == null) throw new NullPointerException(String.format("Auth %s link failed. %s.provider is null", name, v));
|
|
|
|
provider = pair.provider;
|
|
|
|
}
|
|
|
|
else if("handler".equals(k))
|
|
|
|
{
|
|
|
|
if(pair.handler == null) throw new NullPointerException(String.format("Auth %s link failed. %s.handler is null", name, v));
|
|
|
|
handler = pair.handler;
|
|
|
|
}
|
|
|
|
else if("textureProvider".equals(k))
|
|
|
|
{
|
|
|
|
if(pair.textureProvider == null) throw new NullPointerException(String.format("Auth %s link failed. %s.textureProvider is null", name, v));
|
|
|
|
textureProvider = pair.textureProvider;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2019-03-22 09:14:29 +03:00
|
|
|
|
|
|
|
public void close() throws IOException {
|
|
|
|
provider.close();
|
|
|
|
handler.close();
|
|
|
|
textureProvider.close();
|
|
|
|
}
|
|
|
|
}
|