+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package com.github.games647.fastlogin.bungee.hook;
+
+import com.github.games647.fastlogin.bungee.FastLoginBungee;
+import com.github.games647.fastlogin.core.hooks.AuthPlugin;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
+import red.mohist.sodionauth.bungee.implementation.BungeePlayer;
+import red.mohist.sodionauth.core.SodionAuthApi;
+import red.mohist.sodionauth.core.exception.AuthenticatedException;
+
+import java.util.concurrent.ExecutionException;
+
+/**
+ * GitHub: https://github.com/Mohist-Community/SodionAuth
+ *
+ * Project page: https://gitea.e-loli.com/SodionAuth/SodionAuth
+ *
+ * Bukkit: Unknown
+ *
+ * Spigot: https://www.spigotmc.org/resources/sodionauth.76944/
+ */
+public class SodionAuthHook implements AuthPlugin {
+
+ private final FastLoginBungee plugin;
+
+ public SodionAuthHook(FastLoginBungee plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public boolean forceLogin(ProxiedPlayer player) {
+ try {
+ SodionAuthApi.login(new BungeePlayer(player));
+ } catch (AuthenticatedException e) {
+ plugin.getLog().warn(ALREADY_AUTHENTICATED, player);
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public boolean forceRegister(ProxiedPlayer player, String password) {
+ try{
+ return SodionAuthApi.register(new BungeePlayer(player), password);
+ } catch (UnsupportedOperationException e){
+ plugin.getLog().warn("Currently SodionAuth is not accepting forceRegister, " +
+ "It may be caused by unsupported AuthBackend");
+ return false;
+ } catch (InterruptedException | ExecutionException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ public boolean isRegistered(String playerName) {
+ return SodionAuthApi.isRegistered(playerName);
+ }
+}