package com.comandante.stickypunch.http; import com.google.common.base.Optional; import com.comandante.stickypunch.api.model.WebPushStore; import com.comandante.stickypunch.api.model.WebPushStoreAuth; import com.comandante.stickypunch.api.model.WebPushUser; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; public class WebPushUserIdAuth implements WebPushStoreAuth { private static final Logger log = LogManager.getLogger(WebPushUserIdAuth.class); private final WebPushStore webPushStore; private final HttpConfiguration httpConfiguration; public WebPushUserIdAuth(WebPushStore webPushStore, HttpConfiguration configuration) { this.webPushStore = webPushStore; this.httpConfiguration = configuration; } @Override public boolean authUserId(String userId, Optional<String> deviceToken) { if (!httpConfiguration.isStrictAuth) { return true; } Optional<WebPushUser> webPushUser = Optional.absent(); if (deviceToken.isPresent()) { webPushUser = webPushStore.getWebPushUsersByUserIdAndDeviceToken(userId, deviceToken.get()); } else { webPushUser = webPushStore.getWebPushUsersByUserId(userId); } if (webPushUser.isPresent() && webPushUser.get().getUserId().isPresent()) { if (webPushUser.get().getUserId().get().equals(userId)) { return true; } } return false; } }