From d9eaee3939bf2e93e5d775d32bce77842201faba Mon Sep 17 00:00:00 2001 From: Josh Morel Date: Fri, 31 Aug 2018 03:18:19 -0400 Subject: add user account email verificiation (#977) * add user account email verificiation includes server and client code to: * enable verificationRequired via custom config * send verification email with registration * ask for verification email * verify via email * prevent login if not verified and required * conditional client links to ask for new verification email * allow login for verified=null these are users created when verification not required should still be able to login when verification is enabled * refactor email verifcation pr * change naming from verified to emailVerified * change naming from askVerifyEmail to askSendVerifyEmail * undo unrelated automatic prettier formatting on api/config * use redirectService for home * remove redundant success notification on email verified * revert test.yaml smpt host --- server/models/account/user.ts | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'server/models') diff --git a/server/models/account/user.ts b/server/models/account/user.ts index bae683b12..89265774b 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts @@ -24,6 +24,7 @@ import { isUserBlockedReasonValid, isUserBlockedValid, isUserNSFWPolicyValid, + isUserEmailVerifiedValid, isUserPasswordValid, isUserRoleValid, isUserUsernameValid, @@ -92,6 +93,12 @@ export class UserModel extends Model { @Column(DataType.STRING(400)) email: string + @AllowNull(true) + @Default(null) + @Is('UserEmailVerified', value => throwIfNotValid(value, isUserEmailVerifiedValid, 'email verified boolean')) + @Column + emailVerified: boolean + @AllowNull(false) @Is('UserNSFWPolicy', value => throwIfNotValid(value, isUserNSFWPolicyValid, 'NSFW policy')) @Column(DataType.ENUM(values(NSFW_POLICY_TYPES))) @@ -304,6 +311,7 @@ export class UserModel extends Model { id: this.id, username: this.username, email: this.email, + emailVerified: this.emailVerified, nsfwPolicy: this.nsfwPolicy, autoPlayVideo: this.autoPlayVideo, role: this.role, -- cgit v1.2.3