Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-25938

Allow only valid mail address as username for invited user

    XMLWordPrintable

Details

    • We collect Confluence feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

    Description

      NOTE: This suggestion is for Confluence Server. Using Confluence Cloud? See the corresponding suggestion.

      A customer pointed out the following:

      How can we configure that invited users can use only a valid mailadress as username? We used to use the invite plugin and it was easy to configure this in the plugin. But now, with this functionality build into confluence i have no idea how what to do.

      Also, will it be possible in the future to have a "invite user" link also for Space Admins?

      This is from invite plugin source:

      halatas@halatas-laptop:~/src/atlassian/plugins/invite-1.8$ grep "Allow only email addresses" -R *
      src/main/resources/templates/invite/i18n.properties:configureInvite.onlyEmailUsernames=Allow only email addresses as usernames
      src/main/resources/templates/invite/.svn/text-base/i18n.properties.svn-base:configureInvite.onlyEmailUsernames=Allow only email addresses as usernames
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:20:45
      halatas@halatas-laptop:~/src/atlassian/plugins/invite-1.8$ grep -R "configureInvite.onlyEmailUsernames" *
      src/main/resources/templates/invite/i18n.properties:configureInvite.onlyEmailUsernames=Allow only email addresses as usernames
      src/main/resources/templates/invite/config/configure.vm:                #bodytag( Component "label='configureInvite.onlyEmailUsernames'" "name='onlyEmailUsernames'" "value=onlyEmailUsernames" "theme='custom'" "template='onofflist.vm'") #param ("cssClassForLabel" "label") #end
      src/main/resources/templates/invite/config/.svn/text-base/configure.vm.svn-base:                #bodytag( Component "label='configureInvite.onlyEmailUsernames'" "name='onlyEmailUsernames'" "value=onlyEmailUsernames" "theme='custom'" "template='onofflist.vm'") #param ("cssClassForLabel" "label") #end
      src/main/resources/templates/invite/.svn/text-base/i18n.properties.svn-base:configureInvite.onlyEmailUsernames=Allow only email addresses as usernames
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:20:55
      halatas@halatas-laptop:~/src/atlassian/plugins/invite-1.8$ grep onlyEmailUsernames -R * | grep -v svn | grep -v test
      src/main/resources/templates/invite/i18n.properties:configureInvite.onlyEmailUsernames=Allow only email addresses as usernames
      src/main/resources/templates/invite/invite-accept.vm:            #if ($onlyEmailUsernames && $userExists)
      src/main/resources/templates/invite/invite-accept.vm:                    #if($action.onlyEmailUsernames)
      src/main/resources/templates/invite/config/configure.vm:                #bodytag( Component "label='configureInvite.onlyEmailUsernames'" "name='onlyEmailUsernames'" "value=onlyEmailUsernames" "theme='custom'" "template='onofflist.vm'") #param ("cssClassForLabel" "label") #end
      src/main/java/com/atlassian/confluence/extra/invite/InviteSettings.java:    private boolean onlyEmailUsernames = false;
      src/main/java/com/atlassian/confluence/extra/invite/InviteSettings.java:        this.onlyEmailUsernames = settings.onlyEmailUsernames;
      src/main/java/com/atlassian/confluence/extra/invite/InviteSettings.java:        return onlyEmailUsernames;
      src/main/java/com/atlassian/confluence/extra/invite/InviteSettings.java:    public void setOnlyEmailUsernames(boolean onlyEmailUsernames)
      src/main/java/com/atlassian/confluence/extra/invite/InviteSettings.java:        this.onlyEmailUsernames = onlyEmailUsernames;
      src/main/java/com/atlassian/confluence/extra/invite/config/ConfigureInviteAction.java:    private boolean onlyEmailUsernames;
      src/main/java/com/atlassian/confluence/extra/invite/config/ConfigureInviteAction.java:        onlyEmailUsernames = settings.isOnlyEmailUsernames();
      src/main/java/com/atlassian/confluence/extra/invite/config/ConfigureInviteAction.java:        settings.setOnlyEmailUsernames(onlyEmailUsernames);
      src/main/java/com/atlassian/confluence/extra/invite/config/ConfigureInviteAction.java:        return onlyEmailUsernames;
      src/main/java/com/atlassian/confluence/extra/invite/config/ConfigureInviteAction.java:    public void setOnlyEmailUsernames(boolean onlyEmailUsernames)
      src/main/java/com/atlassian/confluence/extra/invite/config/ConfigureInviteAction.java:        this.onlyEmailUsernames = onlyEmailUsernames;
      

      This is from confluence 4.2.5 source:

      halatas@halatas-laptop:~/src/atlassian/conf/tags/confluence-project-4.2.5$ grep onlyEmailUsernames -R *
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:23:31
      halatas@halatas-laptop:~/src/atlassian/conf/tags/confluence-project-4.2.5$ find -iname *invite*
      ./confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin/src/main/resources/templates/mail/user-invite-notification.vm
      ./confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin/src/main/resources/templates/invite-users-panel.vm
      ./confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin/src/main/java/com/atlassian/confluence/plugins/easyuser/UserInvites.java
      ./confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin/src/main/java/com/atlassian/confluence/plugins/easyuser/events/GroupInviteUserSignupEvent.java
      ./confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin/src/main/java/com/atlassian/confluence/plugins/easyuser/events/SendUserInviteEvent.java
      ./confluence-test/confluence-selenium-test/src/main/java/com/atlassian/confluence/selenium/client/InviteUsersPanel.java
      ./confluence-test/confluence-selenium-test/src/main/java/com/atlassian/confluence/selenium/EasyUserInviteMailTest.java
      ./confluence-test/confluence-selenium-test/src/main/java/com/atlassian/confluence/selenium/EasyUserInviteTest.java
      ./confluence-core/confluence/src/java/com/atlassian/confluence/upgrade/upgradetask/DisableConfluenceInvitePluginUpgradeTask.java
      ./confluence-core/confluence-webapp/src/main/webapp/admin/users/browseusers-invite-panel.vm
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:24:19
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:24:19
      halatas@halatas-laptop:~/src/atlassian/conf/tags/confluence-project-4.2.5$ cd ./confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:24:30
      halatas@halatas-laptop:~/src/atlassian/conf/tags/confluence-project-4.2.5/confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin$ ll
      total 24
      drwxrwxr-x  3 halatas halatas 4096 May 31 23:19 ./
      drwxrwxr-x 26 halatas halatas 4096 May 31 23:19 ../
      -rw-rw-r--  1 halatas halatas  935 May 31 23:19 pom.xml
      drwxrwxr-x  4 halatas halatas 4096 May 31 23:19 src/
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:24:31
      halatas@halatas-laptop:~/src/atlassian/conf/tags/confluence-project-4.2.5/confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin$ cd src/
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:24:34
      halatas@halatas-laptop:~/src/atlassian/conf/tags/confluence-project-4.2.5/confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin/src$ ll
      total 16
      drwxrwxr-x 4 halatas halatas 4096 May 31 23:19 ./
      drwxrwxr-x 3 halatas halatas 4096 May 31 23:19 ../
      drwxrwxr-x 4 halatas halatas 4096 May 31 23:19 main/
      drwxrwxr-x 3 halatas halatas 4096 May 31 23:19 test/
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 22:24:35
      halatas@halatas-laptop:~/src/atlassian/conf/tags/confluence-project-4.2.5/confluence-plugins/confluence-bundled-plugins/confluence-easyuser-admin/src$ grep username * -R
      main/resources/js/signup.js:        var $username, $email,
      main/resources/js/signup.js:        usernameIsCustom = function () {
      main/resources/js/signup.js:            return $username.data('custom');
      main/resources/js/signup.js:                usernameMatches = emailVal.match(/[^@]+/);
      main/resources/js/signup.js:            return (usernameMatches ? usernameMatches[0].replace(/[\\,+<>'"\s]/g, "").toLowerCase() : '');
      main/resources/js/signup.js:            if (usernameIsCustom()) return;
      main/resources/js/signup.js:            var usernameVal = extractUsernameFromEmail();
      main/resources/js/signup.js:            $username.val(usernameVal);
      main/resources/js/signup.js:            selectAll($username);
      main/resources/js/signup.js:            var currentUsername = $username.val();
      main/resources/js/signup.js:                $username.data('custom', currentUsername);
      main/resources/js/signup.js:                $username.removeData('custom');
      main/resources/js/signup.js:                $username = $('#username');
      main/resources/js/signup.js:                $username.bind('blur', setCustomUsername);
      main/resources/js/signup.js:                $username.bind('focus', updateUsernameSelection);
      main/resources/js/signup.js:                    $username.removeData('custom');
      main/resources/atlassian-plugin.xml:        <!--<link>/admin/users/viewuser.action?username=$generalUtil.doubleUrlEncode($signedupUser.getName())</link>-->
      main/resources/com/atlassian/confluence/plugins/easyuser/i18n.properties:#username.empty=You must enter a valid username.
      main/resources/com/atlassian/confluence/plugins/easyuser/i18n.properties:#user.exists=A user with this username already exists.
      main/resources/com/atlassian/confluence/plugins/easyuser/i18n.properties:choose.username=Choose a username
      main/resources/com/atlassian/confluence/plugins/easyuser/i18n.properties:username.desc=Your username will be used to log in to Confluence. This must be unique: for example John Smith could use jsmith. \
      main/resources/com/atlassian/confluence/plugins/easyuser/i18n.properties:                    Alternatively you can use your email address as your username.
      main/resources/templates/signup.vm:                    #bodytag( "TextField" "label='username.name'" "name='username'" "theme='aui'" )
      main/resources/templates/mail/user-signup-notification.vm:#set($emailTitleLink = "/users/viewuserprofile.action?username=$generalUtil.doubleUrlEncode($modifier.name)")
      main/resources/templates/mail/user-signup-notification.vm:        $i18n.getText("username.name"): <b>$modifier.name</b><br>
      main/java/com/atlassian/confluence/plugins/easyuser/actions/SignUpAction.java:        UserForm form = new UserForm(username, fullName, email, password, confirm);
      main/java/com/atlassian/confluence/plugins/easyuser/actions/SignUpAction.java:            userAccessor.addUser(username, password, email, fullName, groups);
      main/java/com/atlassian/confluence/plugins/easyuser/actions/SignUpAction.java:                addFieldError("username", getText("user.exists"));
      main/java/com/atlassian/confluence/plugins/easyuser/actions/SignUpAction.java:            addActionError("create.user.failed", new String[] { username });
      main/java/com/atlassian/confluence/plugins/easyuser/actions/SignUpAction.java:            log.error("Failed to create user: " + username, e);
      main/java/com/atlassian/confluence/plugins/easyuser/actions/SignUpAction.java:            ServletActionContext.getResponse(), username, password, true);
      main/java/com/atlassian/confluence/plugins/easyuser/actions/SignUpAction.java:        return username;
      main/java/com/atlassian/confluence/plugins/easyuser/notifications/UserSignUpNotificationsListener.java:            "/admin/users/viewuser.action?username=" + GeneralUtil.doubleUrlEncode(user.getName()),
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      

      The option used to look like this:

      It would be great if this setting can be set via the UI.

      Attachments

        Issue Links

          Activity

            People

              jmasson@atlassian.com John Masson
              hsuhailah Hanis Suhailah (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: