001    /*
002      Copyright (C) 2001 Laurent Martelli <laurent@aopsys.com>
003      
004      This program is free software; you can redistribute it and/or modify
005      it under the terms of the GNU Lesser General Public License as
006      published by the Free Software Foundation; either version 2 of the
007      License, or (at your option) any later version.
008    
009      This program is distributed in the hope that it will be useful,
010      but WITHOUT ANY WARRANTY; without even the implied warranty of
011      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012      GNU Lesser General Public License for more details.
013    
014      You should have received a copy of the GNU Lesser General Public License
015      along with this program; if not, write to the Free Software
016      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
017    
018    package org.objectweb.jac.aspects.authentication;
019    
020    import org.objectweb.jac.aspects.gui.DisplayContext;
021    import org.objectweb.jac.aspects.gui.GuiAC;
022    import org.objectweb.jac.core.Collaboration;
023    import org.objectweb.jac.core.Display;
024    import org.objectweb.jac.core.rtti.ClassRepository;
025    import org.objectweb.jac.core.rtti.MethodItem;
026    import org.objectweb.jac.util.Log;
027    
028    /**
029     * This Authenticator just ask the username of the user without asking
030     * a password. It just trusts the user to enter the correct
031     * username. It needs a DisplayContext attribute in order to be able
032     * to interact with the user.
033     */
034    public class TrustingAuthenticator implements Authenticator {   
035        public String authenticate() throws AuthenticationFailedException {
036            DisplayContext context = 
037                (DisplayContext)Collaboration.get().getAttribute(GuiAC.DISPLAY_CONTEXT);
038            if (context!=null) {
039                Display display = context.getDisplay();
040                MethodItem method = 
041                    ClassRepository.get().getClass(this).getMethod("askUsername");
042                Object[] parameters = new Object[method.getParameterTypes().length];
043                if (!display.showInput(this,method,parameters)) {
044                    return null;
045                } 
046                return (String)parameters[0];
047                   
048            } else {
049                Log.warning("No display context available, cannot authenticate user");
050                return null;
051            }
052        }
053        public void askUsername(String username) {
054        }
055    }