@kiberlain

Как можно проще сделать проверку авторизации?

import React from "react"
function App() {

    let email = ''
    let password = ''
    let alertMessage = ''
    let errors

    const validateForm = () => {
        errors = {}
        let emailSpaces = email.indexOf(' ')
        let passwordSpaces = password.indexOf(' ')

        if (emailSpaces > 0) {
            errors.emailSpaces = 'в поле email пробелы!'
        }
        if (passwordSpaces > 0) {
            errors.passwordSpaces = 'в пароле пробелы!'
        }

        if (!email.length){
            errors.email = 'email не заполнен'
        }
        if (!password.length){
            errors.password = 'пароль не заполнен'
        }
        if(!Object.keys(errors).length){
            console.log({ email, password })
            return true
        }else{
            alertMessage = Object.values(errors)
            alert(alertMessage)
            return false
        }
    }

    const clearForm = () => {
        email = ''
        password = ''
        alert('Поля очищены')
    }

    const detectChangeForm = (event) => {
        switch (event.target.name) {
            case 'email':
                email = event.target.value
                break;
            case 'password':
                password = event.target.value
                break;
            default:
                return false
        }
        validateForm(email, password)
    }

    // я не понял как блокировать автоматическое обновление страницы при submit

    const handleSubmit = () => {
        if(!Object.keys(errors).length){
            console.log({ email, password })
            return true
        }else{
            alertMessage = Object.values(errors)
            alert(alertMessage)
            return false
        }
    }

    return (
        <div style={{padding: 'var(--size-8)'}}>
            <form>
                <input type="email" placeholder={'E-Mail'} name="email" onChange={detectChangeForm} />
                <input type="password" placeholder={'Пароль'} name="password"  onChange={detectChangeForm} />
                <button type="submit" onClick={handleSubmit}>Войти</button>
            </form>
        </div>
    )
}
export default App
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
zkrvndm
@zkrvndm
Архитектор решений
Валидацию желательно делать на стороне сервера. Все эти сообщения о том, что почта или пароль кривые должен выдавать сервер. Потому что скрипты на стороне браузера можно обмануть и отправить вам на сервер абракадабру, которую тот успешно сожрет и подавится, так как валидации на стороне сервера у вас внезапно нет.
Ответ написан
@Scoo909010
Проверку на наличие пробелов вообще не нужно проводить, потому что у строки есть метод trim() который убирает все пробелы и лучше его использовать. Мне кажется, что с точки зрения пользовательского опыта это лучше, потому что часто случайно сам ставишь пробелы, и очень раздражает их вручную убирать.

Блокировать автоматическую перезагрузку страницы можно через https://developer.mozilla.org/ru/docs/Web/API/Even...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы