Add the TOS API.
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package io.kamax.mxisd.http.undertow.handler.term.v2;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import io.kamax.matrix.json.GsonUtil;
|
||||
import io.kamax.mxisd.auth.AccountManager;
|
||||
import io.kamax.mxisd.exception.InvalidCredentialsException;
|
||||
import io.kamax.mxisd.http.undertow.handler.BasicHttpHandler;
|
||||
import io.kamax.mxisd.storage.ormlite.dao.AccountDao;
|
||||
import io.undertow.server.HttpServerExchange;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class AcceptTermsHandler extends BasicHttpHandler {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(AcceptTermsHandler.class);
|
||||
|
||||
public static final String PATH = "/_matrix/identity/v2/terms";
|
||||
|
||||
private final AccountManager accountManager;
|
||||
|
||||
public AcceptTermsHandler(AccountManager accountManager) {
|
||||
this.accountManager = accountManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(HttpServerExchange exchange) throws Exception {
|
||||
String token = getAccessToken(exchange);
|
||||
|
||||
JsonObject request = parseJsonObject(exchange);
|
||||
JsonObject accepts = GsonUtil.getObj(request, "user_accepts");
|
||||
AccountDao account = accountManager.findAccount(token);
|
||||
|
||||
if (account == null) {
|
||||
throw new InvalidCredentialsException();
|
||||
}
|
||||
|
||||
if (accepts == null || accepts.isJsonNull()) {
|
||||
respondJson(exchange, "{}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (accepts.isJsonArray()) {
|
||||
for (JsonElement acceptItem : accepts.getAsJsonArray()) {
|
||||
String termUrl = acceptItem.getAsString();
|
||||
LOGGER.info("User {} accepts the term: {}", account.getUserId(), termUrl);
|
||||
accountManager.acceptTerm(token, termUrl);
|
||||
}
|
||||
} else {
|
||||
String termUrl = accepts.getAsString();
|
||||
LOGGER.info("User {} accepts the term: {}", account.getUserId(), termUrl);
|
||||
accountManager.acceptTerm(token, termUrl);
|
||||
}
|
||||
|
||||
respondJson(exchange, "{}");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package io.kamax.mxisd.http.undertow.handler.term.v2;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import io.kamax.mxisd.config.PolicyConfig;
|
||||
import io.kamax.mxisd.http.undertow.handler.BasicHttpHandler;
|
||||
import io.undertow.server.HttpServerExchange;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class GetTermsHandler extends BasicHttpHandler {
|
||||
|
||||
public static final String PATH = "/_matrix/identity/v2/terms";
|
||||
|
||||
private final JsonObject policyResponse;
|
||||
|
||||
public GetTermsHandler(PolicyConfig config) {
|
||||
policyResponse = new JsonObject();
|
||||
JsonObject policies = new JsonObject();
|
||||
for (Map.Entry<String, PolicyConfig.PolicyObject> policyItem : config.getPolicies().entrySet()) {
|
||||
JsonObject policy = new JsonObject();
|
||||
policy.addProperty("version", policyItem.getValue().getVersion());
|
||||
for (Map.Entry<String, PolicyConfig.TermObject> termEntry : policyItem.getValue().getTerms().entrySet()) {
|
||||
JsonObject term = new JsonObject();
|
||||
term.addProperty("name", termEntry.getValue().getName());
|
||||
term.addProperty("url", termEntry.getValue().getUrl());
|
||||
policy.add(termEntry.getKey(), term);
|
||||
}
|
||||
policies.add(policyItem.getKey(), policy);
|
||||
}
|
||||
policyResponse.add("policies", policies);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(HttpServerExchange exchange) throws Exception {
|
||||
respond(exchange, policyResponse);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user