Changeset 5472


Ignore:
Timestamp:
07/10/14 09:23:47 (10 years ago)
Author:
Twan Goosen
Message:

aai: getting display name from a shibboleth authprincipal, fixed the login link; removed the deprecated auth filter and strategies

Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui
Files:
1 added
1 deleted
2 edited

Legend:

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

    r5417 r5472  
    11package eu.clarin.cmdi.virtualcollectionregistry.gui;
    22
     3import de.mpg.aai.shhaa.model.AuthAttribute;
     4import de.mpg.aai.shhaa.model.AuthPrincipal;
    35import java.security.Principal;
    46import java.util.regex.Pattern;
    5 
    67import org.apache.wicket.Request;
    78import org.apache.wicket.authentication.AuthenticatedWebSession;
    89import org.apache.wicket.authorization.strategies.role.Roles;
    9 
    10 import eu.clarin.cmdi.virtualcollectionregistry.gui.auth.AuthPrincipal;
    11 
     10import org.slf4j.Logger;
     11import org.slf4j.LoggerFactory;
    1212
    1313@SuppressWarnings("serial")
    1414public 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("^[^!]+![^!]+![^!]+$");
    19     private static final Roles ROLES_USER =
    20         new Roles(Roles.USER);
    21     private static final Roles ROLES_ADMIN =
    22         new Roles(new String[] { Roles.USER, Roles.ADMIN});
     15
     16    private final static Logger logger = LoggerFactory.getLogger(ApplicationSession.class);
     17
     18    private static final String[] ATTRIBUTE_NAMES_NAME
     19            = {"cn", "commonName", "displayName"};
     20    private static final Pattern PERSITENT_ID_REGEX
     21            = Pattern.compile("^[^!]+![^!]+![^!]+$");
     22    private static final Roles ROLES_USER
     23            = new Roles(Roles.USER);
     24    private static final Roles ROLES_ADMIN
     25            = new Roles(new String[]{Roles.USER, Roles.ADMIN});
    2326    private String user;
    2427    private boolean isAdmin;
     
    3033
    3134    public boolean signIn(Principal principal) {
     35        logger.trace("Signing in principal {}", principal);
    3236        boolean result = false;
    3337        if (principal != null) {
     
    3741                isAdmin = ((Application) getApplication()).isAdmin(user);
    3842                userDisplay = findDisplayName(principal);
     43                logger.debug("Principal is signed in [user = {}, display name = {}, isAdmin = {}]", user, userDisplay, isAdmin);
    3944            }
    4045        }
     
    8388
    8489    private static String findDisplayName(Principal p) {
     90        logger.trace("Looking for display name for principal {}", p);
    8591        if (p instanceof AuthPrincipal) {
    8692            final AuthPrincipal principal = (AuthPrincipal) p;
    87             for (String attr : ATTRIBUTE_NAMES_NAME ) {
    88                 String name = principal.getAttibute(attr);
     93            for (String attr : ATTRIBUTE_NAMES_NAME) {
     94                final String name = getAttribute(principal, attr);
    8995                if (name != null) {
     96                    logger.debug("Display name found for principal: {}", name);
    9097                    return name;
    9198                }
    9299            }
    93             String givenName = principal.getAttibute("givenName");
    94             String surname = principal.getAttibute("surname");
     100            String givenName = getAttribute(principal, "givenName");
     101            String surname = getAttribute(principal, "surname");
    95102            if ((givenName != null) && (surname != null)) {
    96                 return givenName + " " + surname;
     103                final String name = givenName + " " + surname;
     104                logger.debug("Display name found for principal: {}", name);
     105                return name;
     106            }
     107        }
     108        logger.debug("No display name found for principal");
     109        return null;
     110    }
     111
     112    private static String getAttribute(final AuthPrincipal principal, String attr) {
     113        logger.trace("Looking for attribute {}", attr);
     114        final AuthAttribute<?> attribute = principal.getAttribues().get(attr);
     115        if (attribute != null) {
     116            final Object value = attribute.getValue();
     117            if (value != null) {
     118                logger.trace("Found attribute value: {} = {}", attr, value);
     119                return value.toString();
    97120            }
    98121        }
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/AuthenticationStatePanel.java

    r5417 r5472  
    11package eu.clarin.cmdi.virtualcollectionregistry.gui.pages;
    22
    3 import org.apache.wicket.Page;
     3import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession;
    44import org.apache.wicket.authentication.AuthenticatedWebSession;
    55import org.apache.wicket.markup.html.basic.Label;
    6 import org.apache.wicket.markup.html.link.StatelessLink;
     6import org.apache.wicket.markup.html.link.Link;
    77import org.apache.wicket.markup.html.panel.Fragment;
    88import org.apache.wicket.markup.html.panel.Panel;
    99import org.apache.wicket.model.Model;
    10 
    11 import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession;
    1210
    1311@SuppressWarnings("serial")
     
    2220
    2321    private class LoginFragment extends Fragment {
     22
    2423        public LoginFragment(String id) {
    2524            super(id, "loginFragment", AuthenticationStatePanel.this);
    2625            setRenderBodyOnly(true);
    27             final StatelessLink loginLink = new StatelessLink("loginLink") {
     26            add(new Link("loginLink") {
     27
    2828                @Override
    2929                public void onClick() {
     30                    setResponsePage(new DummyLoginPage(getPage().getPageReference()));
    3031                }
    31 
    32                 @Override
    33                 protected CharSequence getURL() {
    34                     final Page page = getPage();
    35                     StringBuilder url =
    36                         new StringBuilder(urlFor(page.getClass(),
    37                                 page.getPageParameters()));
    38                     if (url.indexOf("?") != -1) {
    39                         url.append('&');
    40                     } else {
    41                         url.append('?');
    42                     }
    43                     url.append("authAction=LOGIN");
    44                     return url.toString();
    45                 }
    46             };
    47             add(loginLink);
     32            });
    4833        }
    4934
     
    6045
    6146    private class LogoutFragment extends Fragment {
     47
    6248        private final Label usernameLabel;
    6349
     
    8470        protected void onBeforeRender() {
    8571            ApplicationSession session = (ApplicationSession) getSession();
    86             final Model<String> userModel =
    87                 new Model<String>(session.getUserDisplay());
     72            final Model<String> userModel
     73                    = new Model<String>(session.getUserDisplay());
    8874            usernameLabel.setDefaultModel(userModel);
    8975            super.onBeforeRender();
Note: See TracChangeset for help on using the changeset viewer.