---+ Package =TWiki::UI::Register=

User registration handling.


%TOC%

---++ StaticMethod *register_cgi* <tt>($session)</tt>
=register= command handler.
This method is designed to be
invoked via the =TWiki::UI::run= method.



---++ StaticMethod *passwd_cgi* <tt>($session)</tt>
=passwd= command handler.
This method is designed to be
invoked via the =TWiki::UI::run= method.



---++ StaticMethod *bulkRegister* <tt>($session)</tt>

  Called by ManageCgiScript::bulkRegister (requires authentication) with topic = the page with the entries on it.
	1 Makes sure you are an admin user ;)
	2 Calls TWiki::Data::DelimitedFile (delimiter => '|', content =>textReadFromTopic)
	3 ensures requiredFieldsPresent()
	4 starts a log file
	5 calls registerSingleBulkUser() for each row 
	6 writes output to log file, sets [[TWiki.TOPICPARENT]] back to page with entries on it.
	7 redirects to log file



---++ StaticMethod *registerAndNext* <tt>($session,$tempUserDir)</tt>

This is called when action = register or action = ""

It calls register and either Verify or Finish.

Hopefully we will get workflow integrated and rewrite this to be table driven



---++ StaticMethod *register* <tt>($session)</tt>

This is called through: TWikiRegistration -> RegisterCgiScript -> here

	1 gets rows and fields from the query
	2 calls _validateRegistration() to ensure required fields correct, else OopsException 



---++ StaticMethod *resetPassword* <tt>($session)</tt>

Generates a password. Mails it to them and asks them to change it. Entry
point intended to be called from TWiki::UI::run



---++ StaticMethod *changePassword* <tt>($session)</tt>

Change the user's password. Details of the user and password
are passed in CGI parameters.

	1 Checks required fields have values
	2 get wikiName and userName from getUserByEitherLoginOrWikiName(username)
	3 check passwords match each other, and that the password is correct, otherwise 'wrongpassword'
	4 TWiki::User::updateUserPassword
	5 'oopschangepasswd'

The NoPasswdUser case is not handled



---++ StaticMethod *verifyEmailAddress* <tt>($session,$tempUserDir)</tt>

This is called: on receipt of the activation password -> RegisterCgiScript -> here
	1 calls _reloadUserContext(activation password)
	2 throws oops if appropriate
	3 calls emailRegistrationConfirmations
	4 still calls 'oopssendmailerr' if a problem, but this is not done uniformly



---++ StaticMethod *finish* <tt></tt>

Presently this is called in RegisterCgiScript directly after a call to verify. The separation is intended for the RegistrationApprovals functionality
	1 calls _reloadUserContext (throws oops if appropriate)
	3 calls newUserFromTemplate()
	4 if using the htpasswdFormatFamily, calls _addUserToPasswordSystem
	5 calls the misnamed RegistrationHandler to set cookies
	6 calls addUserToTWikiUsersTopic
	7 writes the logEntry (if wanted :/)
	8 redirects browser to 'oopsregthanks'

reloads the context by code
these two are separate in here to ease the implementation of administrator approval 



 generate user entry
 If a password exists (either in Data{PasswordA} or data{CryptPassword}, use it.
 Otherwise generate a random one, and store it back in the user record.

<!-- Do _not_ attempt to edit this topic; it is auto-generated. Please add comments/questions/remarks to the Dev topic instead. -->
