Skip to content

Commit

Permalink
Merge pull request #17 from omg-xtao/improve
Browse files Browse the repository at this point in the history
Improve some code
  • Loading branch information
exzork authored May 15, 2022
2 parents 181cb7d + 44f47d9 commit 9d991b2
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 22 deletions.
7 changes: 5 additions & 2 deletions src/main/java/me/exzork/gcauth/GCAuth.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.auth.DefaultAuthentication;
import emu.grasscutter.plugin.Plugin;
import static emu.grasscutter.Configuration.ACCOUNT;

import me.exzork.gcauth.handler.*;
import me.exzork.gcauth.utils.Authentication;

Expand Down Expand Up @@ -34,14 +37,14 @@ public void onEnable() {
getLogger().info("GCAuth Enabled!");
config.jwtSecret = Authentication.generateRandomString(32);
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.");
}
}

@Override
public void onDisable() {

Grasscutter.setAuthenticationSystem(new DefaultAuthentication());
}

public void loadConfig() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
package me.exzork.gcauth.handler;

import emu.grasscutter.auth.AuthenticationSystem;
import emu.grasscutter.auth.Authenticator;
import emu.grasscutter.auth.DefaultAuthenticators;
import emu.grasscutter.auth.ExternalAuthenticator;
import emu.grasscutter.auth.*;
import emu.grasscutter.server.http.objects.ComboTokenResJson;
import emu.grasscutter.server.http.objects.LoginResultJson;

public class GCAuthAuthenticationHandler implements AuthenticationSystem {
private final Authenticator<LoginResultJson> gcAuthAuthenticator = new GCAuthenticators.GCAuthAuthenticator();
private final Authenticator<LoginResultJson> tokenAuthenticator = new DefaultAuthenticators.TokenAuthenticator();
private final Authenticator<ComboTokenResJson> sessionKeyAuthenticator = new DefaultAuthenticators.SessionKeyAuthenticator();
private final GCAuthExternalAuthenticator handler = new GCAuthExternalAuthenticator();
private final GCAuthExternalAuthenticator externalAuthenticator = new GCAuthExternalAuthenticator();

@Override
public void createAccount(String username, String password) {

// Unhandled.
}

@Override
public void resetPassword(String s) {

public void resetPassword(String username) {
// Unhandled.
}

@Override
Expand All @@ -45,6 +42,6 @@ public Authenticator<ComboTokenResJson> getSessionKeyAuthenticator() {

@Override
public ExternalAuthenticator getExternalAuthenticator() {
return handler;
return externalAuthenticator;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import emu.grasscutter.auth.ExternalAuthenticator;
import emu.grasscutter.database.DatabaseHelper;
import emu.grasscutter.game.Account;
import express.http.Response;
import me.exzork.gcauth.GCAuth;
import me.exzork.gcauth.json.AuthResponseJson;
import me.exzork.gcauth.json.ChangePasswordAccount;
Expand All @@ -17,8 +18,11 @@ public class GCAuthExternalAuthenticator implements ExternalAuthenticator {
@Override
public void handleLogin(AuthenticationSystem.AuthenticationRequest authenticationRequest) {
AuthResponseJson authResponse = new AuthResponseJson();
Response response = authenticationRequest.getResponse();
assert response != null; // This should never be null.

try {
String requestBody = authenticationRequest.getRequest().ctx().body();
String requestBody = response.ctx().body();
if (requestBody.isEmpty()) {
authResponse.success = false;
authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request"
Expand Down Expand Up @@ -55,15 +59,18 @@ public void handleLogin(AuthenticationSystem.AuthenticationRequest authenticatio
Grasscutter.getLogger().error("[Dispatch] An error occurred while a user was logging in.");
e.printStackTrace();
}
authenticationRequest.getResponse().send(authResponse);
response.send(authResponse);
}

@Override
public void handleAccountCreation(AuthenticationSystem.AuthenticationRequest authenticationRequest) {
AuthResponseJson authResponse = new AuthResponseJson();
Response response = authenticationRequest.getResponse();
assert response != null; // This should never be null.

Account account = null;
try {
String requestBody = authenticationRequest.getRequest().ctx().body();
String requestBody = response.ctx().body();
if (requestBody.isEmpty()) {
authResponse.success = false;
authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request"
Expand Down Expand Up @@ -129,14 +136,17 @@ public void handleAccountCreation(AuthenticationSystem.AuthenticationRequest aut
}
}
}
authenticationRequest.getResponse().send(authResponse);
response.send(authResponse);
}

@Override
public void handlePasswordReset(AuthenticationSystem.AuthenticationRequest authenticationRequest) {
AuthResponseJson authResponse = new AuthResponseJson();
Response response = authenticationRequest.getResponse();
assert response != null; // This should never be null.

try {
String requestBody = authenticationRequest.getRequest().ctx().body();
String requestBody = response.ctx().body();
if (requestBody.isEmpty()) {
authResponse.success = false;
authResponse.message = "EMPTY_BODY"; // ENG = "No data was sent with the request"
Expand Down Expand Up @@ -182,7 +192,6 @@ public void handlePasswordReset(AuthenticationSystem.AuthenticationRequest authe
Grasscutter.getLogger().error("[Dispatch] Error while changing user password.");
e.printStackTrace();
}

authenticationRequest.getResponse().send(authResponse);
response.send(authResponse);
}
}
4 changes: 2 additions & 2 deletions src/main/java/me/exzork/gcauth/handler/GCAuthenticators.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import emu.grasscutter.Grasscutter;
import emu.grasscutter.auth.AuthenticationSystem;
import emu.grasscutter.auth.Authenticator;
import emu.grasscutter.database.DatabaseHelper;
import emu.grasscutter.game.Account;
import emu.grasscutter.server.http.objects.LoginResultJson;
import me.exzork.gcauth.utils.Authentication;
Expand All @@ -17,7 +16,8 @@ public LoginResultJson authenticate(AuthenticationSystem.AuthenticationRequest a
var response = new LoginResultJson();

var requestData = authenticationRequest.getPasswordRequest();
assert requestData != null;
assert requestData != null; // This should never be null.

Account account = Authentication.getAccountByOneTimeToken(requestData.account);
if(account == null) {
Grasscutter.getLogger().info("[GCAuth] Client " + requestData.account + " tried to login with invalid one time token.");
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "GCAuth",
"description": "GCAuth is a plugin that allows you to implement authentication for your server.",
"version": "1.0.0",
"version": "2.2.0",
"author": ["ExZork"],
"mainClass": "me.exzork.gcauth.GCAuth"
}
}

0 comments on commit 9d991b2

Please # to comment.