Ну смотри, я думаю совет, посмотреть в ютубе тебя не интересует, но вкратце вот алгоритм:
Регистрация:
1) Фронт отправляет на бэк POST запрос с данными, которые ввел юзер.
2) Бык выносит данные пользователя в отдельную переменную(к примеру user), т.к. нужно будет с этими данными в будущем работать и желательно это делать в отдельной переменной.
3) Бэк проверяет данные на валидность, например, что нет не нужных символов в пароле, или что почта валидная
4) Бэк с помощью bcryptjs шифрует пароль юзера и заменяет то, что ввёл юзер, на то, что выдаёт модуль bcryptjs (помните, что меняем только данные в созданной переменной (к примеру user), а не данные, которые которые прилетели POST запросом)
5) Бэк генерирует accessToken и сохраняет в нашу переменную с данными юзера (к примеру user) (можно тот-же bcryptjs для этого конечно юзать, но в будущем советую поискать что-то ещё)
6) Бэк отправляет запрос на монго, чтобы сохранить юзера в базе данных
7) Бэк отправляет на фронт accessToken юзера, который нужно сохранить в куки
Теперь, что касается получения данных:
1) Фронт отправляет на бэк GET запрос получения данных юзера. При этом отправляя куки, которые мы сохранили ранее
2) Бэк отправляет запрос в монгу, на поиск юзера по accessToken в базе данных
3) Бэк возвращает на фронт данные юзера полученные из монги
4) Фронт эти данные показывает юзеру
Что касается авторизации:
1) Фронт отправляет POST запрос на бэк с введёнными юзером email и паролем.
2) Бэк отправляет запрос в монгу, на поиск юзера по email
3) Бэк с помощью bcryptjs.compareSync()
проверяет совпадают ли пароль полученные из базы данных с тем, что ввёл юзер
4) Бэк возвращает на фронт accessToken юзера, который нужно сохранить в куки
Несколько замечаний:
1) email должен быть уникальным, двух юзеров с одним email быть не должно, поэтому если вы используете mongoose - укажите "unique: true" в схеме юзера
Пример:
const userSchema = new Schema({
email: {
type: String,
unique: true,
}
});
2) mongoose вам очень поможет во взаимодействии с MongoDB
Вопросы есть?