Gestion des utilisateurs et des groupes
La SPI PUMA fournit des interfaces pour accéder aux profils d'un Utilisateur ou Groupe du portail.
La SPI PUMA est utilisée pour rechercher, créer, modifier et supprimer les utilisateurs et les groupes. De même, les informations de profil relatives à l'utilisateur qui est actuellement connecté peuvent être extraites. Les interfaces Utilisateur et Groupe renvoyées par le SPI héritent de la méthode getObjectID() de l'interface com.ibm.portal.Identifiable du SPI modèle. Cette méthode est utilisée pour obtenir l'ID objet qui identifie de manière unique une ressource ; dans ce cas, il s'agit d'un utilisateur ou d'un groupe dans le registre d'utilisateurs du portail. Les objets fournisseur suivants permettent d'accéder aux objets Utilisateur et Groupe.
- PumaProfile
- Contient des méthodes qui permettent d'accéder en lecture seule aux identificateurs et aux attributs Utilisateur et Groupe. Vous pouvez utiliser cette interface afin d'obtenir l'objet Utilisateur pour l'utilisateur courant.
- PumaLocator
- Contient des méthodes permettant de rechercher les objets Utilisateur et Groupe. Vous pouvez utiliser cette interface pour obtenir une Liste d'objets Groupe pour tous les groupes dont l'utilisateur courant est membre. A partir de la version 7.0 d'HCL Portal, la pagination est prise en charge. Cela signifie que l'ensemble de résultats est divisé en sous-ensembles (pages) et qu'un itérateur spécial peut être utilisé pour accéder aux pages.
- PumaController
- contient des méthodes permettant de créer ou de supprimer des Utilisateurs et des Groupes et de modifier les profils et l'appartenance de Utilisateur et Groupe.
- PumaEnvironment
- Contient des méthodes permettant d'extraire des principaux virtuels, d'accéder aux propriétés générales pour la gestion des utilisateurs et contient également une méthode permettant d'ignorer le contrôle d'accès pour la couche de gestion des groupes et des utilisateurs.
- Portlet standard
- com.ibm.portal.um.portletservice.PumaHome
- Portlet IBM
- com.ibm.portal.um.portletservice.legacy.PumaHome
- Application de portail (par exemple, thème ou habillage)
- com.ibm.portal.um.PumaHome
Des exemples illustrant la façon dont ces interfaces sont requises figurent dans la documentation Javadoc associée. L'exemple suivant présente la façon dont un portlet standard obtient l'identificateur d'un Utilisateur en tant que Chaîne.
PortletServiceHome psh;
try{
javax.naming.Context ctx = new javax.naming.InitialContext();
psh = (PortletServiceHome)
ctx.lookup("portletservice/com.ibm.portal.um.portletservice.PumaHome");
if (psh != null){
PumaHome service = (PumaHome) psh.getPortletService(PumaHome.class);
PumaProfile pp = service.getProfile(request);
User user = pp.getCurrentUser();
String user_objid = pp.getIdentifier(user);
}
}
catch (PumaException pe){
// ... error handling ...
} catch(javax.naming.NameNotFoundException ex) {
// ... error handling ...
} catch(javax.naming.NamingException ex) {
// ... error handling ...
}
List<User> usersStartingWithA = pumaLocator.findUsersByAttribute("uid", "a*");
// if no value for ibm-primaryEmail attribute is set, then set it
List<String> requestedAttributes = new ArrayList<String>(2);
requestedAttributes.add("uid");
requestedAttributes.add("primaryEmail");
for(User user: usersStartingWithA) {
Map<String, Object> attributes =
pumaProfile.getAttributes(user, requestedAttributes);
if (attributes.get("primaryEmail")==null
|| "".equals(attributes.get("ibm-primaryEmail"))){
pumaController.setAttributes(user, Collections.singletonMap(
"ibm-primaryEmail", attributes.get("uid")+"@ibm.com"));
}
}
// create a properties map that requests 10 results per Page
Map<String, Object> pageProperties = new HashMap<String, Object>(2);
pageProperties.put(PumaLocator.RESULTS_PER_PAGE, 10);
PagingIterator<User> pageIter = pumaLocator.findUsersByAttribute(
"uid", "a*", pageProperties);
List<User> buffer = new ArrayList<User>(10);
do {
pageIter.getNextPage(buffer); //=> always has a first page
if (pageIter.getCurrentPageNumber()==0)
{
System.out.println("Total results: "+pageIter.getNumberOfTotalResults());
System.out.println("Total pages: "+pageIter.getNumberOfPages());
}
for (User aUser: buffer)
{ display(aUser);
}
} while (pageIter.hasNextPage());
// now jump to page 5
// => will throw NoSuchPageException if NumberOfPages < 6
List<User> result = pageIter.getPage(null, 5);