mirror of
https://github.com/ershisan99/flashcards-api.git
synced 2025-12-16 12:33:17 +00:00
add html to signup endpoint
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { IsEmail, IsOptional, Length } from 'class-validator'
|
||||
import { ApiProperty } from '@nestjs/swagger'
|
||||
import { IsBoolean, IsEmail, IsOptional, IsString, Length } from 'class-validator'
|
||||
|
||||
export class RegistrationDto {
|
||||
@Length(3, 30)
|
||||
@@ -10,4 +11,24 @@ export class RegistrationDto {
|
||||
|
||||
@IsEmail()
|
||||
email: string
|
||||
|
||||
@ApiProperty({
|
||||
description: `HTML template to be sent in the email;\n ##name## will be replaced with the user's name; \n ##token## will be replaced with the password recovery token`,
|
||||
example: `<b>Hello, ##name##!</b><br/>Please confirm your email by clicking on the link below:<br/><a href="http://localhost:3000/confirm-email/##token##">Confirm email</a>. If it doesn't work, copy and paste the following link in your browser:<br/>http://localhost:3000/confirm-email/##token##`,
|
||||
})
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
html?: string
|
||||
|
||||
/** Email subject */
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
subject?: string
|
||||
/** Whether to send a confirmation email or not.
|
||||
* Defaults to false
|
||||
* @example false
|
||||
*/
|
||||
@IsOptional()
|
||||
@IsBoolean()
|
||||
sendConfirmationEmail?: boolean
|
||||
}
|
||||
|
||||
@@ -35,10 +35,19 @@ export class CreateUserHandler implements ICommandHandler<CreateUserCommand> {
|
||||
if (!createdUser) {
|
||||
return null
|
||||
}
|
||||
if (!command.user.sendConfirmationEmail) {
|
||||
return {
|
||||
id: createdUser.id,
|
||||
name: createdUser.name,
|
||||
email: createdUser.email,
|
||||
}
|
||||
}
|
||||
await this.usersService.sendConfirmationEmail({
|
||||
email: createdUser.email,
|
||||
name: createdUser.name,
|
||||
verificationToken: verificationToken,
|
||||
html: command.user.html,
|
||||
subject: command.user.subject,
|
||||
})
|
||||
|
||||
return {
|
||||
|
||||
@@ -3,8 +3,11 @@ import { Length, Matches } from 'class-validator'
|
||||
export class CreateUserDto {
|
||||
@Length(3, 10)
|
||||
name: string
|
||||
|
||||
@Length(6, 20)
|
||||
password: string
|
||||
|
||||
/** User's email address */
|
||||
@Matches(/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/)
|
||||
email: string
|
||||
}
|
||||
|
||||
@@ -32,18 +32,23 @@ export class UsersService {
|
||||
email,
|
||||
name,
|
||||
verificationToken,
|
||||
html = `<b>Hello, ##name##!</b><br/>Please confirm your email by clicking on the link below:<br/><a href="http://localhost:3000/confirm-email/##token##">Confirm email</a>. If it doesn't work, copy and paste the following link in your browser:<br/>http://localhost:3000/confirm-email/##token##`,
|
||||
subject = 'E-mail confirmation',
|
||||
}: {
|
||||
email: string
|
||||
name: string
|
||||
verificationToken: string
|
||||
html?: string
|
||||
subject?: string
|
||||
}) {
|
||||
const htmlFinal = html.replace('##token##', verificationToken)?.replace('##name##', name)
|
||||
|
||||
try {
|
||||
await this.emailService.sendMail({
|
||||
from: 'andrii <andrii@andrii.es>',
|
||||
to: email,
|
||||
text: 'hello and welcome, token is: ' + verificationToken,
|
||||
html: `<b>Hello ${name}!</b><br/>Please confirm your email by clicking on the link below:<br/><a href="http://localhost:3000/confirm-email/${verificationToken}">Confirm email</a>`,
|
||||
subject: 'E-mail confirmation',
|
||||
html: htmlFinal,
|
||||
subject,
|
||||
})
|
||||
} catch (e) {
|
||||
this.logger.error(e?.message || e)
|
||||
|
||||
Reference in New Issue
Block a user