1

is it possible to have the public registration form validate the users Email, but still require manual activation by a system administrator?

There's User Registration - Keep as inactive until verified by admin which I think will stop a clicked email confirmation link from activating the user...

but from what I can tell Craft's "email confirmation" is really just an "activate user via link"; so it's not really confirming the validity of the email nor storing that confirmation anywhere; it's just activating the user. Is that right or am I mis-understanding it?

Thanks, Matt

1 Answer 1

2

I think the approach Johannes posted as an answer to the question you linked to is a good one.

  • Let the user activate the account via email. It makes sure the address exists and he has access to it, because he can't guess the activation URL without the mail.
  • This activation only makes him become a member of a Users Group without any permissions at all (e.g. 'unverifiedUsers'). To restrict front end access do something like this:

    {% if currentUser.isInGroup('unverifiedUsers') %}
        <p>You don't have access rights. Please wait until an admin verifies you account. Thank you!</p>
    {% else %}
        {% include 'partial' %}
    {% endif %}
    
  • Then let an admin do the manual verification: add the user to a group with the permissions you want.

2
  • Unfortunately that's not practical for my use case; I've a plugin that creates an entry on activation - I don't want that happening unless the user is also verified; so the verification needs to happen prior to the activation. With the Group approach, the page would be created prior to the admin vetting the user. Commented Feb 9, 2015 at 13:51
  • 3
    @MattWilcox you could rewrite the plugin and listen to users.onSaveUser instead of users.onActivateUser events and conditionally create that "first entry" if the user is a) in the right user group (not 'unverifiedUsers' any more) and b) no entry by that user exists.
    – carlcs
    Commented Feb 9, 2015 at 13:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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