Improve some code

This commit is contained in:
xtaodada 2022-05-15 08:35:37 +08:00
parent 21b0a44ce7
commit 0310d47939
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
5 changed files with 31 additions and 22 deletions

View File

@ -3,7 +3,10 @@ package me.exzork.gcauth;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.auth.DefaultAuthentication;
import emu.grasscutter.plugin.Plugin; import emu.grasscutter.plugin.Plugin;
import static emu.grasscutter.Configuration.ACCOUNT;
import me.exzork.gcauth.handler.*; import me.exzork.gcauth.handler.*;
import me.exzork.gcauth.utils.Authentication; import me.exzork.gcauth.utils.Authentication;
@ -12,7 +15,6 @@ import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.logging.Logger;
public class GCAuth extends Plugin { public class GCAuth extends Plugin {
@ -35,14 +37,14 @@ public class GCAuth extends Plugin {
getLogger().info("GCAuth Enabled!"); getLogger().info("GCAuth Enabled!");
config.jwtSecret = Authentication.generateRandomString(32); config.jwtSecret = Authentication.generateRandomString(32);
saveConfig(); saveConfig();
if (Grasscutter.getConfig().account.autoCreate) { if (ACCOUNT.autoCreate) {
getLogger().warn("GCAuth does not support automatic account creation. Please disable in the server's config.json or just ignore this warning."); getLogger().warn("GCAuth does not support automatic account creation. Please disable in the server's config.json or just ignore this warning.");
} }
} }
@Override @Override
public void onDisable() { public void onDisable() {
Grasscutter.setAuthenticationSystem(new DefaultAuthentication());
} }
public void loadConfig() { public void loadConfig() {

View File

@ -1,9 +1,6 @@
package me.exzork.gcauth.handler; package me.exzork.gcauth.handler;
import emu.grasscutter.auth.AuthenticationSystem; import emu.grasscutter.auth.*;
import emu.grasscutter.auth.Authenticator;
import emu.grasscutter.auth.DefaultAuthenticators;
import emu.grasscutter.auth.ExternalAuthenticator;
import emu.grasscutter.server.http.objects.ComboTokenResJson; import emu.grasscutter.server.http.objects.ComboTokenResJson;
import emu.grasscutter.server.http.objects.LoginResultJson; import emu.grasscutter.server.http.objects.LoginResultJson;
@ -11,16 +8,16 @@ public class GCAuthAuthentication implements AuthenticationSystem {
private final Authenticator<LoginResultJson> gcAuthAuthenticator = new GCAuthenticators.GCAuthAuthenticator(); private final Authenticator<LoginResultJson> gcAuthAuthenticator = new GCAuthenticators.GCAuthAuthenticator();
private final Authenticator<LoginResultJson> tokenAuthenticator = new DefaultAuthenticators.TokenAuthenticator(); private final Authenticator<LoginResultJson> tokenAuthenticator = new DefaultAuthenticators.TokenAuthenticator();
private final Authenticator<ComboTokenResJson> sessionKeyAuthenticator = new DefaultAuthenticators.SessionKeyAuthenticator(); private final Authenticator<ComboTokenResJson> sessionKeyAuthenticator = new DefaultAuthenticators.SessionKeyAuthenticator();
private final GCAuthAuthenticationHandler handler = new GCAuthAuthenticationHandler(); private final GCAuthAuthenticationHandler externalAuthenticator = new GCAuthAuthenticationHandler();
@Override @Override
public void createAccount(String username, String password) { public void createAccount(String username, String password) {
// Unhandled.
} }
@Override @Override
public void resetPassword(String s) { public void resetPassword(String username) {
// Unhandled.
} }
@Override @Override
@ -45,6 +42,6 @@ public class GCAuthAuthentication implements AuthenticationSystem {
@Override @Override
public ExternalAuthenticator getExternalAuthenticator() { public ExternalAuthenticator getExternalAuthenticator() {
return handler; return externalAuthenticator;
} }
} }

View File

@ -6,6 +6,7 @@ import emu.grasscutter.auth.AuthenticationSystem;
import emu.grasscutter.auth.ExternalAuthenticator; import emu.grasscutter.auth.ExternalAuthenticator;
import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.database.DatabaseHelper;
import emu.grasscutter.game.Account; import emu.grasscutter.game.Account;
import express.http.Response;
import me.exzork.gcauth.GCAuth; import me.exzork.gcauth.GCAuth;
import me.exzork.gcauth.json.AuthResponseJson; import me.exzork.gcauth.json.AuthResponseJson;
import me.exzork.gcauth.json.ChangePasswordAccount; import me.exzork.gcauth.json.ChangePasswordAccount;
@ -17,8 +18,11 @@ public class GCAuthAuthenticationHandler implements ExternalAuthenticator {
@Override @Override
public void handleLogin(AuthenticationSystem.AuthenticationRequest authenticationRequest) { public void handleLogin(AuthenticationSystem.AuthenticationRequest authenticationRequest) {
AuthResponseJson authResponse = new AuthResponseJson(); AuthResponseJson authResponse = new AuthResponseJson();
Response response = authenticationRequest.getResponse();
assert response != null; // This should never be null.
try { try {
String requestBody = authenticationRequest.getRequest().ctx().body(); String requestBody = response.ctx().body();
if (requestBody.isEmpty()) { if (requestBody.isEmpty()) {
authResponse.success = false; authResponse.success = false;
authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request" authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request"
@ -55,15 +59,18 @@ public class GCAuthAuthenticationHandler implements ExternalAuthenticator {
Grasscutter.getLogger().error("[Dispatch] An error occurred while a user was logging in."); Grasscutter.getLogger().error("[Dispatch] An error occurred while a user was logging in.");
e.printStackTrace(); e.printStackTrace();
} }
authenticationRequest.getResponse().send(authResponse); response.send(authResponse);
} }
@Override @Override
public void handleAccountCreation(AuthenticationSystem.AuthenticationRequest authenticationRequest) { public void handleAccountCreation(AuthenticationSystem.AuthenticationRequest authenticationRequest) {
AuthResponseJson authResponse = new AuthResponseJson(); AuthResponseJson authResponse = new AuthResponseJson();
Response response = authenticationRequest.getResponse();
assert response != null; // This should never be null.
Account account = null; Account account = null;
try { try {
String requestBody = authenticationRequest.getRequest().ctx().body(); String requestBody = response.ctx().body();
if (requestBody.isEmpty()) { if (requestBody.isEmpty()) {
authResponse.success = false; authResponse.success = false;
authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request" authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request"
@ -129,14 +136,17 @@ public class GCAuthAuthenticationHandler implements ExternalAuthenticator {
} }
} }
} }
authenticationRequest.getResponse().send(authResponse); response.send(authResponse);
} }
@Override @Override
public void handlePasswordReset(AuthenticationSystem.AuthenticationRequest authenticationRequest) { public void handlePasswordReset(AuthenticationSystem.AuthenticationRequest authenticationRequest) {
AuthResponseJson authResponse = new AuthResponseJson(); AuthResponseJson authResponse = new AuthResponseJson();
Response response = authenticationRequest.getResponse();
assert response != null; // This should never be null.
try { try {
String requestBody = authenticationRequest.getRequest().ctx().body(); String requestBody = response.ctx().body();
if (requestBody.isEmpty()) { if (requestBody.isEmpty()) {
authResponse.success = false; authResponse.success = false;
authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request" authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request"
@ -183,6 +193,6 @@ public class GCAuthAuthenticationHandler implements ExternalAuthenticator {
e.printStackTrace(); e.printStackTrace();
} }
authenticationRequest.getResponse().send(authResponse); response.send(authResponse);
} }
} }

View File

@ -3,7 +3,6 @@ package me.exzork.gcauth.handler;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.auth.AuthenticationSystem; import emu.grasscutter.auth.AuthenticationSystem;
import emu.grasscutter.auth.Authenticator; import emu.grasscutter.auth.Authenticator;
import emu.grasscutter.database.DatabaseHelper;
import emu.grasscutter.game.Account; import emu.grasscutter.game.Account;
import emu.grasscutter.server.http.objects.LoginResultJson; import emu.grasscutter.server.http.objects.LoginResultJson;
import me.exzork.gcauth.utils.Authentication; import me.exzork.gcauth.utils.Authentication;
@ -17,7 +16,8 @@ public class GCAuthenticators {
var response = new LoginResultJson(); var response = new LoginResultJson();
var requestData = authenticationRequest.getPasswordRequest(); var requestData = authenticationRequest.getPasswordRequest();
assert requestData != null; assert requestData != null; // This should never be null.
Account account = Authentication.getAccountByOneTimeToken(requestData.account); Account account = Authentication.getAccountByOneTimeToken(requestData.account);
if(account == null) { if(account == null) {
Grasscutter.getLogger().info("[GCAuth] Client " + requestData.account + " tried to login with invalid one time token."); Grasscutter.getLogger().info("[GCAuth] Client " + requestData.account + " tried to login with invalid one time token.");

View File

@ -1,7 +1,7 @@
{ {
"name": "GCAuth", "name": "GCAuth",
"description": "GCAuth is a plugin that allows you to implement authentication for your server.", "description": "GCAuth is a plugin that allows you to implement authentication for your server.",
"version": "1.0.0", "version": "2.2.0",
"author": ["ExZork"], "author": ["ExZork"],
"mainClass": "me.exzork.gcauth.GCAuth" "mainClass": "me.exzork.gcauth.GCAuth"
} }