60 lines
1.6 KiB
Java
60 lines
1.6 KiB
Java
package eu.oskar3123.spigot2fa.listener;
|
|
|
|
import eu.oskar3123.spigot2fa.Main;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
import org.bukkit.event.player.PlayerJoinEvent;
|
|
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
import java.util.UUID;
|
|
|
|
public class JoinQuitListener implements Listener
|
|
{
|
|
|
|
private Main plugin;
|
|
private Set<UUID> waitingForCode = new HashSet<>();
|
|
|
|
public JoinQuitListener(Main plugin)
|
|
{
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
@EventHandler
|
|
public void onJoin(PlayerJoinEvent event)
|
|
{
|
|
boolean enabled = plugin.tfaHandler.hasEnabled2FA(event.getPlayer().getUniqueId());
|
|
if (!enabled)
|
|
{
|
|
return;
|
|
}
|
|
event.getPlayer().sendMessage("Enter 2FA code");
|
|
waitingForCode.add(event.getPlayer().getUniqueId());
|
|
}
|
|
|
|
@EventHandler
|
|
public void chat(AsyncPlayerChatEvent event)
|
|
{
|
|
if (!waitingForCode.contains(event.getPlayer().getUniqueId()))
|
|
{
|
|
return;
|
|
}
|
|
boolean correct = plugin.tfaHandler.matchCode(event.getPlayer(), event.getMessage());
|
|
waitingForCode.remove(event.getPlayer().getUniqueId());
|
|
event.setCancelled(true);
|
|
if (!correct)
|
|
{
|
|
final Player player = event.getPlayer();
|
|
Bukkit.getScheduler().runTask(plugin, () -> player.kickPlayer("Wrong code!"));
|
|
}
|
|
else
|
|
{
|
|
event.getPlayer().sendMessage("Logged in");
|
|
}
|
|
}
|
|
|
|
}
|