Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

The Question

Vinny Khosla asked on the JASIG-PORTAL list:

How do i setup a user layout template?
Subsequently, how do I go about creating subsequent user accounts who would inherit the layout template?

Could you please tell me what tables, columns and xml files are involved
here?

Do the new users automatically inherit the layout template?
or Is there a way to force a new user to inherit a certain custom layout
template ?

Answer (credit due to Susan Bramhall for initially posting reponse on JASIG-PORTAL):

The easiest way to create a template is to use ant md5passwd to create the account then login and use the GUI to set up the layout you want.

To map a user to use the template use the PersonDirs.xml to map the some appropriate attribute to uPortalTemplateUserName. The login process for the user will select the layout that matches the value of the uPortalTemplateUserName person attribute.

For example:

       <uidquery>select first_name||' '||Last_name first_last,
       decode(role,'UNDERGRADUATE','student',
                   'GRAD_STUDENT','student',
                   'MP', 'staff',
                   'CT', 'staff',
                   'CAS', 'staff',
                   'SM', 'staff',
                   'FAC_LADDER','faculty',
                   'FAC_NON-LADDER','faculty',
                   'VF','faculty',
                   'FEL','faculty',
                   'PDA','faculty',
                   'PDF','faculty',
                   'proto-user') template,
       from portal_person_directory where netid=?</uidquery>
with attribute template mapped like this:
           <attribute>
               <name>template</name>
               <alias>uPortalTemplateUserName</alias>
           </attribute>

This would cause the value of "role" from the sql query to govern the choice of template. This is a snippet from our actual configuration.

Behind the scenes

The IUserIdentityStore interface is the mechanism for retrieving the unique identifier for the current user in the portal. There is one implementation of this interfact: RDBMUserIdentityStore. Two properties as well as the value of person attributes for the user affect how this class makes the choice of template.

  • The property autoCreateUsers turns template behavior on or off. As distributed the property is set:
    org.jasig.portal.services.Authentication.autoCreateUsers=true
    When set to true, RDBMUserIdentityStore will automatically create all necessary data for a new portal user based on a template user. If set to false users data will not be automatically created. So far there is no other mechanism for creating user data so this property is always set to true.
  • The template user value is determined either by the property defaultTemplateUserName or by mapping a directory attribute to uPortalTemplateUserName. When a user logs in for the first time, RDBMUserIdentityStore first looks for a person attribute named uPortalTemplateUserName. The value of that attribute is expected to be the username of an existing user. The existing user is then the template for the new user. If no attribute is of that name is mapped the template user name comes from the property org.jasig.portal.services.Authentication.defaultTemplateUserName. In the distribution this is set to the user demo:
    org.jasig.portal.services.Authentication.defaultTemplateUserName=demo
    This means that if you make no changes and map no attribute to uPortalTemplateUserName then all new users will be cloned from the user demo.

Templates and layout managers

Simple layout manager (SLM) derives power and flexability from using templates to deliver different content to users based on the values in the person object. However, once a user changes their layout a copy is stored and the template is no longer used. So any changes to the template after the user has personalized their layout do not appear unless the user rests to the default. Since both aggregated layout manager (ALM) and distributed layout manager (DLM) have better mechanisms for pushing content to users, templates can be minimized or eliminated entirely when simple layout manager is not used.

  • No labels