/**
* Licensed to Apereo under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. Apereo
* licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of the License at the
* following location:
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apereo.portal.rendering.predicates;
import com.google.common.base.Predicate;
import javax.servlet.http.HttpServletRequest;
import org.apereo.portal.user.IUserInstance;
import org.apereo.portal.user.IUserInstanceManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.util.Assert;
/**
* Predicate determining whether the given request represents a request in the context of a profile
* matching the configured profile fname.
*
* @since 4.2
*/
public class ProfileFNamePredicate implements Predicate<HttpServletRequest> {
protected final Logger logger = LoggerFactory.getLogger(getClass());
// auto-wired
private IUserInstanceManager userInstanceManager;
// dependency-injected
private String profileFNameToMatch;
@Override
public boolean apply(final HttpServletRequest request) {
final IUserInstance userInstance = this.userInstanceManager.getUserInstance(request);
final String profileFName =
userInstance.getPreferencesManager().getUserProfile().getProfileFname();
// used for logging
final String username = userInstance.getPerson().getUserName();
if (profileFNameToMatch.equals(profileFName)) {
logger.debug(
"User {} does have profile with matching fname {}.", username, profileFName);
return true;
}
logger.debug(
"Request for user {} presents profile fname {} which does not match configured profile fname {}.",
username,
profileFName,
profileFNameToMatch);
return false;
}
@Autowired
public void setUserInstanceManager(final IUserInstanceManager userInstanceManager) {
Assert.notNull(userInstanceManager);
this.userInstanceManager = userInstanceManager;
}
@Required
public void setProfileFNameToMatch(final String profileFNameToMatch) {
this.profileFNameToMatch = profileFNameToMatch;
}
@Override
public String toString() {
return "Predicate: true where profile fname is " + this.profileFNameToMatch + ".";
}
}