Added logout command.
This commit is contained in:
parent
091be6b588
commit
aba4100297
|
@ -10,6 +10,6 @@ loader_version=0.7.8+build.189
|
|||
fabric_version=0.5.6+build.313-1.16
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.3.0
|
||||
mod_version = 1.3.1
|
||||
maven_group = org.samo_lego
|
||||
archives_base_name = simpleauth
|
||||
|
|
|
@ -9,6 +9,7 @@ import net.minecraft.entity.player.PlayerEntity;
|
|||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.Inventory;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.text.LiteralText;
|
||||
import net.minecraft.text.Text;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
@ -25,6 +26,8 @@ import org.samo_lego.simpleauth.utils.AuthConfig;
|
|||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
public class SimpleAuth implements DedicatedServerModInitializer {
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
@ -66,6 +69,7 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
|||
CommandRegistry.INSTANCE.register(false, dispatcher -> {
|
||||
RegisterCommand.registerCommand(dispatcher);
|
||||
LoginCommand.registerCommand(dispatcher);
|
||||
LogoutCommand.registerCommand(dispatcher);
|
||||
ChangepwCommand.registerCommand(dispatcher);
|
||||
UnregisterCommand.registerCommand(dispatcher);
|
||||
AuthCommand.registerCommand(dispatcher);
|
||||
|
@ -96,4 +100,34 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
|||
player.setInvisible(false);
|
||||
player.sendMessage(msg);
|
||||
}
|
||||
|
||||
// Getting some config options
|
||||
private static Text notAuthenticated() {
|
||||
if(SimpleAuth.config.main.enableGlobalPassword) {
|
||||
return new LiteralText(SimpleAuth.config.lang.loginRequired);
|
||||
}
|
||||
return new LiteralText(SimpleAuth.config.lang.notAuthenticated);
|
||||
}
|
||||
private static Text timeExpired = new LiteralText(SimpleAuth.config.lang.timeExpired);
|
||||
private static int delay = SimpleAuth.config.main.delay;
|
||||
|
||||
|
||||
public static void deauthenticatePlayer(ServerPlayerEntity player) {
|
||||
// Marking player as not authenticated, (re)setting login tries to zero
|
||||
SimpleAuth.deauthenticatedUsers.put(player, 0);
|
||||
|
||||
// Player is now not authenticated
|
||||
player.sendMessage(notAuthenticated());
|
||||
// Setting the player to be invisible to mobs and also invulnerable
|
||||
player.setInvulnerable(SimpleAuth.config.main.playerInvulnerable);
|
||||
player.setInvisible(SimpleAuth.config.main.playerInvisible);
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(!SimpleAuth.isAuthenticated(player)) // Kicking player if not authenticated
|
||||
player.networkHandler.disconnect(timeExpired);
|
||||
}
|
||||
}, delay * 1000);
|
||||
}
|
||||
}
|
|
@ -20,7 +20,7 @@ public class LoginCommand {
|
|||
private static Text alreadyAuthenticated = new LiteralText(SimpleAuth.config.lang.alreadyAuthenticated);
|
||||
private static Text loginTriesExceeded = new LiteralText(SimpleAuth.config.lang.loginTriesExceeded);
|
||||
private static Text successfullyAuthenticated = new LiteralText(SimpleAuth.config.lang.successfullyAuthenticated);
|
||||
private static int maxLoginTries = 3;
|
||||
private static int maxLoginTries = SimpleAuth.config.main.maxLoginTries;
|
||||
|
||||
public static void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher) {
|
||||
// Registering the "/login" command
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
package org.samo_lego.simpleauth.commands;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import net.minecraft.server.command.ServerCommandSource;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.text.LiteralText;
|
||||
import net.minecraft.text.Text;
|
||||
import org.samo_lego.simpleauth.SimpleAuth;
|
||||
|
||||
import static net.minecraft.server.command.CommandManager.literal;
|
||||
|
||||
public class LogoutCommand {
|
||||
private static Text successfulLogout = new LiteralText(SimpleAuth.config.lang.successfulLogout);
|
||||
|
||||
public static void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher) {
|
||||
// Registering the "/login" command
|
||||
dispatcher.register(literal("login")
|
||||
.executes(ctx -> logout(ctx.getSource())) // Tries to authenticate user
|
||||
);
|
||||
}
|
||||
|
||||
private static int logout(ServerCommandSource serverCommandSource) throws CommandSyntaxException {
|
||||
ServerPlayerEntity player = serverCommandSource.getPlayer();
|
||||
SimpleAuth.deauthenticatePlayer(player);
|
||||
return 1;
|
||||
}
|
||||
}
|
|
@ -24,30 +24,10 @@ public class AuthEventHandler {
|
|||
}
|
||||
return new LiteralText(SimpleAuth.config.lang.notAuthenticated);
|
||||
}
|
||||
private static Text timeExpired = new LiteralText(SimpleAuth.config.lang.timeExpired);
|
||||
private static int delay = SimpleAuth.config.main.delay;
|
||||
|
||||
// Player joining the server
|
||||
public static void onPlayerJoin(ServerPlayerEntity player) {
|
||||
// Marking player as not authenticated, (re)setting login tries to zero
|
||||
SimpleAuth.deauthenticatedUsers.put(player, 0);
|
||||
|
||||
// Player not authenticated
|
||||
// If clause actually not needed, since we add player to deauthenticated hashset above
|
||||
if (!SimpleAuth.isAuthenticated(player)) {
|
||||
player.sendMessage(notAuthenticated());
|
||||
// Setting the player to be invisible to mobs and also invulnerable
|
||||
player.setInvulnerable(SimpleAuth.config.main.playerInvulnerable);
|
||||
player.setInvisible(SimpleAuth.config.main.playerInvisible);
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(!SimpleAuth.isAuthenticated(player)) // Kicking player if not authenticated
|
||||
player.networkHandler.disconnect(timeExpired);
|
||||
}
|
||||
}, delay * 1000);
|
||||
}
|
||||
SimpleAuth.deauthenticatePlayer(player);
|
||||
}
|
||||
|
||||
// Player chatting
|
||||
|
|
|
@ -86,7 +86,7 @@ public class AuthConfig {
|
|||
public String userdataUpdated = "§aUserdata updated.";
|
||||
public String accountDeleted = "§4Your account was successfully deleted!";
|
||||
public String configurationReloaded = "§aConfiguration file was reloaded successfully.";
|
||||
|
||||
public String successfulLogout;
|
||||
}
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final Gson gson = new GsonBuilder()
|
||||
|
|
Loading…
Reference in New Issue