Skip to content

Commit

Permalink
Merge pull request #1 from orewaee/dev
Browse files Browse the repository at this point in the history
Managers redesigned
  • Loading branch information
orewaee authored Nov 6, 2023
2 parents 4b31332 + 22da8c0 commit 096a246
Show file tree
Hide file tree
Showing 17 changed files with 215 additions and 301 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

group = "dev.orewaee"
version = "0.1.0"
version = "0.2.0"

repositories {
mavenCentral()
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/dev/orewaee/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import dev.orewaee.utils.ServerManager;
import dev.orewaee.config.TomlConfig;

@Plugin(id = "discordauth", name = "DiscordAuth", version = "0.1.0", authors = {"orewaee"})
@Plugin(id = "discordauth", name = "DiscordAuth", version = "0.2.0", authors = {"orewaee"})
public class Main {
private final ProxyServer proxy;
private final Logger logger;
Expand Down
37 changes: 1 addition & 36 deletions src/main/java/dev/orewaee/account/Account.java
Original file line number Diff line number Diff line change
@@ -1,38 +1,3 @@
package dev.orewaee.account;

public class Account {
private String name, discord;

public Account(String name, String discord) {
this.name = name;
this.discord = discord;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDiscord() {
return discord;
}

public void setDiscord(String discord) {
this.discord = discord;
}

/*
@Override
public boolean equals(Object object) {
if (this == object) return true;
if (object == null || getClass() != object.getClass()) return false;
Account account = (Account) object;
return name.equals(account.name) && discord.equals(account.discord);
}
*/
}
public record Account(String name, String discord) {}
55 changes: 26 additions & 29 deletions src/main/java/dev/orewaee/account/AccountManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,65 +10,60 @@
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import org.jetbrains.annotations.Nullable;

import dev.orewaee.utils.FileHelper;
import dev.orewaee.config.TomlConfig;
import org.jetbrains.annotations.Nullable;

public class AccountManager {
private static Set<Account> accounts = new HashSet<>();

public static void addAccount(String name, String discord) {
if (accountExists(name, discord)) return;
Account account = new Account(name, discord);

accounts.add(new Account(name, discord));
if (containsAccount(account)) return;

accounts.add(account);

FileHelper.update();
}

public static void removeAccount(String name, String discord) {
if (!accountExists(name, discord)) return;
Account account = new Account(name, discord);

for (Account account : accounts) {
boolean namesEqual = name.equals(account.getName());
boolean discordsEqual = discord.equals(account.getDiscord());
if (!containsAccount(account)) return;

if (namesEqual && discordsEqual) {
accounts.remove(account);
accounts.remove(account);

FileHelper.update();
FileHelper.update();
}

break;
}
}
public static boolean containsAccount(Account account) {
return accounts.contains(account);
}

public static boolean accountExists(String name, String discord) {
boolean accountExistsByName = accountExistsByName(name);
boolean accountExistsByDiscord = accountExistsByDiscord(discord);
public static boolean containsAccount(String name, String discord) {
Account account = new Account(name, discord);

return accountExistsByName || accountExistsByDiscord;
return accounts.contains(account);
}

public static boolean accountExistsByName(String name) {
public static boolean containsAccountByName(String name) {
for (Account account : accounts)
if (name.equals(account.getName()))
if (name.equals(account.name()))
return true;

return false;
}

public static boolean accountExistsByDiscord(String discord) {
public static boolean containsAccountByDiscord(String discord) {
for (Account account : accounts)
if (discord.equals(account.getDiscord()))
if (discord.equals(account.discord()))
return true;

return false;
}

private static void setAccounts(Set<Account> newAccounts) {
accounts = newAccounts;
}

public static void loadAccounts() {
Path path = Path.of(TomlConfig.getAccountsFileName());
Path directories = path.getParent();
Expand All @@ -92,17 +87,19 @@ public static void loadAccounts() {
}
}

public static @Nullable Account getAccountByName(String name) {
@Nullable
public static Account getAccountByName(String name) {
for (Account account : accounts)
if (name.equals(account.getName()))
if (name.equals(account.name()))
return account;

return null;
}

public static @Nullable Account getAccountByDiscord(String discord) {
@Nullable
public static Account getAccountByDiscord(String discord) {
for (Account account : accounts)
if (discord.equals(account.getDiscord()))
if (discord.equals(account.discord()))
return account;

return null;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/dev/orewaee/bot/AddCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent even

String name = nameMapping.getAsString();

boolean accountExists = AccountManager.accountExists(name, discord);
boolean accountExists = AccountManager.containsAccount(name, discord);

if (accountExists) {
event.reply("Account already exists").queue();
Expand Down
9 changes: 4 additions & 5 deletions src/main/java/dev/orewaee/bot/EventsListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import com.velocitypowered.api.proxy.Player;

import net.kyori.adventure.sound.Sound;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;

Expand Down Expand Up @@ -34,24 +33,24 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) {

if (account == null) return;

String name = account.getName();
String name = account.name();

if (AuthManager.isLogged(name)) return;

Key key = KeyManager.getKeyByName(name);
Key key = KeyManager.getKeyByAccount(account);

if (key == null) {
event.getMessage().reply(TomlConfig.getKeyNotFoundMessage()).queue();
return;
}

if (!key.getKey().equals(messageContent)) {
if (!messageContent.equals(key.code())) {
event.getMessage().reply(TomlConfig.getInvalidKeyMessage()).queue();
return;
}

AuthManager.addLogged(name);
KeyManager.removeKeyByName(name);
KeyManager.removeKeyByAccount(account);

event.getMessage().reply(TomlConfig.getSuccessfulAuthDiscordMessage()).queue();

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/dev/orewaee/bot/RemoveCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent even

String name = nameMapping.getAsString();

boolean accountExists = AccountManager.accountExists(name, discord);
boolean accountExists = AccountManager.containsAccount(name, discord);

if (!accountExists) {
event.reply("Account no longer exists").queue();
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/dev/orewaee/commands/AccountCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ public void execute(Invocation invocation) {
String name = arguments[1];
String discord = arguments[2];

if (AccountManager.accountExistsByName(name)) {
if (AccountManager.containsAccountByName(name)) {
source.sendMessage(Component.text("An account with the same name already exists"));
return;
}

if (AccountManager.accountExistsByDiscord(discord)) {
if (AccountManager.containsAccountByDiscord(discord)) {
source.sendMessage(Component.text("An account with the same discord already exists"));
return;
}
Expand Down
24 changes: 19 additions & 5 deletions src/main/java/dev/orewaee/commands/TestCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import net.kyori.adventure.text.Component;

import java.util.List;
import java.util.Map;

public class TestCommand implements RawCommand {
@Override
Expand All @@ -30,7 +31,7 @@ public void execute(Invocation invocation) {
source.sendMessage(Component.text("ACCOUNTS:"));

for (Account account : AccountManager.getAccounts()) {
String content = account.getName() + " / " + account.getDiscord();
String content = account.name() + " / " + account.discord();

source.sendMessage(Component.text(content));
}
Expand All @@ -49,8 +50,12 @@ public void execute(Invocation invocation) {
source.sendMessage(Component.empty());
source.sendMessage(Component.text("KEYS:"));

for (Key key : KeyManager.getKeys()) {
Component content = Component.text(key.getName() + " / " + key.getKey());
Map<Account, Key> keys = KeyManager.getKeys();

for (Account account : keys.keySet()) {
Key key = keys.get(account);

Component content = Component.text(account.name() + "#" + account.discord() + " / " + key.code());

source.sendMessage(content);
}
Expand All @@ -67,10 +72,19 @@ public void execute(Invocation invocation) {
source.sendMessage(Component.empty());
source.sendMessage(Component.text("SESSIONS:"));

for (Session session : SessionManager.getSessions()) {
Component content = Component.text(session.getName() + " / " + session.getIp());
Map<Account, Session> sessions = SessionManager.getSessions();

for (Account account : sessions.keySet()) {
Session session = sessions.get(account);

Component content = Component.text(account.name() + "#" + account.discord() + " / " + session.ip());

source.sendMessage(content);
}
}

@Override
public boolean hasPermission(Invocation invocation) {
return invocation.source().hasPermission("discordauth.test");
}
}
1 change: 0 additions & 1 deletion src/main/java/dev/orewaee/config/TomlConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

import org.tomlj.Toml;
import org.tomlj.TomlParseResult;
Expand Down
26 changes: 18 additions & 8 deletions src/main/java/dev/orewaee/events/EventsListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void onServerPreConnect(ServerPreConnectEvent event) {
Player player = event.getPlayer();
String name = player.getUsername();

boolean accountExists = AccountManager.accountExistsByName(name);
boolean accountExists = AccountManager.containsAccountByName(name);

if (!accountExists) event.setResult(ServerResult.denied());

Expand Down Expand Up @@ -67,9 +67,13 @@ public void onPreLogin(PreLoginEvent event) {
String name = event.getUsername();
String ip = event.getConnection().getRemoteAddress().getHostString();

if (!AccountManager.containsAccountByName(name)) return;

Account account = AccountManager.getAccountByName(name);

System.out.printf("ip = %s\n", ip);

boolean sessionExists = SessionManager.sessionExistsByName(name);
boolean sessionExists = SessionManager.containsSession(account);

if (sessionExists) {

Expand All @@ -95,12 +99,14 @@ public void onLogin(LoginEvent event) {
return;
}

Session session = SessionManager.getSessionByName(name);
Session session = SessionManager.getSessionByAccount(account);

if (session != null) {
SessionManager.removeSession(session);

if (ip.equals(session.getIp())) {

SessionManager.removeSession(account);

if (ip.equals(session.ip())) {
AuthManager.addLogged(name);

Component message = MiniMessage.miniMessage().deserialize(TomlConfig.getSessionRestoredMessage());
Expand Down Expand Up @@ -131,13 +137,17 @@ public void onDisconnect(DisconnectEvent event) {
String name = player.getUsername();
String ip = player.getRemoteAddress().getHostString();

if (!AccountManager.containsAccountByName(name)) return;

Account account = AccountManager.getAccountByName(name);

if (AuthManager.isLogged(name)) {
Session session = SessionManager.getSessionByName(name);
Session session = SessionManager.getSessionByAccount(account);

if (session != null) SessionManager.removeSession(session);
if (session != null) SessionManager.removeSession(account);

AuthManager.removeLogged(name);
SessionManager.addSession(name, ip);
SessionManager.addSession(account, new Session(ip));
}

AuthManager.removeLogged(name);
Expand Down
Loading

0 comments on commit 096a246

Please sign in to comment.