📄 registerservlet.java
字号:
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 + -