Account improvements
Closes #139
The following features are added/improved:
- added IEmailService and implemented sending emails via AWS SES
- added EmailVerified flag for account
- added CleanupService to delete non-verified accounts and all of their related data
- added RateLimitService to time-limit users from using actions that send emails
- preventing users from registering accounts on free temporary email services
- sending verification link when a new account is registered
- sending verification link when the email is changed for an account
- added ability to reset password for an account
- added indicators on Player Card that the email is not verified
Warning: Upon deployment to production, CleanupService will delete all accounts that didn't login for the past 1 month. This logic should be revised.
Steps to do before deployment:
- request production access for AWS SES
- generate production AWS AccessKey and SecretKey and inject the values into UT4MasterServer's appsettings
This pull request has conflicts, please resolve those before we can evaluate the pull request.
Conflicts have been resolved.
Since this PR is named Account improvements we should also add Account.LastUsernameChangeAt in order to limit the frequency of username changes. First change would be allowed whenever. Then each subsequent change would be allowed after 6 months.
Regarding the warning...
Upon deployment to production, CleanupService will delete all accounts that didn't login for the past 1 month. This logic should be revised.
We should probably just add a static hardcoded DateTime check whether some date has passed and only activate deletion after that date. Before that date we would notify everyone on discord & send email to every existing account (with real email).