Uploaded image for project: 'Confluence Cloud'
  1. Confluence Cloud
  2. CONFCLOUD-25938

Allow only valid mail address as username for invited user

    XMLWordPrintable

Details

    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

    Description

      NOTE: This suggestion is for Confluence Cloud. Using Confluence Server? 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: