برنامه نویسی

چگونه می توانم به طور خودکار به صفحه ای که در یک پیوند در یک ایمیل مشخص شده است، هنگامی که کاربر به طور خودکار وارد می شود، حرکت کنم؟

Summarize this content to 400 words in Persian Lang
در اینجا به تفکیک کد و نحوه کار آن می پردازیم:

عملکرد ارسال ایمیل

async sendingEmail(email, ndfCollabName, message, numero, intitulé, Url) {
const transporter = nodemailer.createTransport({
host: ‘smtp.office365.com’,
port: 587,
secure: false,
auth: {
user: process.env.USER_EMAIL,
pass: process.env.USER_PASS,
},
});
const mailOptions = {
from: ‘fromEmail@t2s.group’,
to: email,
subject: ”,
html: `

test

${message}, N° ${numero}, ${intitulé}.

Vérifiez ici👻

`,
};
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
} else {
console.log(‘Email sent:’ + info.response);
}
});
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح:

راه اندازی حمل و نقل:

Nodemailer را برای ارسال ایمیل با استفاده از Office365 SMTP پیکربندی می کند.گزینه های ایمیل:

ایمیل را با موضوع و متن HTML تنظیم می کند، از جمله پیوندهایی با پارامتر جستجوی تغییر مسیر.رمزگذاری URL:

از encodeURIcomponent برای رمزگذاری ایمن URL برای درج در پیوندهای ایمیل استفاده می کند.ارسال نامه:

ایمیل را با استفاده از transporter.sendMail ارسال می کند.`@post('ورود به سیستم')ورود غیر همگام (شناسه @Body('id'): رشته،رمز عبور @Body('password'): رشته،@Body('company') شرکت: شرکت،@Body('redirect') redirect: string,@Res({ passthrough: true }) پاسخ: پاسخ،) {const user = await this.collaborateursService.find({کجا: { nomtechnicien: id }،روابط: [‘companies’,’roles.role’,’roles.company’,’groups’,’groupe’,]،})؛

اگر (! کاربر) {پرتاب جدید BadRequestException('معتبر نامعتبر');}if (!( منتظر bcrypt.compare(password, user.password))) {پرتاب جدید BadRequestException('معتبر نامعتبر');}if (!user.lastconnectedcompany) {await this.collaborateursService.lastConnectedCompany(user.id، user.companies[0])}

const jwt = await this.jwtService.signAsync({شناسه: user.id،نام: user.nomtechnicien،lastconnectedcompany: user.lastconnectedcompany || user.companies[0].نام،rolesByCompanies: user.rolesByCompanies،گروه ها: user.groups!،شرکت: user.companies,companyId: user.companies.filter((شرکت) =>user.lastconnectedcompany? company.name == user.lastconnectedcompany: company.name == user.companies[0].نام،)[0].identifantBc،})؛answer.cookie('jwt', jwt, { httpOnly: true });حذف user.password;بازگشت {پیام: “موفقیت”،کاربر،تغییر مسیر: تغییر مسیر ? رمزگشاییURIcomponent(redirect): null،};}`یافتن کاربر:

کاربر را با شناسه بازیابی می کند و اعتبار را بررسی می کند.تولید JWT:

یک توکن JWT ایجاد می کند و آن را به عنوان یک کوکی تنظیم می کند.رمزگشایی URL تغییر مسیر:

پارامتر تغییر مسیر را از بدنه درخواست رمزگشایی می کند.پاسخ بازگشت:

یک پیام موفقیت آمیز و URL تغییر مسیر رمزگشایی شده را برمی گرداند.فرانت اند ارسال`const submit = async () => {setIsLoading(true);امتحان کن {const res = await empLogin({ id: id, password: pass, redirect: redirectUrl });console.log(res);if (res.message === “موفقیت”) {ارسال (ورود به سیستم ());[ // Navigate to the redirect URL provided in the response](

[- url](

url ) ) navigate(res.redirect); } } catch (خطا) { console.log(error); setError(true); } در نهایت { setIsLoading(false); } } ` ثبت ورود:

درخواست ورود با شناسه، رمز عبور و URL تغییر مسیر را ارسال می کند.پاسخ دسته:

اگر ورود موفقیت آمیز بود، به URL ارائه شده در قسمت تغییر مسیر پاسخ هدایت می شود.رسیدگی به خطا:

هر گونه خطا را در طول فرآیند دریافت و ثبت می کند.این تنظیمات تضمین می کند که وقتی کاربر وارد سیستم می شود، به طور خودکار به URL مشخص شده در پیوند ایمیل هدایت می شود.

در اینجا به تفکیک کد و نحوه کار آن می پردازیم:

عملکرد ارسال ایمیل

async sendingEmail(email, ndfCollabName, message, numero, intitulé, Url) {
    const transporter = nodemailer.createTransport({
        host: 'smtp.office365.com',
        port: 587,
        secure: false,
        auth: {
            user: process.env.USER_EMAIL,
            pass: process.env.USER_PASS,
        },
    });
    const mailOptions = {
        from: 'fromEmail@t2s.group',
        to: email,
        subject: '',
        html: `
        
        
        
            
            
            test
            
        
        
            
            

${message}, N° ${numero}, ${intitulé}.

Vérifiez ici👻

`, }; transporter.sendMail(mailOptions, function (error, info) { if (error) { console.log(error); } else { console.log('Email sent:' + info.response); } }); }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح:

راه اندازی حمل و نقل:

Nodemailer را برای ارسال ایمیل با استفاده از Office365 SMTP پیکربندی می کند.
گزینه های ایمیل:

ایمیل را با موضوع و متن HTML تنظیم می کند، از جمله پیوندهایی با پارامتر جستجوی تغییر مسیر.
رمزگذاری URL:

از encodeURIcomponent برای رمزگذاری ایمن URL برای درج در پیوندهای ایمیل استفاده می کند.
ارسال نامه:

ایمیل را با استفاده از transporter.sendMail ارسال می کند.
`@post('ورود به سیستم')
ورود غیر همگام (
شناسه @Body('id'): رشته،
رمز عبور @Body('password'): رشته،
@Body('company') شرکت: شرکت،
@Body('redirect') redirect: string,
@Res({ passthrough: true }) پاسخ: پاسخ،
) {
const user = await this.collaborateursService.find({
کجا: { nomtechnicien: id }،
روابط: [
‘companies’,
‘roles.role’,
‘roles.company’,
‘groups’,
‘groupe’,

})؛

اگر (! کاربر) {
پرتاب جدید BadRequestException('معتبر نامعتبر');
}
if (!( منتظر bcrypt.compare(password, user.password))) {
پرتاب جدید BadRequestException('معتبر نامعتبر');
}
if (!user.lastconnectedcompany) {
await this.collaborateursService.lastConnectedCompany(user.id، user.companies[0])
}

const jwt = await this.jwtService.signAsync({
شناسه: user.id،
نام: user.nomtechnicien،
lastconnectedcompany: user.lastconnectedcompany || user.companies[0].نام،
rolesByCompanies: user.rolesByCompanies،
گروه ها: user.groups!،
شرکت: user.companies,
companyId: user.companies.filter((شرکت) =>
user.lastconnectedcompany
? company.name == user.lastconnectedcompany
: company.name == user.companies[0].نام،
)[0].identifantBc،
})؛
answer.cookie('jwt', jwt, { httpOnly: true });
حذف user.password;
بازگشت {
پیام: “موفقیت”،
کاربر،
تغییر مسیر: تغییر مسیر ? رمزگشاییURIcomponent(redirect): null،
};
}
`
یافتن کاربر:

کاربر را با شناسه بازیابی می کند و اعتبار را بررسی می کند.
تولید JWT:

یک توکن JWT ایجاد می کند و آن را به عنوان یک کوکی تنظیم می کند.
رمزگشایی URL تغییر مسیر:

پارامتر تغییر مسیر را از بدنه درخواست رمزگشایی می کند.
پاسخ بازگشت:

یک پیام موفقیت آمیز و URL تغییر مسیر رمزگشایی شده را برمی گرداند.
فرانت اند ارسال
`const submit = async () => {
setIsLoading(true);
امتحان کن {
const res = await empLogin({ id: id, password: pass, redirect: redirectUrl });
console.log(res);
if (res.message === “موفقیت”) {
ارسال (ورود به سیستم ());
[ // Navigate to the redirect URL provided in the response
](

[- url](

  1. url ) ) navigate(res.redirect); } } catch (خطا) { console.log(error); setError(true); } در نهایت { setIsLoading(false); } } ` ثبت ورود:

درخواست ورود با شناسه، رمز عبور و URL تغییر مسیر را ارسال می کند.
پاسخ دسته:

اگر ورود موفقیت آمیز بود، به URL ارائه شده در قسمت تغییر مسیر پاسخ هدایت می شود.
رسیدگی به خطا:

هر گونه خطا را در طول فرآیند دریافت و ثبت می کند.
این تنظیمات تضمین می کند که وقتی کاربر وارد سیستم می شود، به طور خودکار به URL مشخص شده در پیوند ایمیل هدایت می شود.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا