getVerificationEmail method

  1. @override
FutureOr<PassedHttpEntity> getVerificationEmail(
  1. RequestHolder request,
  2. ResponseHolder response,
  3. Map<String, dynamic> pathArgs,
  4. String verifyEmailEndpoint,
)
override

Implementation

@override
FutureOr<PassedHttpEntity> getVerificationEmail(
  RequestHolder request,
  ResponseHolder response,
  Map<String, dynamic> pathArgs,
  String verifyEmailEndpoint,
) async {
  return _wrapper(request, response, pathArgs, () async {
    var body = await request.readAsJson();
    var email = body[ModelFields.email];

    if (email is! String) {
      throw RequestBodyError('email can\'t be empty');
    }
    String token = await authService.createVerifyEmailToken(
      email,
      allowNewJwtAfter:
          emailVerificationProvider.allowNewVerificationEmailAfter,
      verifyLinkExpiresAfter:
          emailVerificationProvider.verifyLinkExpiresAfter,
    );

    // JWT
    //     .verify(
    //         token, authService.authDbProvider.app.authSettings.jwtSecretKey)
    //     .payload;
    // here i need to send that email to the user
    EmailService emailService = EmailService(authService.authDbProvider.app);
    Message message = getEmailVerificationMessage(
      mailTo: email,
      from: 'Dart Verse',
      subject: 'Test Email Verification',
    );
    String verificationLink = (verifyEmailEndpoint.endsWith('/')
            ? verifyEmailEndpoint
            : '$verifyEmailEndpoint/') +
        token;

    await emailService.sendFromTemplateFile(
      message,
      'D:/Study And Work/Work/projects/flutter/Dart Mastery/dart_verse/templates/verification.html',
      {
        'name': email,
        'verify_link': verificationLink,
        'sender_name': 'Dart Verse',
      },
    );

    return SendResponse.sendDataToUser(
      response,
      'Email sent successfully',
      dataFieldName: 'msg',
    );
  });
}