package edu.harvard.iq.dataverse.api.datadeposit;
import edu.harvard.iq.dataverse.api.AbstractApiBean;
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
import java.util.logging.Logger;
import org.swordapp.server.AuthCredentials;
import org.swordapp.server.SwordAuthException;
import org.swordapp.server.SwordServerException;
/**
* In early version of Dataverse 4 this class was responsible for both
* instantiating an AuthenticatedUser and enforcing permissions but now
* permission enforcement is done inside each of the methods in the "*Impl.java"
* files for SWORD.
*/
public class SwordAuth extends AbstractApiBean {
private static final Logger logger = Logger.getLogger(SwordAuth.class.getCanonicalName());
public AuthenticatedUser auth(AuthCredentials authCredentials) throws SwordAuthException, SwordServerException {
if (authCredentials == null) {
/**
* in DVN 3.x at least, it seems this was never reached... eaten
* somewhere by way of ServiceDocumentServletDefault ->
* ServiceDocumentAPI -> SwordAPIEndpoint
*/
String msg = "No credentials provided.";
throw new SwordAuthException(msg);
}
String username = authCredentials.getUsername();
if (username == null) {
String msg = "No API token/key (formerly username) provided.";
logger.info(msg);
throw new SwordAuthException(msg);
}
AuthenticatedUser authenticatedUserFromToken = findUserByApiToken(username);
if (authenticatedUserFromToken == null) {
String msg = "User not found based on API token.";
logger.fine(msg);
throw new SwordAuthException(msg);
} else {
return authenticatedUserFromToken;
}
}
}