⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login_engine.java

📁 java 写的一个新闻发布系统
💻 JAVA
字号:
////                                   ____.//                       __/\ ______|    |__/\.     _______//            __   .____|    |       \   |    +----+       \//    _______|  /--|    |    |    -   \  _    |    :    -   \_________//   \\______: :---|    :    :           |    :    |         \________>//           |__\---\_____________:______:    :____|____:_____\//                                      /_____|////                 . . . i n   j a h i a   w e   t r u s t . . .//////  Login_Engine//  EV  23.01.20001////  getInstance()//  authoriseRender()//  renderLink()//  needsJahiaData()//  handleActions()//package org.jahia.engines.login;import java.util.*;                                 // HashMapimport javax.servlet.http.*;                        // HttpSessionimport org.jahia.exceptions.*;                  // JahiaExceptionimport org.jahia.exceptions.JahiaSessionExpirationException;import org.jahia.utils.*;                       // JahiaConsoleimport org.jahia.data.*;                        // JahiaData, ConnectionTypesimport org.jahia.params.*;                      // ParamBeanimport org.jahia.registries.*;                  // ServicesRegistryimport org.jahia.engines.*;                     // JahiaEngine interfaceimport org.jahia.data.events.*;                 // JahiaEventimport org.jahia.services.usermanager.*;        // JahiaUserManagerimport org.jahia.services.sites.*;		        // JahiaSiteimport org.jahia.services.pages.*;		        // JahiaPagepublic class Login_Engine implements JahiaEngine {    private static final String CLASS_NAME = JahiaEngine.class.getName();    private static          Login_Engine        theObject   = null;    private                 String              engineName  = "login";    private static  final   String              LOGIN_JSP 				= "login";    private static  final   String              BADLOGIN_JSP 			= "bad_login";    private static  final   String              CLOSE_JSP 				= "login_close";    private                 EngineToolBox       toolBox;    /***        * constructor        *        */    private Login_Engine()    {        // JahiaConsole.println( "Engine", "***** Starting Login Engine *****" );        toolBox = EngineToolBox.getInstance();    } // end constructor    /***        * returns a single instance of the object        *        */    public static synchronized Login_Engine getInstance()    {        if (theObject == null) {            theObject = new Login_Engine();        }        return theObject;    } // end getInstance    /***        * authorises engine render        *        */    public boolean authoriseRender( ParamBean jParams )    {        return true;					// always allowed to render login    } // end authoriseRender    /***        * renders link to pop-up window        *        */    public String renderLink( ParamBean jParams, Object theObj )    throws JahiaException    {        String theUrl = jParams.composeEngineUrl( engineName, "" );        return theUrl;    } // end renderLink    /***        * specifies if the engine needs the JahiaData object        *        */    public boolean needsJahiaData( ParamBean jParams )    {        return false;    } // end needsJahiaData    /***        * handles the engine actions        *        * @param        jParams             a ParamBean object        * @param        jData               a JahiaData object (not mandatory)        *        */    public void handleActions( ParamBean jParams, JahiaData jData )        throws  JahiaException,                JahiaSessionExpirationException    {        // initalizes the hashmap        HashMap engineMap = new HashMap();        initEngineMap( jParams, engineMap );        processScreen( jParams, engineMap );        // displays the screen        toolBox.displayScreen( jParams, engineMap );    } // end handleActions    /***        * prepares the screen requested by the user        *        * @param        jParams             a ParamBean object        *        */    public void processScreen( ParamBean jParams, HashMap engineMap )        throws  JahiaException,                JahiaSessionExpirationException    {        JahiaConsole.println(CLASS_NAME+".processScreen","started");        // gets the actual screen        // screen can be "edit" or "save"        String theScreen = jParams.getRequest().getParameter( "screen" );        if (theScreen == null) {            theScreen = "edit";        }        boolean     ok      = false;        JahiaUser   theUser = null;        String username = jParams.getRequest().getParameter( "username" );        String password = jParams.getRequest().getParameter( "password" );        if ((username == null) || (password == null)) {            return;        } else {            if (theScreen.equals( "save" ))  {                ServicesRegistry theRegistry = ServicesRegistry.getInstance();                if (theRegistry != null) {                    JahiaUserManagerService theService = theRegistry.getJahiaUserManagerService();                    if (theService != null) {                        // Check if the user has site access ( even though it is not a user of this site )                        theUser = ServicesRegistry.getInstance()                                                    .getJahiaSiteUserManagerService()                                                    .getMember( jParams.getSiteID(),username );                        if ( theUser != null ){                            if (theUser.verifyPassword( password )) {                                ok = true;                            } else {                                JahiaException je = new JahiaException( "Login error",                                "User " + username + " entered bad password",                                JahiaException.SECURITY_ERROR, JahiaException.WARNING);                            }                        } else {                            // user could be external database user, let's look him up...                            JahiaUser extUser = ServicesRegistry.getInstance().getJahiaUserManagerService().lookupUser(username);                            if ( extUser != null) {                                if (!(extUser instanceof JahiaDBUser)) {                                    if (extUser.verifyPassword(password)) {                                        theUser = extUser;                                        ok = true;                                    } else {                                        JahiaException je = new JahiaException( "Login error",                                        "User " + username + " entered bad password",                                        JahiaException.SECURITY_ERROR, JahiaException.WARNING);                                    }                                }                            }                        }                    }                }            }        }        if (ok) {            JahiaConsole.finalPrintln("Login_Engine","User " + theUser.getUsername() + " logged in." );            // jParams.invalidateSession(); // this is necessary to remove references to old objects            jParams.purgeSession();            HttpSession theSession = jParams.getSession();            theSession.setAttribute( jParams.SESSION_USER, theUser );            String loginChoice = jParams.getRequest().getParameter("loginChoice");            boolean stayAtCurrentPage =  ( loginChoice != null && loginChoice.equals("1") );            JahiaPage loginPage = null;            if ( stayAtCurrentPage ){                JahiaPageBaseService pageService = JahiaPageBaseService.getInstance();                try {                    loginPage = (JahiaPage)pageService                                .lookupPage (jParams.getPageID(),jParams);                    if ( loginPage != null && !loginPage.checkReadAccess(theUser)){         				JahiaConsole.println("Login_engine","The user do not have read access to the requested page ( other than GUEST ) !");	                    JahiaException je = new JahiaException( "Login error",	                    "User " + username + " cannot log in from this page",	                    JahiaException.SECURITY_ERROR, JahiaException.WARNING);	                    engineMap.put("notAllowedToLoginFromThisPage", new Boolean(true));			            engineMap.put( "screen", "edit" );			            engineMap.put( "engineUrl", jParams.composeEngineUrl( engineName, "" ) );			            engineMap.put( "jspSource", BADLOGIN_JSP );			            return;						/*            			JahiaUser guestUser = ServicesRegistry.getInstance()            					.getJahiaUserManagerService().lookupUser(jParams.getSiteID(),JahiaUserManagerService.GUEST_USERNAME);         				//theSession.setAttribute( jParams.SESSION_USER, guestUser );						loginPage = (JahiaPage)pageService                                .lookupPage (jParams.getPageID(),jParams);                        if ( loginPage != null ){         					JahiaConsole.println("Login_engine","Switch the user to GUEST USER");                        	theUser = guestUser;            				theSession.setAttribute( jParams.SESSION_USER, theUser );                        }                        */                    }                } catch ( Throwable t ){                    JahiaConsole.println("Login_engine","Eception looking at page : " + jParams.getPageID());                    t.printStackTrace();                }	            }            JahiaConsole.println("Login_engine","Page to log to is null (2) ! :" + jParams.getPageID());            if ( loginPage == null ) {            	loginPage = getHomepage(jParams.getSite(),theUser);            }            if ( loginPage == null ){                loginPage = jParams.getSite().getHomePage();            }            engineMap.put( "engineUrl", jParams.composePageUrl(loginPage.getID()) );            JahiaConsole.println(CLASS_NAME+".processScreen","engineUrl="+jParams.composePageUrl(loginPage.getID()));            JahiaEvent theEvent = new JahiaEvent( this, jParams, theUser );            ServicesRegistry.getInstance().getJahiaEventService().fireLogin( theEvent );        } else {			engineMap.put("notAllowedToLoginFromThisPage", new Boolean(false));            engineMap.put( "screen", "edit" );            engineMap.put( "engineUrl", jParams.composeEngineUrl( engineName, "" ) );            engineMap.put( "jspSource", BADLOGIN_JSP );            //engineMap.put( "engineOutputFile", TEMPLATE_JSP );        }        JahiaConsole.println(CLASS_NAME+".processScreen","end");    } // end processScreen    /***        * inits the engine map        *        * @param        jParams             a ParamBean object (with request and response)        * @return       a HashMap object containing all the basic values needed by an engine        *        */    private void initEngineMap( ParamBean jParams, HashMap engineMap )    throws JahiaException    {        // init map        String theScreen = jParams.getRequest().getParameter( "screen" );        if (theScreen == null) {            theScreen = "edit";        }        engineMap.put( "screen", theScreen );        if (!theScreen.equals("save")) {            engineMap.put( "jspSource", LOGIN_JSP );            engineMap.put( "engineUrl", jParams.composeEngineUrl( engineName, "" ) );            engineMap.put( "engineName", engineName );        } else {            engineMap.put( "engineName", "core" );            engineMap.put( "engineUrl", jParams.composePageUrl(jParams.getPageID()) );            engineMap.put( "jspSource", CLOSE_JSP );        }        engineMap.put( "jParams", jParams );        engineMap.put( "renderType", new Integer(JahiaEngine.RENDERTYPE_FORWARD) );        engineMap.put( "jahiaBuild", new Integer(jParams.settings().getBuildNumber()));        engineMap.put( "javascriptUrl", jParams.settings().getJsHttpPath() );        // JSP Attribute        jParams.getRequest().setAttribute( "engineTitle", "Login" );        //jParams.getRequest().setAttribute( "engineMap", engineMap );        //jParams.getRequest().setAttribute( "jParams", jParams );    } // end initEngineMap    /**     * Return the first available home page for this user.     * Personal homepage has precedence over groups' homepage.     *     *     * @param JahiaSite current site.     * @param JahiaUser the user.     * @return JahiaPage the first available home page, null if none.     * @author Khue Nguyen     */    private JahiaPage getHomepage(JahiaSite site, JahiaUser user)    throws JahiaException{        //JahiaConsole.println(CLASS_NAME+".getHomepage","started");        JahiaPage page = null;        try {            JahiaPageBaseService pageService = JahiaPageBaseService.getInstance();            // get user home page            if ( user.getHomepageID() >= 0 ){                try {                    page = (JahiaPage)pageService                                .lookupPageWhitoutTemplates (user.getHomepageID());                    if ( page != null ){                        //JahiaConsole.println(CLASS_NAME+".getHomepage","found user homepage " + page.getTitle());                        return page;                    }                } catch ( Throwable t ){                    t.printStackTrace();                }            }            // get group homepages            JahiaGroupManagerService grpServ = ServicesRegistry.getInstance().getJahiaGroupManagerService();            Vector v = grpServ.getUserMembership(user);            int size = v.size();            String grpKey = null;            JahiaGroup grp = null;            for ( int i=0 ; i<size ; i++ ){                grpKey = (String)v.get(i);                grp = grpServ.lookupGroup(grpKey);                if ( grp != null                        && grp.getSiteID() == site.getID()                        && grp.getHomepageID() >=0 ){                        //JahiaConsole.println(CLASS_NAME+".getHomepage","found a group with homepage " + grp.getGroupname() + ", page=" + grp.getHomepageID() );                    try {                        page = (JahiaPage)pageService                            .lookupPageWhitoutTemplates (grp.getHomepageID());                        if ( page != null ){                            //JahiaConsole.println(CLASS_NAME+".getHomepage","found group homepage =" + page.getTitle() );                            return page;                        }                    } catch ( Throwable t ){                        t.printStackTrace();                    }                }            }        } catch (Throwable t) {            t.printStackTrace();        }        return null;    }} // end Login_Engine

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -