!Allow users to self register and have their accounts enabled.\\

CrushFTP supports allowing users to self register on your server.  This is not automatic, and you must configure and personalize this experience.  You have extensive controls over the entire process. You can also use internal Sharing (Enterprise license feature only) to users who have yet to register for their account.
http://www.crushftp.com/crush7wiki/Wiki.jsp?page=Sharing

The first step is to create a username in the user manager that will be used for this.  Keep it simple, and use a basic simple password too.  Do not assign them any additional privileges as this will be a public account that is used for doing registrations.

I suggest an account name "register" with a password of "register".  This will allow you to use a URL like this to reach the registration page:

{{{
https://www.crushftp.com/?u=register&p=register&path=/WebInterface/jQuery/messageForm.html
}}}

When this page loads, it looks at the URL to see the name of the HTML file.  The default is "messageForm" and its fine to keep it this way.  It then asks the server to give it the registration form named "messageForm" as long as it has been assigned to the "register" user.  If it hasn't, you will just get a blank page.  If you do not use this custom login.html page, the registration can still be processed, its just a little less intuitive to the user that it was processed.

The next step is to make a form named "messageForm" in the [Preferences], [WebInterface|WebInterfacePrefs], Custom Forms.  There are only two required items for the form, the username and password.  Every field item must have a 'name' that starts with 'registration_'.

So for the three required items, they would be "Email" and it's value is "registration_username" and "confirm email" with the value of "registration_email" and the "password" filed with it's "registration_password" value.  You can have more items, just look at a user.xml file to see other element names.  So if you wanted to include another item in the registration, you would do 'registration_otherelementname'.

[attachments|signupform.png]

Now that you have the form defined, and the registration user created, you need to assign this form to the registration user.  You do this in the [User Manager].  Use the Quick Jump drop down to get to the WebInterface section.  Then assign your form there.

[attachments|CrushTaskExample7/message form enable.png]

Save all changes, and you are ready to test.  When you login as the registration username, and go to that specific HTML page, this form will be loaded and sent in a 'registration' request mode.

{{{
http://www.domain.com:8080/?u=register&p=register&path=/WebInterface/jQuery/messageForm.html
}}}

This is what the form looks like for the user:

[attachments|CrushTaskExample7/register popup.png]

When a user self registers, their account is created as a disabled user, and added to a specific group called "pendingSelfRegistration".  This group will contain all users that signup in this way.  You can then review users in the group, enable their accounts, and remove them from the group.  Or you may simply delete the user if they are not approved.

----

You can also do more advanced things with this as well.  You can attach events that send email notifications thanking users for registering, and for letting you know there is a user that is pending.  This is done via the events section, and using an event for when a user "accepts disclaimer" as this is the same form.

----

If you need further customizations, you can customize the messageForm.html page with your own copy and use it instead.  Just be sure to use the appropriately named form name based on the html file's name.

----
For the newly created user to have the share access you need to check the "Allow receiving of shared items from other users" on your template "register" user or on the "default" user.

[attachments|CrushTaskExample7/allow_receiving_shared_items.png]

----

If you want to enable the self registered accounts without user interference, you can use the following event, on the register user. Set the path according to the machine that is hosting CrushFTP.
The path should be something like:
/Applications/CrushFTP8_OSX/users/MainUsers/{registration_username}/user.XML
 Or
C:/Program Files/CrushFTP8_PC/users/MainUsers/{registration_username}/user.XML

 [attachments|Self Registration/selfregister auto enable0.png]
 
 [attachments|Self Registration/selfregister auto enable1.png]
 
 [attachments|Self Registration/selfregister auto enable2.png]
 
 [attachments|Self Registration/selfregister auto enable3.png]
  
 [attachments|Self Registration/selfregister auto enable4.png]