NodeREDGuidUKR

ДОВІДНИК З NODE-RED українською мовою

До збірника задач

Перевірка символьної адреси електронної пошти та паролю на коректність

Автор: Олександр Пупена

Частина програми взята з прикладу Ubostech Налаштування авторизаційного темплейту

Завдання

Написати фрагмент програми на Node-RED, який перевіряє коректність символьної адреси електронної пошти та паролю, які передаються в корисному навантаженні (msg.payload.email і msg.payload.password ) та перенаправляє потік в залежності від результату:

Поштова адреса повинна складатися з трьох частин:

Необхідно перевірити рядок з паролем, який має відповідати наступним вимогам:

Рішення 1

У даному рішенні використовуються регулярні вирази, які слугують для перевірки наявності та відсутності символів в рядках, про які можна почитати за цим посиланням

Означення регулярних виразів

Для перевірки коректності адреси пошти використовується наступний регулярний вираз:

^([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$

Для перевірки коректності паролю наступні:

(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{}|;':",./<>?])(?!.*\s).{8,}

Дані регулярні вирази пояснюються в прикладах за посиланням

Реалізація в Node-RED

Для реалізації можна скористатися вузлом function з трьом виходами.

image-20230507184633149

Код функції:

const regexEmail = /^([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
const regexPassword = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{}|;':",./<>?])(?!.*\s).{8,}/;
const email = msg.payload.email.toLowerCase();

if (!regexEmail.test(email)) {
    msg.payload.cheresult = "Некоректна пошта";
    return [null, msg, null];
} else if (!regexPassword.test(msg.payload.password)) {
    msg.payload.cheresult = "Некоректно заданий пароль";    
    return [null, null, msg];
} else {
    msg.payload.cheresult = "Пароль і пошта коректні";  
    return [msg, null, null];
}

Для перевірки можна використати три варіанти msg.payload:

{
    "email": "user@mail.net",
    "password": "Passw0rd_correct"
}
{
    "email": "user@mail",
    "password": "Passw0rd_correct"
}
{
    "email": "user@mail.ne",
    "password": "Passw0rdincorrect"