Ticket #2401: s2s-web-bugs.patch
File s2s-web-bugs.patch, 32.6 KB (added by mira, 15 years ago) |
---|
-
modules/org.sophie2.base.model.security/src/main/java/org/sophie2/base/model/security/UserH.java
### Eclipse Workspace Patch 1.0 #P sophie
57 57 public String getDescription() { 58 58 return UserR4.KEY_DESCRIPTION.get(getAccess()); 59 59 } 60 60 61 61 /** 62 62 * The {@link UserGroupR4}s this user belongs to. 63 63 * … … 67 67 public ImmList<ResourceRefR4> getGroups() { 68 68 return UserR4.KEY_GROUPS.get(getAccess()); 69 69 } 70 70 71 71 @Override 72 72 public String getTitle() { 73 73 String title = super.getTitle(); 74 74 if (title == null || "".equals(title) 75 75 || ResourceR4.DEFAULT_TITLE.equals(title)) { 76 return get Email();76 return getRef().getName(); 77 77 } 78 78 return title; 79 79 } 80 80 81 @Override 81 82 public String getExportExtension() { 82 83 return ".user.s2"; -
modules/org.sophie2.server.webui/src/main/java/org/sophie2/server/webui/handlers/RegisterHandler.java
63 63 if (ResourceR4.KEY_CHILDREN.get(usersAccess).contains(userName)) { 64 64 WebUIMessage.addMessage(context, ERROR, "register.username_exists"); 65 65 } else { 66 registration.setUserName(userName); 66 if (!RequestHandlerUtil.isValidUserName(userName)) { 67 Object[] params = {userName}; 68 WebUIMessage.addMessage(context, ERROR, "register.username_not_valid", params, null); 69 } else { 70 registration.setUserName(userName); 71 } 67 72 } 68 73 } 69 74 … … 72 77 WebUIMessage.addMessage(context, ERROR, "register.email_required"); 73 78 } else { 74 79 if (!RequestHandlerUtil.isValidMail(email)) { 75 WebUIMessage.addMessage(context, ERROR, "register.invalid_email"); 80 Object[] params = {email}; 81 WebUIMessage.addMessage(context, ERROR, "register.invalid_email", params, null); 76 82 } else { 77 83 registration.setEmail(email); 78 84 } -
dev-tools/server.FakeServerMain.launch
7 7 <listEntry value="1"/> 8 8 </listAttribute> 9 9 <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> 10 <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="false"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.extra.func.pdf&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.server.core&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.server.webapp&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.server.webui&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.model.text&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.model.resources.r4&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.con nectivity&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.author&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.dialogs&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.layout&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.model.book&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.persistence&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.scene&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.core&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.core.modularity&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.layout.vldocking&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.main&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.main.model&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.main.view&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.messy&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.server&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;sophie2-platform&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;default/&gt;&#10;" typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/>10 <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="false"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.extra.func.pdf&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.server.core&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.server.webapp&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.server.webui&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.model.text&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.model.resources.r4&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.config&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.connectivity&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.author&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.dialogs&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.layout&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.model.book&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.persistence&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.base.scene&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.core&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.core.modularity&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.layout.vldocking&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.main&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.main.model&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.main.view&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.messy&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;org.sophie2.server&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;sophie2-platform&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;default/&gt;&#10;" typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/> 11 11 <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/> 12 12 <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> 13 13 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.sophie2.dev.server.FakeServerMain"/> -
modules/org.sophie2.server.webapp/src/main/java/org/sophie2/server/webapp/WebAppModule.java
35 35 */ 36 36 public class WebAppModule extends SophieModule { 37 37 38 private static final int DEFAULT_SERVER_PORT = 800 3;38 private static final int DEFAULT_SERVER_PORT = 8007; 39 39 40 40 private static WebAppModule instance = null; 41 41 private SophieExtensionPoint<HttpRequestHandler> httpRequestHandlerExtensionPoint; -
modules/org.sophie2.server.webui/src/main/java/org/sophie2/server/webui/handlers/RequestHandlerUtil.java
7 7 import java.io.OutputStream; 8 8 import java.security.MessageDigest; 9 9 import java.security.NoSuchAlgorithmException; 10 import java.util.regex.Matcher; 11 import java.util.regex.Pattern; 10 12 11 import javax.mail.internet.AddressException;12 import javax.mail.internet.InternetAddress;13 13 import javax.servlet.ServletException; 14 14 import javax.servlet.http.HttpServlet; 15 15 … … 34 34 */ 35 35 public class RequestHandlerUtil { 36 36 37 /** 38 * Generates a user name form a given e-mail. 39 * 40 * @param email 41 * The user e-mail. 42 * @return 43 * String containing only allowed symbols for a resource ref. 44 */ 45 public static String getUserName(String email) { 46 StringBuilder result = new StringBuilder(); 47 for (char symbol : email.toCharArray()) { 48 if (ResourceUtil.SAFE_CHARS.indexOf(symbol) == -1) { 49 result.append('_'); 50 } else { 51 result.append(symbol); 52 } 53 } 54 return result.toString(); 55 } 37 private static final Pattern EMAIL_PATTERN = Pattern.compile(".+@.+\\.[a-z]+"); 56 38 57 39 /** 58 40 * Method that tries to log-in a user by a given password. If the login is … … 79 61 String path = context.getContextAbsolutePath(); 80 62 FacadeR4 facade = webUIContext.findFacade(path); 81 63 Navigator navigator = context.getNavigator(); 82 64 83 65 String sessionId = facade.openSession().extract(); 84 66 UserH user = ResourceH.getHelper(userAccess, UserH.class); 85 67 ResourceRefR4 userRef = userAccess.getRef(); … … 96 78 navigator.navigate("/login", "login.jspx"); 97 79 } 98 80 } 99 81 100 82 /** 101 83 * Method that gets the hash code for a given string by the MD5 algorithm. 102 84 * … … 110 92 try { 111 93 MessageDigest algorithm = MessageDigest.getInstance("MD5"); 112 94 algorithm.reset(); 113 95 114 96 algorithm.update(password.getBytes()); 115 97 byte messageDigest[] = algorithm.digest(); 116 98 for (byte dig:messageDigest) { … … 143 125 } 144 126 } 145 127 } 146 128 147 129 /** 148 130 * Checks syntax of a given e-mail. 149 131 * … … 153 135 * true if the e-mail is valid and false otherwise. 154 136 */ 155 137 public static boolean isValidMail(String email) { 156 try { 157 new InternetAddress(email, true); 158 return true; 159 } catch (AddressException e) { 160 return false; 161 } 138 Matcher matcher = EMAIL_PATTERN.matcher(email); 139 return matcher.matches(); 162 140 } 163 141 164 142 /** 165 143 * Writes a given {@link BufferedInputStream} to the response of the 166 144 * {@link HandleContext} … … 186 164 inputStream.close(); 187 165 } 188 166 } 167 168 /** 169 * Checks if the provided user-name is valid. Valid user-names 170 * contain only safe symbols for {@link ResourceRefR4} parts. 171 * @param userName 172 * The user-name provided by the user. 173 * @return 174 * true if it is valid and false otherwise. 175 */ 176 public static boolean isValidUserName(String userName) { 177 for (char symbol : userName.toCharArray()) { 178 if (ResourceUtil.SAFE_CHARS.indexOf(symbol) == -1) { 179 return false; 180 } 181 } 182 return true; 183 } 189 184 } -
modules/org.sophie2.server.webui/src/main/java/org/sophie2/server/webui/handlers/ForgottenPasswordHandler.java
44 44 */ 45 45 private static final long serialVersionUID = 4911464333502576011L; 46 46 47 private static String COULD_NOT_SEND_MESSAGE = "The message could not be sent."; 48 private static String MESSAGE_SENT_SUCCESSFULLY = "The message was sent successfully."; 47 private static String COULD_NOT_SEND_MESSAGE = "The password could not be reset."; 48 private static String MESSAGE_SENT_SUCCESSFULLY = "The password was reset successfully. Check your email to learn your new password."; 49 private static String SERVER_CONFIGURATION = "The supprot mail is not configured correctly. Please contanct your server administrator."; 50 49 51 50 52 public boolean canHandle(String path) { 51 53 return RequestUtils.matchesSpecification(path, "/forgotten_password"); … … 60 62 navigator.navigate("lost_password.jspx"); 61 63 return; 62 64 } 63 Message message = new MimeMessage(getSession()); 65 if (getSession() != null) { 66 Message message = new MimeMessage(getSession()); 67 68 String contextPath = context.getContextAbsolutePath(); 69 ResourceAccess usersAccess = this.webUIContext.getAccess( 70 ServerResourceHelper.USERS_REL_REF, contextPath); 64 71 65 String contextPath = context.getContextAbsolutePath(); 66 ResourceAccess usersAccess = this.webUIContext.getAccess( 67 ServerResourceHelper.USERS_REL_REF, contextPath); 72 String userName = context.getRequestParameter("userName"); 68 73 69 String userName = context.getRequestParameter("userName"); 74 if ((!"".equals(userName)) && 75 ResourceR4.KEY_CHILDREN.get(usersAccess).contains(userName)) { 76 ResourceAccess userAccess = usersAccess.open(ResourceRefR4.makeChild(userName), null); 77 UserH userH = ResourceH.getHelper(userAccess, UserH.class); 78 String email = userH.getEmail(); 79 80 InternetAddress toAddress; 81 try { 82 toAddress = new InternetAddress(email, false); 83 } catch (AddressException e) { 84 WebUIMessage.addMessage(context, WebUIMessage.Severity.ERROR, 85 "register.invalid_email"); 86 navigator.navigate("lost_password.jspx"); 87 return; 88 } 89 90 final String password = ResourceUtil.generateSuffix(10); 70 91 71 if ((!"".equals(userName)) && 72 ResourceR4.KEY_CHILDREN.get(usersAccess).contains(userName)) { 73 ResourceAccess userAccess = usersAccess.open(ResourceRefR4.makeChild(userName), null); 74 UserH userH = ResourceH.getHelper(userAccess, UserH.class); 75 final String email = userH.getEmail(); 76 77 final String password = ResourceUtil.generateSuffix(10); 78 new AutoAction("Change pass", true) { 92 String text = " Hello, " + userH.getTitle() + ", \n" 93 + " A new password was requested for your Sophie 2 Server account at " 94 + contextPath + ". Your new password to Sophie 2 Server is " 95 + password + ". After you have logged in using the new password, " 96 + " you may change it by going to \"edit profile\" section. \n\n" 97 + "This is automatic mail, please do not reply. \n\n" 98 + "Best,\nSophie 2 team."; 79 99 80 @Override 81 public void performAuto() { 82 String passHash = RequestHandlerUtil.hashPassword(password); 83 getChanger().setRaw(UserR4.KEY_PASSWORD, passHash); 100 try { 101 message.setSubject("change password request"); 102 message.setRecipient(RecipientType.TO, toAddress); 103 message.setText(text); 104 Transport.send(message); 105 106 } catch (MessagingException e) { 107 navigator.redirectToReferrer(4, COULD_NOT_SEND_MESSAGE); 84 108 } 109 110 new AutoAction("Change pass", true) { 85 111 86 }.register(userAccess); 87 88 String text = " Hello, " + userH.getTitle() + ", \n" 89 + " A new password was requested for your Sophie 2 Server account at " 90 + contextPath + ". Your new password to Sophie 2 Server is " 91 + password + ". After you have logged in using the new password, " 92 + " you may change it by going to \"edit profile\" section. \n\n" 93 + "This is automatic mail, please do not reply. \n\n" 94 + "Best,\nSophie 2 team."; 95 96 try { 97 message.setSubject("change password request"); 98 InternetAddress toAddress = new InternetAddress(email, false); 99 message.setRecipient(RecipientType.TO, toAddress); 100 message.setText(text); 101 Transport.send(message); 112 @Override 113 public void performAuto() { 114 String passHash = RequestHandlerUtil.hashPassword(password); 115 getChanger().setRaw(UserR4.KEY_PASSWORD, passHash); 116 } 117 118 }.register(userAccess); 102 119 navigator.redirectToReferrer(4, MESSAGE_SENT_SUCCESSFULLY); 103 } catch (AddressException e) { 120 121 } else { 104 122 WebUIMessage.addMessage(context, WebUIMessage.Severity.ERROR, 105 " register.invalid_email");123 "forgotten_password.user_not_exists"); 106 124 navigator.navigate("lost_password.jspx"); 107 } catch (MessagingException e) {108 navigator.redirectToReferrer(4, COULD_NOT_SEND_MESSAGE);109 125 } 110 126 } else { 111 WebUIMessage.addMessage(context, WebUIMessage.Severity.ERROR, 112 "forgotten_password.mail_not_exists"); 113 navigator.navigate("lost_password.jspx"); 127 navigator.redirectToReferrer(4, SERVER_CONFIGURATION); 114 128 } 129 115 130 } 116 131 117 132 private Session session = null; … … 121 136 Properties props = new Properties(); 122 137 props.setProperty("mail.transport.protocol", "smtp"); 123 138 String host = ConfigurationManager.get().getValue(ServerConfig.SMTP_SERVER); 124 props.setProperty("mail.smtp.host", host);125 139 String port = ConfigurationManager.get().getValue(ServerConfig.SMTP_PORT).toString(); 126 props.setProperty("mail.smtp.port", port);127 128 140 final String email = ConfigurationManager.get().getValue(ServerConfig.SERVER_E_MAIL); 129 props.setProperty("mail.smtp.from", email); 130 final String password = ConfigurationManager.get().getValue(ServerConfig.MAIL_PASSWORD).toString(); 131 if (password != null) { 132 props.put("mail.smtp.auth", "true"); 133 props.put("mail.smtp.starttls.enable", "true"); 134 Authenticator auth = new Authenticator() { 135 @Override 136 protected PasswordAuthentication getPasswordAuthentication() { 137 return new PasswordAuthentication(email, password); 138 } 139 }; 140 this.session = Session.getInstance(props, auth); 141 } else { 142 this.session = Session.getInstance(props); 141 final String password = ConfigurationManager.get().getValue(ServerConfig.MAIL_PASSWORD); 142 143 if (host == null || port == null || email == null || password == null) { 144 return null; 143 145 } 144 } 146 props.setProperty("mail.smtp.host", host); 147 props.setProperty("mail.smtp.port", port); 148 props.setProperty("mail.smtp.from", email); 149 150 props.put("mail.smtp.auth", "true"); 151 props.put("mail.smtp.starttls.enable", "true"); 152 Authenticator auth = new Authenticator() { 153 @Override 154 protected PasswordAuthentication getPasswordAuthentication() { 155 return new PasswordAuthentication(email, password); 156 } 157 }; 158 this.session = Session.getInstance(props, auth); 159 } 145 160 return this.session; 146 161 } 147 162 -
modules/org.sophie2.server.webui/src/main/resources/org/sophie2/server/webui/messages.properties
22 22 login.invalid_user_or_password.detailMessage=Username you entered does not \ 23 23 exists or the password is invalid. 24 24 #Forgotten password messages 25 forgotten_password.mail_not_exists.message=Mail {0} cannot be found. 26 forgotten_password.mail_not_exists.detailMessage=Mail {0} cannot be found. 25 forgotten_password.user_not_exists.message=The provided user-name can not be found. 27 26 #Register messages 28 register.invalid_email.message=The given e-mail {0} is not valid e-mail. 29 register.username_empty.message=The e-mail field is required, it must be filled. 30 register.username_exists.message=The e-mail you entered already exists on the server. 27 register.email_required.message=The email field is required. 28 register.invalid_email.message=The e-mail {0} is not valid. 29 register.username_empty.message=The user-name field is required. 30 register.username_not_valid.message=The user-name {0} is not valid. 31 register.username_exists.message=The user-name you entered already exists on the server. 31 32 register.short_password.message=Your password should be longer than 6 symbols. 32 33 register.passwords_not_match.message=The provided passwords should match. 33 register.cannot_register.message=The registration has been unsuccessful.34 register.email_required.message=The email field is required.35 34 36 please try again later.37 35 # Edit Profile 38 36 edit_profile.old_password_not_same.message=Old password is wrong. 39 37 # Resources