I have a client that has a need for adding users without knowing their e-mail beforehand. Their wish is that when the user login for the first time, they are prompted to enter their e-mail, which also needs to be verified as normally by sending a activate link.

Is this possible to do?

Perhaps something hooked into the users.onBeforeSaveUser event?

  • How do they log in the first time? Is a username created when initially saving the user the first time?
    – Brad Bell
    Aug 31 '14 at 21:00
  • Yes, the admins would create the users as normally, from the cp. Sep 1 '14 at 7:49
  • For initial account creation, I frequently just use a plussed version of a utility email address, something like: admin+someonesname@yourdomain.com. That creates the user and just associates their account with an email that would get redirected to Gmail supports address plussing. You might need to check if your email provider does. For the rest of that process, I expect you'd need to do some plugin dev. Sep 1 '14 at 18:39
  • @BradBell Not sure if you got my reply, but i'm thinking Ben's reply might be worthwhile, if there is some way to tell Craft to verify the e-mail they enter, and also a way to check if they have verified, and not allow them past the verification screen before they do. Sep 3 '14 at 10:32

I think a custom plugin is going to be the best way to do this.

If the client is adding users from the control panel, they'll either have to put in a dummy email address (username+someUniqueId@domain.com), or you can create a front-end "user management" form for them that fills that in behind the scenes.

Regardless, you'll want to be sure "verify email address" is not enabled for the user at this point.

Then, assuming you'll be providing your own front-end login form for these users, with username/password fields (password not required), you'll want to point the form to your plugin's controller with it's own actionLogin method (very similar to Craft's UsersController->actionLogin), but check to see if password is null and if the username is valid and if the email is in the format of the unique email address that was previous assigned.

If so, prompt for their actual email, then send Craft's activation email and let it go through Craft's usual workflow for setting a password on the user account.

  • Thanks, sounds like a good way to do it! I'll dig into the existing code. Sep 3 '14 at 20:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.