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
     
    5757        public String getDescription() { 
    5858                return UserR4.KEY_DESCRIPTION.get(getAccess()); 
    5959        } 
    60  
     60         
    6161        /** 
    6262         * The {@link UserGroupR4}s this user belongs to. 
    6363         *  
     
    6767        public ImmList<ResourceRefR4> getGroups() { 
    6868                return UserR4.KEY_GROUPS.get(getAccess()); 
    6969        } 
    70  
     70         
    7171        @Override 
    7272        public String getTitle() { 
    7373                String title = super.getTitle(); 
    7474                if (title == null || "".equals(title)  
    7575                                || ResourceR4.DEFAULT_TITLE.equals(title)) { 
    76                         return getEmail(); 
     76                        return getRef().getName(); 
    7777                } 
    7878                return title; 
    7979        } 
     80         
    8081        @Override 
    8182        public String getExportExtension() { 
    8283                return ".user.s2"; 
  • modules/org.sophie2.server.webui/src/main/java/org/sophie2/server/webui/handlers/RegisterHandler.java

     
    6363                        if (ResourceR4.KEY_CHILDREN.get(usersAccess).contains(userName)) { 
    6464                                WebUIMessage.addMessage(context, ERROR, "register.username_exists"); 
    6565                        } 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                                } 
    6772                        } 
    6873                } 
    6974                 
     
    7277                        WebUIMessage.addMessage(context, ERROR, "register.email_required"); 
    7378                } else { 
    7479                        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); 
    7682                        } else { 
    7783                                registration.setEmail(email); 
    7884                        } 
  • dev-tools/server.FakeServerMain.launch

     
    77<listEntry value="1"/> 
    88</listAttribute> 
    99<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="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;sourceLookupDirector&gt;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.extra.func.pdf&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.server.core&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.server.webapp&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.server.webui&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.model.text&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.model.resources.r4&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.connectivity&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.author&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.dialogs&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.layout&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.model.book&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.persistence&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.scene&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.core&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.core.modularity&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.layout.vldocking&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.main&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.main.model&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.main.view&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.messy&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.server&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;sophie2-platform&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;default/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#10;&lt;/sourceContainers&gt;&#10;&lt;/sourceLookupDirector&gt;&#10;"/> 
     10<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;sourceLookupDirector&gt;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.extra.func.pdf&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.server.core&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.server.webapp&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.server.webui&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.model.text&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.model.resources.r4&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.config&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.connectivity&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.author&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.dialogs&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.layout&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.model.book&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.persistence&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.base.scene&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.core&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.core.modularity&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.layout.vldocking&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.main&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.main.model&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.main.view&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.messy&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.sophie2.server&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;sophie2-platform&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;default/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#10;&lt;/sourceContainers&gt;&#10;&lt;/sourceLookupDirector&gt;&#10;"/> 
    1111<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/> 
    1212<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"/> 
    1313<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

     
    3535 */ 
    3636public class WebAppModule extends SophieModule { 
    3737         
    38         private static final int DEFAULT_SERVER_PORT = 8003; 
     38        private static final int DEFAULT_SERVER_PORT = 8007; 
    3939         
    4040        private static WebAppModule instance = null; 
    4141        private SophieExtensionPoint<HttpRequestHandler> httpRequestHandlerExtensionPoint; 
  • modules/org.sophie2.server.webui/src/main/java/org/sophie2/server/webui/handlers/RequestHandlerUtil.java

     
    77import java.io.OutputStream; 
    88import java.security.MessageDigest; 
    99import java.security.NoSuchAlgorithmException; 
     10import java.util.regex.Matcher; 
     11import java.util.regex.Pattern; 
    1012 
    11 import javax.mail.internet.AddressException; 
    12 import javax.mail.internet.InternetAddress; 
    1313import javax.servlet.ServletException; 
    1414import javax.servlet.http.HttpServlet; 
    1515 
     
    3434 */ 
    3535public class RequestHandlerUtil { 
    3636         
    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]+"); 
    5638 
    5739        /** 
    5840         * Method that tries to log-in a user by a given password. If the login is  
     
    7961                String path = context.getContextAbsolutePath(); 
    8062                FacadeR4 facade = webUIContext.findFacade(path); 
    8163                Navigator navigator = context.getNavigator(); 
    82                   
     64 
    8365                String sessionId = facade.openSession().extract(); 
    8466                UserH user = ResourceH.getHelper(userAccess, UserH.class); 
    8567                ResourceRefR4 userRef = userAccess.getRef(); 
     
    9678                        navigator.navigate("/login", "login.jspx"); 
    9779                } 
    9880        } 
    99          
     81 
    10082        /** 
    10183         * Method that gets the hash code for a given string by the MD5 algorithm.  
    10284         *  
     
    11092                try { 
    11193                        MessageDigest algorithm = MessageDigest.getInstance("MD5"); 
    11294                        algorithm.reset(); 
    113                  
     95 
    11496                        algorithm.update(password.getBytes()); 
    11597                        byte messageDigest[] = algorithm.digest();  
    11698                        for (byte dig:messageDigest) { 
     
    143125                        } 
    144126                } 
    145127        } 
    146          
     128 
    147129        /** 
    148130         * Checks syntax of a given e-mail. 
    149131         *  
     
    153135         *                      true if the e-mail is valid and false otherwise. 
    154136         */ 
    155137        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(); 
    162140        } 
    163          
     141 
    164142        /** 
    165143         * Writes a given {@link BufferedInputStream} to the response of the 
    166144         * {@link HandleContext} 
     
    186164                        inputStream.close(); 
    187165                } 
    188166        } 
     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        } 
    189184} 
  • modules/org.sophie2.server.webui/src/main/java/org/sophie2/server/webui/handlers/ForgottenPasswordHandler.java

     
    4444         */ 
    4545        private static final long serialVersionUID = 4911464333502576011L; 
    4646 
    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         
    4951         
    5052        public boolean canHandle(String path) { 
    5153                return RequestUtils.matchesSpecification(path, "/forgotten_password"); 
     
    6062                        navigator.navigate("lost_password.jspx"); 
    6163                        return; 
    6264                } 
    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); 
    6471 
    65                 String contextPath = context.getContextAbsolutePath(); 
    66                 ResourceAccess usersAccess = this.webUIContext.getAccess( 
    67                                 ServerResourceHelper.USERS_REL_REF, contextPath); 
     72                        String userName = context.getRequestParameter("userName"); 
    6873 
    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); 
    7091 
    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."; 
    7999 
    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); 
    84108                                } 
     109                                 
     110                                new AutoAction("Change pass", true) { 
    85111 
    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); 
    102119                                navigator.redirectToReferrer(4, MESSAGE_SENT_SUCCESSFULLY); 
    103                         } catch (AddressException e) { 
     120                                 
     121                        } else { 
    104122                                WebUIMessage.addMessage(context, WebUIMessage.Severity.ERROR, 
    105                                 "register.invalid_email"); 
     123                                "forgotten_password.user_not_exists"); 
    106124                                navigator.navigate("lost_password.jspx"); 
    107                         } catch (MessagingException e) { 
    108                                 navigator.redirectToReferrer(4, COULD_NOT_SEND_MESSAGE); 
    109125                        } 
    110126                } 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); 
    114128                } 
     129 
    115130        } 
    116131 
    117132        private Session session = null; 
     
    121136                        Properties props = new Properties(); 
    122137                        props.setProperty("mail.transport.protocol", "smtp"); 
    123138                        String host = ConfigurationManager.get().getValue(ServerConfig.SMTP_SERVER); 
    124                         props.setProperty("mail.smtp.host", host); 
    125139                        String port = ConfigurationManager.get().getValue(ServerConfig.SMTP_PORT).toString(); 
    126                         props.setProperty("mail.smtp.port", port); 
    127  
    128140                        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; 
    143145                        } 
    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                }  
    145160                return this.session; 
    146161        } 
    147162 
  • modules/org.sophie2.server.webui/src/main/resources/org/sophie2/server/webui/messages.properties

     
    2222login.invalid_user_or_password.detailMessage=Username you entered does not \ 
    2323exists or the password is invalid. 
    2424#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. 
     25forgotten_password.user_not_exists.message=The provided user-name can not be found.  
    2726#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. 
     27register.email_required.message=The email field is required.  
     28register.invalid_email.message=The e-mail {0} is not valid. 
     29register.username_empty.message=The user-name field is required. 
     30register.username_not_valid.message=The user-name {0} is not valid.  
     31register.username_exists.message=The user-name you entered already exists on the server. 
    3132register.short_password.message=Your password should be longer than 6 symbols. 
    3233register.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.  
    3534 
    36 please try again later. 
    3735# Edit Profile 
    3836edit_profile.old_password_not_same.message=Old password is wrong. 
    3937# Resources