package com.hubspot.singularity.auth.authenticator; import javax.servlet.http.HttpServletRequest; import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.ProvisionException; import com.google.inject.Singleton; import com.hubspot.singularity.SingularityUser; import com.hubspot.singularity.auth.datastore.SingularityAuthDatastore; @Singleton public class SingularityQueryParamAuthenticator implements SingularityAuthenticator { private final Provider<HttpServletRequest> requestProvider; private final SingularityAuthDatastore authDatastore; @Inject public SingularityQueryParamAuthenticator(Provider<HttpServletRequest> requestProvider, SingularityAuthDatastore authDatastore) { this.requestProvider = requestProvider; this.authDatastore = authDatastore; } private Optional<String> getUserId() { try { return Optional.fromNullable(Strings.emptyToNull(requestProvider.get().getParameter("user"))); } catch (ProvisionException pe) { return Optional.absent(); } } @Override public Optional<SingularityUser> get() { final Optional<String> maybeUser = getUserId(); if (maybeUser.isPresent()) { return authDatastore.getUser(maybeUser.get()); } else { return Optional.absent(); } } }