- 27
- 130 829
WebMogilevtsev
Russia
เข้าร่วมเมื่อ 22 ต.ค. 2019
Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev
Аутентификация в NestJS
В этом видео мы рассмотрим, как настроить авторизацию на NestJS. Вы узнаете, как реализовать регистрацию с помощью логина и пароля, авторизацию пользователей по этим данным, а также авторизацию через Google и Яндекс. Также покажу как генерировать пару access и refresh токенов, как их хранить и работать с БД при помощи Prisma. Дополнительно разберем защиту роутов, создание своих декораторов, кешиирование данных и другое.
Репозиторий доступен по ссылке t.me/webmogilevtsev/1818
#nestjs #prisma #googleauth #yandexauth #jwt
Google Console Developer console.cloud.google.com/project
Yandex Console Developer oauth.yandex.ru/client/new/id/
Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev
Репозиторий доступен по ссылке t.me/webmogilevtsev/1818
#nestjs #prisma #googleauth #yandexauth #jwt
Google Console Developer console.cloud.google.com/project
Yandex Console Developer oauth.yandex.ru/client/new/id/
Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev
มุมมอง: 24 314
วีดีโอ
Микросервис на NestJS. Урок 15
มุมมอง 1.1Kปีที่แล้ว
Создадим библиотеку для контрактов Применим контракт создания поста к его слушателю Добавим обработку ошибок Подведем итоги Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #rabbit #rabbitmq Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Создание библиотеки для контрактов 13:50 - Описываем контракт создания поста 25:45 ...
Микросервис на NestJS. Урок 14
มุมมอง 847ปีที่แล้ว
Подключение RabbitMQ. Метод создания поста Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #rabbit #rabbitmq Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 Донастройка класса с пагинацией 2:00 Настраиваем RabbitMQ 13:30 Настройка каналов для общения через RabbitMQ 16:45 Метод создания поста 19:30 Регистрируем очередь в к...
Микросервис на NestJS. Урок 13
มุมมอง 455ปีที่แล้ว
Сегодня добавим обработчик ошибок для GraphQL Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #graphql Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Настраиваем формат ошибки в GraphQL 5:45 - Настраиваем глобальный фильтр исключений
Микросервис на NestJS. Урок 12
มุมมอง 470ปีที่แล้ว
Сегодня наполним резолвер оставшимися методами, добавим декоратор для извлечения пользователя, guard для защиты резолвера Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #graphql Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Мутация создания поста 1:50 - Инпут для создания поста 5:15 - Проверяем создание поста 9:30 - ...
Микросервис на NestJS. Урок 11
มุมมอง 551ปีที่แล้ว
Подключаем GraphQl и настраиваем резолвер на получение постов Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #graphql Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Установка зависимостей для GraphQl 2:40 - Настройка подключения к GraphQl 8:35 - Создание резолвера постов 11:00 - Описание ответов query запросов 15:15 -...
TelegramBot на NestJS с ChatGPT на борту
มุมมอง 6Kปีที่แล้ว
Небольшой пример сооздания бота для телеграм на NestjS с подключением ChatGPT. Для работы с телеграм api использовалоась библиотека nestjs-telegraf Для работы с api chatgpt использовал пакет openai Ссылка на репозиторий: github.com/mogilevtsevdmitry/nestjs-telegraf-chatgpt #nestjs #telegram #chatgpt Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Инициализация проекта 2:35 - По...
Микросервис на NestJS. Урок 10
มุมมอง 621ปีที่แล้ว
Сегодня подключим swagger документацию Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #swagger Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Установка зависимостей для swagger 1:15 - Подключение swagger в корневом main.ts 7:30 - Описание контроллера 12:40 - Описание DTO создания поста 14:00 - Описание DTO обновления ...
Микросервис на NestJS. Урок 9
มุมมอง 605ปีที่แล้ว
В этом уроке мы наполним контроллер оставшимися методами. Добавим в агрегат метод для приведения его к нужному виду и протестируем все это дело через Postman Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Получение поста по идентификатору 4:00 - Получение всех постов 7:30...
Микросервис на NestJS. Урок 8
มุมมอง 832ปีที่แล้ว
Сегодня настроим auth модуль, jwt стратегию, public декаратор и guard. Протестируем проверку авторизации через jwt токен и метод создания поста Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Реализация проверки JWT токена 9:50 - Настройка jwt-guard 13:10 - Публичный декар...
Микросервис на NestJS. Урок 7
มุมมอง 1.1Kปีที่แล้ว
В этом уроке создадим контроллер для постов, декоратор для извлечения пользователя из request, правим конфиги для typeorm, проверяем миграции и создание поста Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 1:00 - Создание контроллера 6:50 - Настройка Domains модуля и подключение...
Микросервис на NestJS. Урок 6
มุมมอง 1Kปีที่แล้ว
Сегодня создадим адаптер - класс, который реализует методы нашего репозитория, т.е. будет после взаимодействие с базой данных. Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #typeorm Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev 0:00 - Создаем адаптер. Реализация абстрактного репозитория 2:40 - Реализуем метод сохранения 9:...
Микросервис на NestJS. Урок 5
มุมมอง 1.5Kปีที่แล้ว
В этом видео создадим запросы, пагинацию и настроим фасад Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #cqrs Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev Содержание курса: 0:00 - Фиксация прошлых изменений 0:40 - Создаем запрос на получение одного поста 5:00 - Создаем запрос на получение всех постов 11:00 - Создаем класс...
Микросервис на NestJS. Урок 4
มุมมอง 1.4Kปีที่แล้ว
В этом видео мы создадим фасад, который в будущем будем экспортироваться из модуля постов и позволять работать с ними. Создадим команды для работы с постами через CQRS и зарегистрируем обработчики в модуле постов Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #cqrs Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev Содержание ку...
Микросервис на NestJS. Урок 3
มุมมอง 1.6Kปีที่แล้ว
Сегодня создадим глобальный обработчик ошибок и напишем абстрактный класс с методами по управлению постами в БД Полный курс доступен по ссылке boosty.to/webmogilevtsev/posts/674fb1a6-206c-4338-835b-0d23ae965deb #nestjs #exceptions #repository #abstract Присоединяйтесь к группе в телеграмме t.me/webmogilevtsev Содержание видео: 0:00 - Фиксируем предыдущие изменения 0:20 - Инициализируем shared б...
Full-stack приложение. Angular GraphQL Docker. Часть 2. Frontend
มุมมอง 3.9K2 ปีที่แล้ว
Full-stack приложение. Angular GraphQL Docker. Часть 2. Frontend
Full-stack приложение. NestJS TypeORM PostgreSQL GraphQL Docker. Часть 1. Backend
มุมมอง 29K3 ปีที่แล้ว
Full-stack приложение. NestJS TypeORM PostgreSQL GraphQL Docker. Часть 1. Backend
5:00 В схеме User роль не должна быть массивом, роль может быть только одна. Создается базовый класс пользователя, а админ расширяет этот класс со своими привилегиями, также и менеджеры со своими, и супер админы со своими, и кто угодно.
Прям такая расслабляться атмосфер) Приятно смотреть. Для новичков не очень понятно, но для тех, кто уже имеет некую "базу" это просто находка
А почему сущности находятся не в src рядом с папкой постов? Типо чтобы другой микросервис который будет рядом лежать тоже мог ей пользоваться?
Довольно неприятно осознавать, что в 2023 году код остается на таком низком уровне. Вместо того чтобы усложнять задачу с использованием process.cwd, можно было просто сделать экспорт, используя возможности ES6. Почему не уделить время на изучение документации TypeOrm и выкладывать на GitHub качественные решения? Хотелось бы объяснить матом какой же автор животное, но ютуб такое не пропускает)
@@Guru99442 ну коль ду дохуя умный, запиши свое видео, с правильным кодом
@@webmogilevtsev3177 И запишу, как только выложу тебе первым напишу, зай)
@webmogilev а нет Angular части для этой чудесной auth?
Как называется тема vscode?
как называется тема vscode'а?
В чем отличие от сессий если мы храним токены в бд?
Очень познавательно. Спасибо.
Крутой!
к слову о том, почему нельзя использовать "as" и "any"
Огромное спасибо за урок! Смотрел и повторял недели две. Получил много полезного опыта. С нетерпением жду Ваших новых видеоуроков.
1:03:38
С😀пасибо! Все по полочкам
Все верно! Хреновый контент на коленке. Убил 40 минут времени чтобы в этом говнокоде разобраться а в следующем видео уже разбираются (((((
чего
Поставил плюс за старания, качество видео и за ссылку на репозиторий, но немного критики. Во-первых, непонятна целевая аудитория ролика. Новички? Тогда почему автор почти ничего не объясняет, для чего он делает то и сё? Опытные разрабы? Так они уже всё это знают и смотреть вряд ли будут. Средние, типа меня? Много спорного на мой взгляд, что можно было бы сделать по-другому или проще, не усложнять. Во вторых, неплохо было бы разбить видео на таймкоды, чтобы была ясная последовательность действий.
воды 90%
спасибо за полезный контент
Ты хорош, но буква а🥶🥶🥶
Для крупного проекта хранить рефреш токен в куках - мертвое дело. С репликацией вся эта схема работать не будет. Да и смысл вообще, если уж скрипт внедрился на фронт, то он и с кукой этой запрос кинет без проблем не обращаясь к ней
А где лучше хранить рефреш токен и access token тоже
так рял в локалсторадже хранить?
Как с типом bytea работать?
может кто поможет, нужно написать скрипт который будет создавать админа в бд, как можно реализовать?
Отличные видео по микросервисам в целом. И узнал новые паттерны , такие как facade , adapter. Благодарю за знания
Спасибо вам большое
В class-validator есть @IsDateString()
gde novie Vidosi? :D sdelai kurs xotiabi, kupim
Чтобы ошибки не было в контроллере, нужно у функций фасада при вызове шин добавить обвертку к второму дженерику, пример: this.queryBus.execute<GetPostQuery, Awaited<ReturnType<GetPostQueryHandler['execute']>>>(new GetPostQuery(id));
Хорошее видео. Лайк поставил. Давненько видео не снимал.
Сервис токена занимает большую часть модуля AUTH, насколько ему уместно быть в AUTH, а не в своем собственном модуле TOKEN и инжектиться в другие модули ?
Можно, чтобы декомпозировать )
Привет! Если не трудно, можешь скинуть какую нибудь доку по декораторам nestjs-telegraf ?
Я такую не знаю)
20:30 commands = { createPost: (post: CreatePostDto) => this.... }; не проще ли сделать просто запись commands = { createPost: this.createPost };
@WebMogilevtsev Привет! Классное объяснение. Подписан на тебя давно, но что-то не смотрел. Буду следить. Пиши больше!
очень угарнул с фразы ) если фронту это надо , то пусть обрабатывает это на фронте ))
я бы предложил не использовать any, а написать private _response(status: number, request: Request, exception: unknown) {
00:00 - Начало 01:38 - Добавление prisma, база данных 08:54 - Работа с пользователем 25:27 - Работа с аутентификацией
команда \dt не сработала, только после прописывание всех характеристик этой командой psql -U root_auth -d db_auth - перешел именно к конкретной базе данны, а потом уже вводил \dt как в видео чтобы получилось увидеть List of relations. Ну возможно я что-то сделал не так как на видео т.к. версия pg: 15, dpage/pgadmin4:6
а почему токены храним в postgres ? вроде правильнее их хранить в redis ?
'prettier/prettier': [ 'error', { endOfLine: 'auto', }, ], а что дает добавление этого кода? что с ним что без него я разницы не заметил
убирает ошибку ESLint, а именно "delete `␍`eslintprettier/prettier"
А для чего нам 2 докера? Нужен ли второй докер который внутри призмы, он туда случайно попал? Имею ввиду тот что в папке prisma
Неа, здесь вообще докерфайл не нужен, потому что ведется только разработка (dev) и всё устанавливается через yarn. Нужен только docker-compose для удобного доступа к postgres и pgadmin. Докерфайл нужен если есть разные окуржения- одно для разработки, другое для тестирования, третье для продакшена. На фига? Чтобы не установить лишние библиотеки, для nodejs это очень болезненная тема. К примеру в продакшене уже не нужен jest и куча тайпскриптовых d.ts файлов. Сейча принято создавать один докер-файл и прописывать в нём мульти-этапные сборки. Видели наверное, в докер-файле бывает напихано: FROM node AS build потом ниже FROM node AS production и тд . Multi-staged build dockerfile по-научному
Отличный урок. Есть ли возможность сделать урок с Аутентификаций nest+graphql ?
Что то я не понял как на фронте происходит логин, и получение данных юзера для фронта
Подскажите, запросы к API openai отправляет сам Telegram или Nest? Или по другому спрошу, если этот код будет лежать на сервере в России, будет работать?
Да, будет) запросы шлёт nestjs, а точнее axios под капотом, но не суть, api openai работает в РФ, можно через постман проверить
@@webmogilevtsev3177 Уже не работает, вчера проверял. Без VPN их API 403 код возвращает в РФ.
На самом деле супер офигенный видос по Nest. Для меня, как для новичка, получился видос не просто по аутентификации, а по самому фреймворку. Очень много нового узнал
Такое ощущение что при печати ты прыгаешь на старой пружинной кровати, так клавиатура пружинами брянчит, без обид ). А контент интересный, тебе бы компуктер помощнее чтоб не лагало и нормальную клавиатуру🤘Сорян за некропостинг.
ну звук блін паршивий нужен новий микрофон
Уже новый
Отличный курс. Очень насыщенный! Спасибо!
Обьясните пожалуста кокой принцип работы после деплоя, сами данные бд получается лежат теперь удаленно? они вместе докер-контейнером улетели туда? и дальнейшие взаимодествия через новый апи осуществляется через этот апи к удаленной базе? или это только сам проект задеплоен а база данных это та что локально на пк в постгресе?
Спасибо за курс) хотел уточнить почему у вас все в libs ? Это какой-то архитектурный стиль?
Рассматриваю домены как библиотеку, которую подключаю в приложении и прокидываю реализацию) по аналогии как подключаем модуль для работы с БД и прикидываем в него конфигурацию)
@@webmogilevtsev3177 спасибо
Зачем нужен декоратор @Public() для общедоступных эндпоинтов? Они и так доступны.
Когда глобально висит гуард - они недоступны
@@webmogilevtsev3177 точно, понял. Спасибо! Отличный материал!
Привет, спасибо за гайд, по докам мало понятного. У меня вопрос: как мне можно отправить сообщение юзеру по его юзернейму? У телеграфа нашел метод sendMessage, но не знаю как получить доступ к инстансу Telegraf