package com.atlassian.labs.speakeasy.descriptor;
import com.atlassian.labs.speakeasy.external.SpeakeasyService;
import com.atlassian.labs.speakeasy.product.ProductAccessor;
import com.atlassian.plugin.PluginParseException;
import com.atlassian.plugin.web.Condition;
import com.atlassian.sal.api.user.UserManager;
import java.util.Map;
/**
*
*/
public class UserCanAccessSpeakeasyCondition implements Condition
{
private final SpeakeasyService speakeasyService;
private final ProductAccessor productAccessor;
private final UserManager userManager;
public UserCanAccessSpeakeasyCondition(UserManager userManager, SpeakeasyService speakeasyService, ProductAccessor productAccessor)
{
this.userManager = userManager;
this.speakeasyService = speakeasyService;
this.productAccessor = productAccessor;
}
public void init(Map<String, String> stringStringMap) throws PluginParseException
{
}
public boolean shouldDisplay(Map<String, Object> context)
{
String username = userManager.getRemoteUsername();
String currentUserProfile = productAccessor.getTargetUsernameFromCondition(context);
return username != null &&
(currentUserProfile == null || username.equals(currentUserProfile)) &&
speakeasyService.canAccessSpeakeasy(username);
}
}