Запрос сброса пароля для электронной почты с использованием Swift Parse Server и AWS SES - PullRequest
0 голосов
/ 12 декабря 2018

Я получил AWS SES для работы с сервером Parse, используя

$ npm install parse-server-amazon-ses-email-adapter --save

После изменения server.js и настройки verifyUserEmails: true, я смог получить отсылку писем с подтверждением пользователя и щелчок, установив его в true,

Затем я добавил свой swift-код для сброса пароля и был воодушевлен тем, что когда я вводил электронное письмо, которое не было пользователем, оно знало и возвращало ошибку.Когда я указываю действительного пользователя без ошибок, но и без электронной почты ...

PFUser.requestPasswordResetForEmail(inBackground: userName.text!) { (success: Bool, error: Error?) in
    if success {
        let alert = UIAlertController(title: "Success", message: "Please check your email and follow the instructions", preferredStyle: UIAlertControllerStyle.alert)
        let ok = UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: { (UIAlertAction) in
            self.dismiss(animated: true, completion: nil)
        })
        alert.addAction(ok)

        self.present(alert, animated: true, completion: nil)
    }
    else {
        print(error?.localizedDescription ?? "")
    }
}

Возможно, мне не хватает чего-то, что мне нужно добавить в server.js?У меня есть HTML и текстовый шаблон в правильном месте, как для проверки пользователя.Я искал в интернете, думая, что может быть что-то вроде параметра verifyUserEmails, но я не могу понять, что включает эту функциональность.Кто-нибудь может помочь?Если я не смогу заставить это работать, мне придется начинать все сначала с почтового пистолета.

Это мой server.js для справки:

var api = new ParseServer({
    databaseURI: process.env.MONGODB_URI,
    cloud: "./node_modules/parse-server/lib/cloud-code/Parse.Cloud.js",
    appId: "c4f3ec***************",
    masterKey: process.env.MASTER_KEY,
    publicServerURL: process.env.SERVER_URL,
    verifyUserEmails: true,
    appName: process.env.APPNAME,
    emailVerifyTokenValidityDuration: 2 * 60 * 60, // in seconds (2 hours = 7200 seconds)
    filesAdapter: {
        "module": "@parse/s3-files-adapter",
        "options": {
            "bucket": process.env.S3_BUCKET,
        }
    },
    emailAdapter: new AWSEmailAdapter({
        // The address that your emails come from
        fromAddress: process.env.EMAIL_FROM_ADDRESS,
        accessKeyId: process.env.AWS_ACCESS_KEY_ID,
        secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
        region: 'us-east-1',
        // The template section
        templates: {
            passwordResetEmail: {
                subject: 'Reset your password',
                pathPlainText: resolve(__dirname, './email_templates/password_reset_email.txt'),
                pathHtml: resolve(__dirname, './email_templates/password_reset_email.html'),
                callback: (user) => {
                    return {
                        firstName: user.get('firstName')
                    }
                }
                // Now you can use {{firstName}} in your templates
            },
            verificationEmail: {
                subject: 'Confirm your account',
                pathPlainText: resolve(__dirname, './templates/verification_email.txt'),
                pathHtml: resolve(__dirname, './templates/verification_email.html'),
                callback: (user) => {
                    return {
                        firstName: user.get('firstName')
                    }
                }
                // Now you can use {{firstName}} in your templates
            },
        }
    }),
    serverURL: process.env.SERVER_URL
});

1 Ответ

0 голосов
/ 21 декабря 2018

О боже, я подумал просто удалить этот вопрос, потому что решение было таким неловким, но решил, что просто отвечу на него здесь, если у кого-то еще есть подобный вопрос и мой фрагмент кода (и ошибка) будет поучительным.

В файле server.js, который я включил выше, все было настроено правильно по большей части.Причина, по которой письма с подтверждением отправлялись, а паролей сброса не было, заключалась в том, что я изменил путь к шаблонам электронной почты и указал только правильный при проверке (./templates vs ./email_templates).Короче говоря, я исправил этот путь, сохранил изменения в server.js, а затем запустил pm2 restart 0 для перезапуска сервера и вуаля, пароли сбрасываются!

...