Рубрики
Uncategorized

Разработайте интеграцию и Sendgrid в Rails 6

Devise — это гибкая система аутентификации, поддерживаемой в рельсах. Аутентификация SY … Теги с рельсами, дежоптом, рубиновыми.

Devise — это гибкая система аутентификации, поддерживаемой в рельсах. Система аутентификации в основном состоит из трех функций I.E. Регистрация, вход и выйти. Кроме того, в регистрации пароль должен быть хешированным паролем, а не обычной строкой, а ссылка подтверждения должна быть отправлена в зарегистрированном идентификаторе электронной почты для аутентификации пользователя. Во входе в систему, функциональность забывающего пароль должна быть там для восстановления пароля, и помните, что функциональные возможности должны быть там для сохранения учетных данных пользователя в файлах файлов браузера для обеспечения автоматически заполненных учетных данных.

Вместо того, чтобы кодировать все эти функциональные возможности с нуля, используйте разрабатывание. Он предварительно оснащен всеми этими функциональными возможностями, и все это может быть достигнуто, просто устанавливая разработку GEM. Разработайте широко использоваться так много функциональных возможностей, которые могут быть настроены, но в этой статье я напишу только о аутентификации зарегистрированного пользователя через проверку. После регистрации проверяющая ссылка должна быть отправлена на зарегистрированный идентификатор электронной почты пользователя при нажатии на него, пользователь может проверить себя.

Как это добиться?

Ну, мы знаем, что все эти операции по электронной почте выполняются сервером SMTP (простой протокол передачи почты). Однако для настройки SMTP-сервера для новичка довольно отрывов. Вместо этого мы можем использовать SendGrid. SENDGRID — это поставщик SMTP-облачного SMTP, который позволяет отправлять электронную почту без необходимости поддерживать серверы электронной почты. Sendgrid управляет всеми техническими деталями и оставила вас только пожинающим преимуществам чужих усилий.

Давайте код ЭТО

Во-первых, давайте включите разработку GEM и BUNDLE Установите его в нашу драгоценность.

gem 'devise'

После установки Bundle. Вам нужно запустить генератор:

rails generate devise:install

Генератор установит инициализатор, который описывает все параметры конфигурации Devise. По умолчанию нет просмотров и моделей. Вы должны создать их. Давайте теперь генерируем модель Пользователь

Рельсы генерируют Devise User

Вы также можете генерировать соответствующий разрабатывающий представления.

rails generate devise:views users

Вы можете найти файл миграции, который был создан. Поднимите этот миграционный файл и безотчитят 4 строки под подтвердимым:

t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email

Выдвиньте файл модели user.rb под приложением/моделями и в строке для разработки, добавьте в A:

:confirmable

После: Ремеабел, запись запустить свою миграцию сейчас, чтобы создать Таблица пользователей

rails db:migrate

Devise создаст некоторые помощники для использования внутри ваших контроллеров и представлений. Чтобы настроить контроллер с аутентификацией пользователя, просто добавьте это до_акций

before_action :authenticate_user!

Теперь, давайте прыгать на отправку электронной почты в производстве

Для начинающих мы используем Heroku в качестве производственного сервера. Во-первых, добавьте данные вашей кредитной карты на ваш счет Heroku. (Не волнуйтесь, это не будет стоить вам копейки). Затем введите:

heroku addons:create sendgrid:starter

Это добавит дополнение SendGrid в свой развернутый проект Heroku. Вы можете войти в свою учетную запись SendGrid через этот аддон и в вашем меню учетной записи SendGrid вы должны создать ключ API. После создания ключа API теперь мы должны установить учетные данные ключа SendGrid API, которые вы создали для Heroku.

heroku config:set SENDGRID_USERNAME=apikey
heroku config:set SENDGRID_PASSWORD=enterintheapikey

В Sendgrid_Password вы должны ввести клавишу API, созданную вами из SendGrid над Rails, предоставляет вам надежно сохранить учетные данные API в вашем файле Complents.yml. Все данные внутри этого файла зашифрованы, поэтому обеспечивается безопасность. Файл зашифрованных Credentals.yml.enc будет расшифрован в производстве, используя ключ, хранящийся в переменной Rails_Master_keyenvironment для людей, использующих код VS в качестве редактора. Вы можете редактировать файл Credentancys.yml, включив режим редактирования, как показано ниже

EDITOR='code --wait' rails credentials:edit

После выдачи этой команды вы можете хранить свои учетные данные SENDGRID в этом файле

 sendgrid:
   user_name: apikey
   password: Your API key

Под конфигурацией/средой/Production.rb Файл добавить в следующий код

 ActionMailer::Base.smtp_settings = {
      :address => 'smtp.sendgrid.net',
      :port => '587',
      :authentication => :plain,
      :user_name => Rails.application.credentials.dig(:user_name),
      :password => Rails.application.credentials.dig(:password),
      :domain => 'heroku.com',
      :enable_starttls_auto => true
    }
    config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options ={:host => 'yourherokuapp.herokuapp.com', :protocol => 'https'}

Теперь обновите файл Development.rb в папке Config/Execandments и добавьте следующие строки

 ActionMailer::Base.smtp_settings = {
      :address => 'smtp.sendgrid.net',
      :port => '587',
      :authentication => :plain,
      :user_name => Rails.application.credentials.dig(:user_name),
      :password => Rails.application.credentials.dig(:password),
      :domain => 'heroku.com',
      :enable_starttls_auto => true
    }

    config.action_mailer.delivery_method = :smtp
    config.action_mailer.default_url_options ={:host => 'http://localhost:3000'}

Эта настройка конфигурации является как для среды производства, так и для разработки. Теперь все настроен. При регистрации сейчас SENDGRID отправит ссылку для проверки на зарегистрированный адрес электронной почты пользователя. Ссылка подтверждения будет выглядеть что-то подобное.

Sendgrid проверка ссылки

Если вы хотите перенаправить пользователю на определенный URL после того, как они нажимали на ссылку в электронной почте подтверждения, переопределите After_Confirmation_Path_for в ваших подтверждениях_Controller:

Создайте новые подтверждения_Controller.RB в каталоге приложений/контроллеров:

class ConfirmationsController < Devise::ConfirmationsController
  private
  def after_confirmation_path_for(resource_name, resource)
    sign_in(resource) # In case you want to sign in the user
    your_new_after_confirmation_path
  end
end

В Config/mourcts.rb добавьте эту строку, чтобы придумать, использую ваши пользовательские подтвержденияController. Это предполагает Devise работает на таблице пользователей (вы можете редактировать, чтобы соответствовать вашим).

devise_for :users, controllers: { confirmations: 'confirmations' }

Перезапустите веб-сервер, и у вас его должно быть.

Оригинал: «https://dev.to/rishudc119/devise-and-sendgrid-integration-into-rails-6-4fpm»