package emu.grasscutter.auth; import emu.grasscutter.Grasscutter; import emu.grasscutter.auth.DefaultAuthenticators.*; import emu.grasscutter.game.Account; import emu.grasscutter.server.http.objects.ComboTokenResJson; import emu.grasscutter.server.http.objects.LoginResultJson; import static emu.grasscutter.config.Configuration.ACCOUNT; import static emu.grasscutter.utils.Language.translate; /** * The default Grasscutter authentication implementation. * Allows all users to access any account. */ public final class DefaultAuthentication implements AuthenticationSystem { private Authenticator passwordAuthenticator; private Authenticator tokenAuthenticator = new TokenAuthenticator(); private Authenticator sessionKeyAuthenticator = new SessionKeyAuthenticator(); private ExternalAuthenticator externalAuthenticator = new ExternalAuthentication(); private OAuthAuthenticator oAuthAuthenticator = new OAuthAuthentication(); public DefaultAuthentication() { if (ACCOUNT.EXPERIMENTAL_RealPassword) { passwordAuthenticator = new ExperimentalPasswordAuthenticator(); } else { passwordAuthenticator = new PasswordAuthenticator(); } } @Override public void createAccount(String username, String password) { // Unhandled. The default authenticator doesn't store passwords. } @Override public void resetPassword(String username) { // Unhandled. The default authenticator doesn't store passwords. } @Override public Account verifyUser(String details) { Grasscutter.getLogger().info(translate("messages.dispatch.authentication.default_unable_to_verify")); return null; } @Override public Authenticator getPasswordAuthenticator() { return this.passwordAuthenticator; } @Override public Authenticator getTokenAuthenticator() { return this.tokenAuthenticator; } @Override public Authenticator getSessionKeyAuthenticator() { return this.sessionKeyAuthenticator; } @Override public ExternalAuthenticator getExternalAuthenticator() { return this.externalAuthenticator; } @Override public OAuthAuthenticator getOAuthAuthenticator() { return this.oAuthAuthenticator; } }