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

📄 registerservlet.java

📁 dspace 用j2ee架构的一个数字图书馆.开源程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                                env.put(javax.naming.Context.PROVIDER_URL, ldap_provider_url);                                                        // Authenticate                                 env.put(javax.naming.Context.SECURITY_AUTHENTICATION, "simple");                                env.put(javax.naming.Context.SECURITY_PRINCIPAL, ldap_id_field+"="+netid+","+ldap_search_context);                                env.put(javax.naming.Context.SECURITY_CREDENTIALS, password);                                                        try {                                   // Create initial context                                   DirContext ctx = new InitialDirContext(env);                                                // Close the context when we're done                                   ctx.close();                                }                                 catch (NamingException e)                                 {                                    // If we reach here, supplied email/password was duff.                                    log.info(LogManager.getHeader(context,                                        "failed_login",                                        "netid=" + netid + e));                                    JSPManager.showJSP(request, response, "/login/ldap-incorrect.jsp");                                    return;                                }                            }                            //--------- END LDAP AUTH SECTION -------------                            // Forward to "personal info page"                            JSPManager.showJSP(request, response, "/register/registration-form.jsp");                        }                    }                    else                    {                        JSPManager.showJSP(request, response,                            "/register/cannot-register.jsp");                    }                }            }            else            {                if (eperson == null)                {                    // Invalid email address                    log.info(LogManager.getHeader(context, "unknown_email",                            "email=" + email));                    request.setAttribute("retry", new Boolean(true));                    JSPManager.showJSP(request, response,                            "/register/forgot-password.jsp");                }                else if (!eperson.canLogIn())                {                    // Can't give new password to inactive user                    log.info(LogManager.getHeader(context,                            "unregistered_forgot_password", "email=" + email));                    JSPManager.showJSP(request, response,                            "/register/inactive-account.jsp");                }                else if (eperson.getRequireCertificate() && !registering)                {                    // User that requires certificate can't get password                    log.info(LogManager.getHeader(context,                            "certificate_user_forgot_password", "email="                                    + email));                    JSPManager.showJSP(request, response,                            "/error/require-certificate.jsp");                }                else                {                    // OK to send forgot pw token.                    log.info(LogManager.getHeader(context,                            "sendtoken_forgotpw", "email=" + email));                    AccountManager.sendForgotPasswordInfo(context, email);                    JSPManager.showJSP(request, response,                            "/register/password-token-sent.jsp");                    // Context needs completing to write registration data                    context.complete();                }            }        }        catch (AddressException ae)        {            // Malformed e-mail address            log.info(LogManager.getHeader(context, "bad_email", "email="                    + email));            request.setAttribute("retry", new Boolean(true));            if (registering)            {                if (ldap_enabled) JSPManager.showJSP(request, response, "/register/new-ldap-user.jsp");                else JSPManager.showJSP(request, response, "/register/new-user.jsp");            }            else            {                JSPManager.showJSP(request, response,                        "/register/forgot-password.jsp");            }        }        catch (MessagingException me)        {            // Some other mailing error            log.info(LogManager.getHeader(context, "error_emailing", "email="                    + email), me);            JSPManager.showInternalError(request, response);        }    }    /**     * Process information from "Personal information page"     *      * @param context     *            current DSpace context     * @param request     *            current servlet request object     * @param response     *            current servlet response object     */    private void processPersonalInfo(Context context,            HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException, SQLException,            AuthorizeException    {        // Get the token        String token = request.getParameter("token");        // Get the email address        String email = AccountManager.getEmail(context, token);        String netid = request.getParameter("netid");        if ((netid!=null)&&(email==null)) email = request.getParameter("email");                // If the token isn't valid, show an error        if (email == null && netid==null)        {            log.info(LogManager.getHeader(context, "invalid_token", "token="                + token));            // Invalid token            JSPManager                .showJSP(request, response, "/register/invalid-token.jsp");            return;        }        // If the token is valid, we create an eperson record if need be        EPerson eperson = null;        if (email!=null) eperson = EPerson.findByEmail(context, email);        EPerson eperson2 = null;        eperson2 = EPerson.findByNetid(context, netid);        if (eperson2 !=null) eperson = eperson2;                if (eperson == null)        {            // Need to create new eperson            // FIXME: TEMPORARILY need to turn off authentication, as usually            // only site admins can create e-people            context.setIgnoreAuthorization(true);            eperson = EPerson.create(context);            eperson.setEmail(email);            eperson.setNetid(netid);            eperson.update();            context.setIgnoreAuthorization(false);        }        // Now set the current user of the context        // to the user associated with the token, so they can update their        // info        context.setCurrentUser(eperson);        // Set the user profile info        boolean infoOK = EditProfileServlet.updateUserProfile(eperson, request);        eperson.setCanLogIn(true);        eperson.setSelfRegistered(true);        // Give site auth a chance to set/override appropriate fields        AuthenticationManager.initEPerson(context, request, eperson);        // If the user set a password, make sure it's OK        boolean passwordOK = true;        if (eperson.getRequireCertificate() == false && netid==null &&            AuthenticationManager.allowSetPassword(context, request,                eperson.getEmail()))        {            passwordOK = EditProfileServlet.confirmAndSetPassword(eperson,                    request);        }        if (infoOK && passwordOK)        {            // All registered OK.            log.info(LogManager.getHeader(context, "usedtoken_register",                    "email=" + eperson.getEmail()));            // delete the token            if (token!=null) AccountManager.deleteToken(context, token);                        // Update user record            eperson.update();            request.setAttribute("eperson", eperson);            JSPManager.showJSP(request, response, "/register/registered.jsp");            context.complete();        }        else        {            request.setAttribute("token", token);            request.setAttribute("eperson", eperson);            request.setAttribute("netid", netid);            request.setAttribute("missing.fields", new Boolean(!infoOK));            request.setAttribute("password.problem", new Boolean(!passwordOK));            // Indicate if user can set password            boolean setPassword = AuthenticationManager.allowSetPassword(                    context, request, email);            request.setAttribute("set.password", new Boolean(setPassword));            JSPManager.showJSP(request, response,                    "/register/registration-form.jsp");            // Changes to/creation of e-person in DB cancelled            context.abort();        }    }    /**     * Process information from "enter new password"     *      * @param context     *            current DSpace context     * @param request     *            current servlet request object     * @param response     *            current servlet response object     */    private void processNewPassword(Context context,            HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException, SQLException,            AuthorizeException    {        // Get the token        String token = request.getParameter("token");        // Get the eperson associated with the password change        EPerson eperson = AccountManager.getEPerson(context, token);        // If the token isn't valid, show an error        if (eperson == null)        {            log.info(LogManager.getHeader(context, "invalid_token", "token="                    + token));            // Invalid token            JSPManager                    .showJSP(request, response, "/register/invalid-token.jsp");            return;        }        // If the token is valid, we set the current user of the context        // to the user associated with the token, so they can update their        // info        context.setCurrentUser(eperson);        // Confirm and set the password        boolean passwordOK = EditProfileServlet.confirmAndSetPassword(eperson,                request);        if (passwordOK)        {            log.info(LogManager.getHeader(context, "usedtoken_forgotpw",                    "email=" + eperson.getEmail()));            eperson.update();            AccountManager.deleteToken(context, token);            JSPManager.showJSP(request, response,                    "/register/password-changed.jsp");            context.complete();        }        else        {            request.setAttribute("password.problem", new Boolean(true));            request.setAttribute("token", token);            request.setAttribute("eperson", eperson);            JSPManager.showJSP(request, response, "/register/new-password.jsp");        }    }}

⌨️ 快捷键说明

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