package br.gov.frameworkdemoiselle.fuselage.view.app;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import br.gov.frameworkdemoiselle.fuselage.configuration.WebfilterConfig;
import br.gov.frameworkdemoiselle.fuselage.domain.SecurityUser;
import br.gov.frameworkdemoiselle.menu.core.MenuContext;
import br.gov.frameworkdemoiselle.security.NotLoggedInException;
import br.gov.frameworkdemoiselle.security.SecurityContext;
import br.gov.frameworkdemoiselle.util.Redirector;
import br.gov.frameworkdemoiselle.util.contrib.Faces;
import br.gov.frameworkdemoiselle.util.contrib.Strings;
@Named
@SessionScoped
public class FuselageMB implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private WebfilterConfig config;
@Inject
private MenuContext menuContext;
@Inject
private SecurityContext securityContext;
public boolean hasRole(String role) {
try {
return securityContext.hasRole(role);
} catch (NotLoggedInException e) {
return false;
}
}
public boolean hasOneOfRoles(Collection<String> roles) {
if (roles != null)
for (String role : roles)
if (hasRole(role))
return true;
return false;
}
public boolean hasResource(String operation, String resource) {
try {
return securityContext.hasPermission(operation, resource);
} catch (NotLoggedInException e) {
return false;
}
}
public SecurityUser getSecurityUser() {
try {
if (securityContext.isLoggedIn())
return (SecurityUser) securityContext.getUser().getAttribute("user");
} catch (Exception e) {
}
return null;
}
public String getUsername() {
try {
return getSecurityUser().getLogin();
} catch (Exception e) {
return null;
}
}
public String getUserNameProperCase() {
try {
return Strings.capitalize(securityContext.getUser().getId().toLowerCase());
} catch (Exception e) {
return "null";
}
}
@SuppressWarnings("unchecked")
public String getDn() {
try {
return ((String[]) ((Map<String, Object>) securityContext.getUser().getAttribute("user_detail")).get("dn"))[0];
} catch (Exception e) {
return null;
}
}
public String redirectToWelcomePage() {
try {
String welcome = (String) securityContext.getUser().getAttribute("welcome_page");
if (welcome == null)
welcome = Faces.getFacesContext().getExternalContext().getRequestContextPath() + config.getLoginPage();
else
menuContext.select("URL", welcome);
Redirector.redirect(welcome);
} catch (Exception e) {
}
return null;
}
}