Changeset 942


Ignore:
Timestamp:
11/26/10 17:12:05 (14 years ago)
Author:
oschonef
Message:
  • work around for users where only the persistent-id attribute is available
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/ApplicationSession.java

    r906 r942  
    22
    33import java.security.Principal;
     4import java.util.regex.Pattern;
    45
    56import org.apache.wicket.Request;
     
    78import org.apache.wicket.authorization.strategies.role.Roles;
    89
     10import eu.clarin.cmdi.virtualcollectionregistry.gui.auth.AuthPrincipal;
     11
    912
    1013@SuppressWarnings("serial")
    1114public class ApplicationSession extends AuthenticatedWebSession {
     15    private static final String[] ATTRIBUTE_NAMES_NAME =
     16        { "cn", "commonName", "displayName" };
     17    private static final Pattern PERSITENT_ID_REGEX =
     18        Pattern.compile("^[^!]+![^!]+![^!]+$");
    1219    private static final Roles ROLES_USER =
    1320        new Roles(Roles.USER);
    1421    private static final Roles ROLES_ADMIN =
    1522        new Roles(new String[] { Roles.USER, Roles.ADMIN});
    16     private Principal principal;
     23    private String user;
    1724    private boolean isAdmin;
     25    private String userDisplay;
    1826   
    1927    public ApplicationSession(Request request) {
     
    2634            result = signIn(principal.getName(), null);
    2735            if (result) {
    28                 // XXX: possibly do something with attributes
    29                 this.principal = principal;
    30                 this.isAdmin =
    31                     ((Application) getApplication()).isAdmin(getUser());
     36                user = principal.getName();
     37                isAdmin = ((Application) getApplication()).isAdmin(user);
     38                userDisplay = findDisplayName(principal);
    3239            }
    3340        }
     
    5360
    5461    public Principal getPrincipal() {
    55         return principal;
     62        return new Principal() {
     63            @Override
     64            public String getName() {
     65                return user;
     66            }
     67        };
    5668    }
    5769
    5870    public String getUser() {
    59         return principal.getName();
     71        return user;
     72    }
     73
     74    public String getUserDisplay() {
     75        if (userDisplay != null) {
     76            return userDisplay;
     77        }
     78        if (PERSITENT_ID_REGEX.matcher(user).matches()) {
     79            return "Authenticated via Shibboleth";
     80        }
     81        return user;
    6082    }
    6183
     
    6486    }
    6587
     88    private static String findDisplayName(Principal p) {
     89        if (p instanceof AuthPrincipal) {
     90            final AuthPrincipal principal = (AuthPrincipal) p;
     91            for (String attr : ATTRIBUTE_NAMES_NAME ) {
     92                String name = principal.getAttibute(attr);
     93                if (name != null) {
     94                    return name;
     95                }
     96            }
     97            String givenName = principal.getAttibute("givenName");
     98            String surname = principal.getAttibute("surname");
     99            if ((givenName != null) && (surname != null)) {
     100                return givenName + " " + surname;
     101            }
     102        }
     103        return null;
     104    }
     105
    66106} // class ApplicationSession
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/AuthenticationStatePanel.java

    r933 r942  
    8484        protected void onBeforeRender() {
    8585            ApplicationSession session = (ApplicationSession) getSession();
    86             usernameLabel.setDefaultModel(new Model<String>(session.getUser()));
     86            final Model<String> userModel =
     87                new Model<String>(session.getUserDisplay());
     88            usernameLabel.setDefaultModel(userModel);
    8789            super.onBeforeRender();
    8890        }
Note: See TracChangeset for help on using the changeset viewer.