Implement proper handbook authentication (pt. 1)

This commit is contained in:
KingRainbow44
2023-05-16 02:38:01 -04:00
Unverified
parent 79d417c3ca
commit f1cf6da178
28 changed files with 1019 additions and 53 deletions
@@ -0,0 +1,34 @@
package emu.grasscutter.auth;
import emu.grasscutter.auth.AuthenticationSystem.AuthenticationRequest;
import lombok.Builder;
import lombok.Getter;
/** Handles player authentication for the web GM handbook. */
public interface HandbookAuthenticator {
@Getter @Builder
class Response {
private final int status;
private final String body;
}
/**
* Invoked when the user requests to authenticate.
* This should respond with a page that allows the user to authenticate.
*
* @route GET /handbook/authenticate
* @param request The authentication request.
*/
void presentPage(AuthenticationRequest request);
/**
* Invoked when the user requests to authenticate.
* This is called when the user submits the authentication form.
* This should respond with HTML that sends a message to the GM Handbook.
* See the default handbook authentication page for an example.
*
* @param request The authentication request.
* @return The response to send to the client.
*/
Response authenticate(AuthenticationRequest request);
}