a) Get details of User in Theme for loggedIn User
1) Use following tag lib to get basic user attribute value
<%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.0/portal-fmt" prefix="portal-fmt" %>
<portal-fmt:user attribute="givenName" /> <portal-fmt:user attribute="sn" />
2) To get other info like in which group user belongs to
<%
com.ibm.portal.puma.User portalUser= (com.ibm.portal.puma.User) request.getAttribute(com.ibm.portal.RequestConstants.REQUEST_USER_OBJECT);
if(portalUser!=null) {
java.util.List groups = portalUser.getGroups();
for (int i=0; i< groups.size() ; i++){
com.ibm.portal.puma.Group grp = (com.ibm.portal.puma.Group)groups.get(i);
}
}
%>
b) Get details of User in Servlet for loggedIn User
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.naming.CompositeName;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.Name;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.portal.um.PumaHome;
import com.ibm.portal.um.PumaLocator;
import com.ibm.portal.um.PumaProfile;
import com.ibm.portal.um.User;
import com.ibm.portal.um.exceptions.PumaAttributeException;
import com.ibm.portal.um.exceptions.PumaMissingAccessRightsException;
import com.ibm.portal.um.exceptions.PumaModelException;
import com.ibm.portal.um.exceptions.PumaSystemException;
public class UserInfo extends HttpServlet {
private static final long serialVersionUID = 1L;
private PumaHome pumaHome;
@Override
public void init() throws ServletException {
super.init();
try {
Context context = new InitialContext();
Name pumaJndiName = new CompositeName(PumaHome.JNDI_NAME);
pumaHome = (PumaHome) context.lookup(pumaJndiName);
} catch (NamingException e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String UIDParam = request.getParameter("uid");
PumaLocator pLocator = pumaHome.getLocator();
PumaProfile pProfile = pumaHome.getProfile();
try {
List<User> users =pLocator.findUsersByAttribute("uid", UIDParam);
// get a list of attributes defined for this User
List attribNames = pProfile.getDefinedUserAttributeNames();
// Get a map of attribute values for this user
Map userDetails = pProfile.getAttributes(users.get(0), attribNames);
String userEmail = (String) userDetails.get("mail");
System.out.println("UserInfo.doGet()" + UIDParam + ":"+ userEmail + ":" + users.size());
} catch (PumaSystemException e) {
e.printStackTrace();
} catch (PumaAttributeException e) {
e.printStackTrace();
} catch (PumaMissingAccessRightsException e) {
e.printStackTrace();
} catch (PumaModelException e) {
e.printStackTrace();
}
}
}
c) Get details of User in Portlet for loggedIn User
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.portlet.ActionRequest;
import javax.portlet.PortletRequest;
import com.ibm.portal.portlet.service.PortletServiceHome;
import com.ibm.portal.um.PumaController;
import com.ibm.portal.um.PumaEnvironment;
import com.ibm.portal.um.PumaLocator;
import com.ibm.portal.um.PumaProfile;
import com.ibm.portal.um.User;
import com.ibm.portal.um.portletservice.PumaHome;
import com.ibm.websphere.security.UserRegistry;
public class UserProfileService {
// This class uses PUMA SPI to access the LDAP and retrieve user profile information
private static PumaHome pumaHome;
// List of all Attribute Names that are defined in LDAP for USER group
public static final String LAST_NAME = "sn";
public static final String FIRST_NAME = "givenName";
public static final String EMAIL = "mail";
public static final String PASSWORD_USER_PROPERTY = "password";
public static final String USERID_USER_PROPERTY = "uid";
public static final String COMMONNAME_USER_PROPERTY = "cn";
// Method to connect and create a PumaHome object
public UserProfileService() {
try {
Context ctx = new InitialContext();
PortletServiceHome psh = (PortletServiceHome) ctx
.lookup("portletservice/com.ibm.portal.um.portletservice.PumaHome");
if (psh != null) {
pumaHome = (PumaHome) psh.getPortletService(PumaHome.class);
}
} catch (Exception ne) {
// ne.printStackTrace();
pumaHome = null;
}
}
public Map getUserProfile(PortletRequest req) {
Map userDetails = null;
// Util method that uses PUMA SPI to load user attributes from LDAP into
// // a domain object (LmsUser)
if (pumaHome == null) {
return null;
} else {
try {
// first get a PumaProfile object
PumaProfile pumaProfile = pumaHome.getProfile(req);
// get a list of attributes defined for this User
List attribNames = pumaProfile.getDefinedUserAttributeNames();
// Get a map of attribute values for this user
userDetails = pumaProfile.getAttributes(pumaProfile
.getCurrentUser(), attribNames);
System.out.println("userDetails::::::"+userDetails);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
return userDetails;
}
public static PumaHome getPumaHome() {
if (pumaHome == null) {
try {
PortletServiceHome psh;
Context ctx = new InitialContext();
psh = (PortletServiceHome) ctx.lookup(PumaHome.JNDI_NAME);
if (psh != null) {
pumaHome = (PumaHome) psh.getPortletService(PumaHome.class);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return pumaHome;
}
protected static PumaLocator getPumaLocator(PortletRequest portletRequest) {
PumaLocator pumaLocator = getPumaHome().getLocator(portletRequest);
return pumaLocator;
}
protected static PumaProfile getPumaProfile(PortletRequest portletRequest) {
PumaProfile pumaProfile = getPumaHome().getProfile(portletRequest);
return pumaProfile;
}
protected static PumaEnvironment getPumaEnvironment() {
PumaEnvironment pumaEnvironment = getPumaHome().getEnvironment();
return pumaEnvironment;
}
protected static PumaController getPumaController(PortletRequest portletRequest) {
PumaController pumaController = getPumaHome().getController((ActionRequest) portletRequest);
return pumaController;
}
public static void changePasswordLDAP(ActionRequest actionRequest, String password) {
final PumaProfile pf = getPumaProfile(actionRequest);
final PumaController pc = getPumaController(actionRequest);
final PumaEnvironment pe = getPumaEnvironment();
final Map userSetAttr = new HashMap();
final List passwd=new ArrayList();
passwd.add(password);
// set AD password attribute in the Map
userSetAttr.put(PASSWORD_USER_PROPERTY, passwd);
try {
pe.runUnrestricted(new PrivilegedExceptionAction() {
public Object run() {
try {
User user = pf.getCurrentUser();
pc.setAttributes(user, userSetAttr);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
1) Use following tag lib to get basic user attribute value
<%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.0/portal-fmt" prefix="portal-fmt" %>
<portal-fmt:user attribute="givenName" /> <portal-fmt:user attribute="sn" />
2) To get other info like in which group user belongs to
<%
com.ibm.portal.puma.User portalUser= (com.ibm.portal.puma.User) request.getAttribute(com.ibm.portal.RequestConstants.REQUEST_USER_OBJECT);
if(portalUser!=null) {
java.util.List groups = portalUser.getGroups();
for (int i=0; i< groups.size() ; i++){
com.ibm.portal.puma.Group grp = (com.ibm.portal.puma.Group)groups.get(i);
}
}
%>
b) Get details of User in Servlet for loggedIn User
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.naming.CompositeName;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.Name;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.portal.um.PumaHome;
import com.ibm.portal.um.PumaLocator;
import com.ibm.portal.um.PumaProfile;
import com.ibm.portal.um.User;
import com.ibm.portal.um.exceptions.PumaAttributeException;
import com.ibm.portal.um.exceptions.PumaMissingAccessRightsException;
import com.ibm.portal.um.exceptions.PumaModelException;
import com.ibm.portal.um.exceptions.PumaSystemException;
public class UserInfo extends HttpServlet {
private static final long serialVersionUID = 1L;
private PumaHome pumaHome;
@Override
public void init() throws ServletException {
super.init();
try {
Context context = new InitialContext();
Name pumaJndiName = new CompositeName(PumaHome.JNDI_NAME);
pumaHome = (PumaHome) context.lookup(pumaJndiName);
} catch (NamingException e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String UIDParam = request.getParameter("uid");
PumaLocator pLocator = pumaHome.getLocator();
PumaProfile pProfile = pumaHome.getProfile();
try {
List<User> users =pLocator.findUsersByAttribute("uid", UIDParam);
// get a list of attributes defined for this User
List attribNames = pProfile.getDefinedUserAttributeNames();
// Get a map of attribute values for this user
Map userDetails = pProfile.getAttributes(users.get(0), attribNames);
String userEmail = (String) userDetails.get("mail");
System.out.println("UserInfo.doGet()" + UIDParam + ":"+ userEmail + ":" + users.size());
} catch (PumaSystemException e) {
e.printStackTrace();
} catch (PumaAttributeException e) {
e.printStackTrace();
} catch (PumaMissingAccessRightsException e) {
e.printStackTrace();
} catch (PumaModelException e) {
e.printStackTrace();
}
}
}
c) Get details of User in Portlet for loggedIn User
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.portlet.ActionRequest;
import javax.portlet.PortletRequest;
import com.ibm.portal.portlet.service.PortletServiceHome;
import com.ibm.portal.um.PumaController;
import com.ibm.portal.um.PumaEnvironment;
import com.ibm.portal.um.PumaLocator;
import com.ibm.portal.um.PumaProfile;
import com.ibm.portal.um.User;
import com.ibm.portal.um.portletservice.PumaHome;
import com.ibm.websphere.security.UserRegistry;
public class UserProfileService {
// This class uses PUMA SPI to access the LDAP and retrieve user profile information
private static PumaHome pumaHome;
// List of all Attribute Names that are defined in LDAP for USER group
public static final String LAST_NAME = "sn";
public static final String FIRST_NAME = "givenName";
public static final String EMAIL = "mail";
public static final String PASSWORD_USER_PROPERTY = "password";
public static final String USERID_USER_PROPERTY = "uid";
public static final String COMMONNAME_USER_PROPERTY = "cn";
// Method to connect and create a PumaHome object
public UserProfileService() {
try {
Context ctx = new InitialContext();
PortletServiceHome psh = (PortletServiceHome) ctx
.lookup("portletservice/com.ibm.portal.um.portletservice.PumaHome");
if (psh != null) {
pumaHome = (PumaHome) psh.getPortletService(PumaHome.class);
}
} catch (Exception ne) {
// ne.printStackTrace();
pumaHome = null;
}
}
public Map getUserProfile(PortletRequest req) {
Map userDetails = null;
// Util method that uses PUMA SPI to load user attributes from LDAP into
// // a domain object (LmsUser)
if (pumaHome == null) {
return null;
} else {
try {
// first get a PumaProfile object
PumaProfile pumaProfile = pumaHome.getProfile(req);
// get a list of attributes defined for this User
List attribNames = pumaProfile.getDefinedUserAttributeNames();
// Get a map of attribute values for this user
userDetails = pumaProfile.getAttributes(pumaProfile
.getCurrentUser(), attribNames);
System.out.println("userDetails::::::"+userDetails);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
return userDetails;
}
public static PumaHome getPumaHome() {
if (pumaHome == null) {
try {
PortletServiceHome psh;
Context ctx = new InitialContext();
psh = (PortletServiceHome) ctx.lookup(PumaHome.JNDI_NAME);
if (psh != null) {
pumaHome = (PumaHome) psh.getPortletService(PumaHome.class);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return pumaHome;
}
protected static PumaLocator getPumaLocator(PortletRequest portletRequest) {
PumaLocator pumaLocator = getPumaHome().getLocator(portletRequest);
return pumaLocator;
}
protected static PumaProfile getPumaProfile(PortletRequest portletRequest) {
PumaProfile pumaProfile = getPumaHome().getProfile(portletRequest);
return pumaProfile;
}
protected static PumaEnvironment getPumaEnvironment() {
PumaEnvironment pumaEnvironment = getPumaHome().getEnvironment();
return pumaEnvironment;
}
protected static PumaController getPumaController(PortletRequest portletRequest) {
PumaController pumaController = getPumaHome().getController((ActionRequest) portletRequest);
return pumaController;
}
public static void changePasswordLDAP(ActionRequest actionRequest, String password) {
final PumaProfile pf = getPumaProfile(actionRequest);
final PumaController pc = getPumaController(actionRequest);
final PumaEnvironment pe = getPumaEnvironment();
final Map userSetAttr = new HashMap();
final List passwd=new ArrayList();
passwd.add(password);
// set AD password attribute in the Map
userSetAttr.put(PASSWORD_USER_PROPERTY, passwd);
try {
pe.runUnrestricted(new PrivilegedExceptionAction() {
public Object run() {
try {
User user = pf.getCurrentUser();
pc.setAttributes(user, userSetAttr);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}