package org.togglz.core.activation;
import java.util.List;
import org.togglz.core.repository.FeatureState;
import org.togglz.core.spi.ActivationStrategy;
import org.togglz.core.user.FeatureUser;
import org.togglz.core.util.Strings;
/**
* Activation strategy that allows to activate features only for certain users.
*
* @author Christian Kaltepoth
*/
public class UsernameActivationStrategy implements ActivationStrategy {
public static final String ID = "username";
public static final String PARAM_USERS = "users";
@Override
public String getId() {
return ID;
}
@Override
public String getName() {
return "Users by name";
}
@Override
public boolean isActive(FeatureState state, FeatureUser user) {
String usersAsString = state.getParameter(PARAM_USERS);
if (Strings.isNotBlank(usersAsString)) {
List<String> users = Strings.splitAndTrim(usersAsString, ",");
if (user != null && Strings.isNotBlank(user.getName())) {
for (String username : users) {
if (username.equals(user.getName())) {
return true;
}
}
}
}
return false;
}
@Override
public Parameter[] getParameters() {
return new Parameter[] {
ParameterBuilder.create(PARAM_USERS).label("Users").largeText()
.description("A list of users for which the feature is active.")
};
}
}