====== Email Validation ======
Email Validation (based on ''emailval.js'' v0.2 by [[person:tracker1]]) is a simple script that, when enabled,
requires a user to validate their email address by entering a validation code that the system has e-mailed to them.

Upon successful validation, the user's security level is updated, allowing for more access privileges.

===== Invoke =====

Normally this module executes automatically for every Terminal Server logon via the [[module:logon]] module (controlled via ''[[config:modopts.ini]]''), but for testing, it can also be run using the '';exec'' sysop command.

Alternatively, it could be configured to run via [[util:SCFG]]->External Programs->Online Programs (configured to Execute upon "Logon") or [[util:SCFG]]->External Programs->Fixed Events->Logon Event (runs much later in the logon process).

A test mode can be enabled by including the ''-test'' argument on the command-line. This will cause the module to display the menu even if the current user has already been "validated".

===== Install =====

Set ''email_validation = true'' in the ''[logon]'' section of your ''[[dir:ctrl]]/[[config:modopts.ini]]'' file.

===== Configure ===== 

The [[https://gitlab.synchro.net/main/sbbs/-/blob/master/exec/emailval.js|e-mail validation module]] supports the following configuration options in ''[[dir:ctrl]]/[[dir:modopts]]/emailval.ini'' (the default) or the ''[emailval]'' section of the ''[[dir:ctrl]]/[[config:modopts.ini]]'' file:

^ Option ^ Default ^ Description ^
| valid_chars | ''ACDEFHJKLMNPQRTUVWXY23456789!@#$%&*'' | Valid characters to use in generated validation codes |
| code_length | ''16'' | Length of generated validation codes |
| level_before_validation | ''50''  | Security [[access:level]] of unvalidated users |
| level_after_validation | ''60''  | Security [[access:level]] of validated users (optional) |
| flags1_after_validation | //no change// | [[access:Flags]] (from flags set 1) to give, add-to, or remove-from validated users |
| flags2_after_validation | //no change// | " " (from flags set 2) |
| flags3_after_validation | //no change// | " " (from flags set 3) |
| flags4_after_validation | //no change// | " " (from flags set 4) |
| exemptions_after_validation | //no change// | [[access:Exemptions]] to give, add-to, or remove-from validated users |
| restrictions_after_validation | //no change// | [[access:Restrictions]] to give, add-to, or remove-from validated users |
| expiration_after_validation | ''false'' | If ''true'', leave or extend the user account expiration date. If ''false'', set validated users to not expire |
| expiration_days_after_validation | //no change// | If ''expiration_after_validation = true'', the days to extend the user's expiration date, once validated |
| credits_added_after_validation | 0 | Number of credits to award the user after validation |
| minutes_added_after_validation | 0 | Number of minutes to bank for the user after validation |
| prompt                         |   | Override the default prompt |

**Note**:\\
The flags, exemptions, and restrictions ''.ini'' values support 'A' through 'Z' with the optional '+' (add) and '-' (remove) modifiers.\\
e.g. "+A-B" to add the A flag and remove the B flag \\
e.g. "AB" to change the flag set to just "AB" \\

Numeric values are supported for assignment (not modification). \\
e.g. 0 = no flags, 1 = A, 2 = B, 4 = C, 8 = D, etc.

===== Customize =====

If the ''[[dir:text]]/menu/emailval.*'' display file exists, it'll be displayed in place of the default introductory text.

===== See Also =====
  * [[:module:|Modules]]
