Launcher/LaunchServer/src/main/java/ru/gravit/launchserver/auth/provider/JsonAuthProvider.java

57 lines
1.7 KiB
Java

package ru.gravit.launchserver.auth.provider;
import java.io.IOException;
import java.net.URL;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import ru.gravit.launchserver.auth.ClientPermissions;
import ru.gravit.utils.HTTPRequest;
import ru.gravit.utils.helper.SecurityHelper;
public final class JsonAuthProvider extends AuthProvider {
private Gson gson = new Gson();
private URL url;
public class authResult {
String username;
String error;
long permissions;
}
public class authRequest {
public authRequest(String username, String password, String ip) {
this.username = username;
this.password = password;
this.ip = ip;
}
String username;
String password;
String ip;
}
@Override
public AuthProviderResult auth(String login, String password, String ip) throws IOException {
authRequest authRequest = new authRequest(login, password, ip);
JsonElement request = gson.toJsonTree(authRequest);
JsonElement content = HTTPRequest.jsonRequest(request, url);
if (!content.isJsonObject())
return authError("Authentication server response is malformed");
authResult result = gson.fromJson(content, authResult.class);
if (result.username != null)
return new AuthProviderResult(result.username, SecurityHelper.randomStringToken(), new ClientPermissions(result.permissions));
else if (result.error != null)
return authError(result.error);
else
return authError("Authentication server response is malformed");
}
@Override
public void close() {
// pass
}
}