Identity
Аутентификация и авторизация для Rails приложения.
Установка
Добавьте строчку в Gemfile приложения:
gem 'anadea-identity'
и запустите в консоли:
$ bundle
Запустите генератор:
$ rails g identity:install User
если нужно распаковать локализации и представления:
$ rails g identity:locales
$ rails g identity:views
проверьте миграцию и запустите:
$ rake db:migrate
Использование
Аутентификация
Проверьте маршруты: rake routes
. Вы увидите набор маршрутов, подобных тем, что
даёт Devise. Собственно, Identity и
есть не слишком толстая обёртка поверх Devise.
У вас работает логин (через форму email/пароль), регистрация (через форму email/пароль/подтверждение пароля), восстановление пароля и многое другое.
Админка
Чтобы получить админку по пользователям, подключите
ActiveAdmin и сгенерируйте
конфигурационный файл без генерации пользователей (--skip-users
).
Конфигурация
Выполняется в config/initializers/identity.rb
.
Вы всегда можете узнать полный список конфигурацинных опций и их значения по умолчанию, ознакомившись с исходным кодом. Важные опции:
config.user_class_name
– имя класса, который будет использоваться, как основная модель для аутентификации. По умолчанию:User
.config.devise_modules
– модули Devise, которые вы используете. Например, выключениеregisterable
приведёт к невозможности зарегистрироваться, в том числе, исчезнет соответствующая ссылка, а включениеconfirmable
приведёт к тому, что приложение станет требовать подтверждение адреса электронной почты, при условии, что в таблицеidentity_users
есть соответствующие колонки (по умолчанию нет).
Вы можете как модифицировать этот массив, так и полностью его переопределить:
config.devise_modules += [:confirmable]
config.devise_modules = [:database_authenticatable, :omniauthable, ...]
По умолчанию включены модули database_authenticatable, registerable, recoverable, rememberable, trackable и validatable. Если включить хотя бы один omniauth provider, автоматически подключится omniauthable. За подробным их описанием обратитесь в документацию Devise.
config.layout
– макет (layout), используемый формами логина, регистрации и прочего. По умолчанию используется главный макет вашего приложения –"application"
.active_scope
– скоуп, используемый системой для поиска пользователей. Вы можете посредством его блокировать некоторых пользователей. Например,:active
. По умолчанию:all
, то есть, все пользователи.config.auth_routes
– позволяет передать опции для роутов Devise, подключаемых приложением. Если указатьfalse
, маршруты подключены не будут и вы можете сами подключить их.
Вы также можете использовать любые конфигурационные опции самого Devise. Они будут переданы Devise в точности. Например:
config.parent_controller = "ApplicationController"
За подробным списком того, что можно сконфигурировать в Devise, обратитесь к его документации.
Сделанные кастомизации в конфигурации Devise.
Мы делаем небольшие изменения в конфигурации Devise по умолчанию. Вы можете это увидеть в исходном коде гема.
config.mailer_sender
– мы достаём это из переменной окружения MAIL_FROM.config.sign_out_via
– GET и только GET. Это должно работать без джаваскрипта.
Логин через Facebook
Для того, чтобы включить в приложении логин через Facebook нужно:
- подключить
gem 'omniauth-facebook'
в своем Gemfile. - указать
config.omniauth :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']
вconfig/initializers/identity.rb
. - создать приложение в Facebook можно с помощью инструкции.
Логин через Twitter
Для того, чтобы включить в приложении логин через Twitter нужно:
- подключить
gem 'omniauth-twitter'
в своем Gemfile. - указать
config.omniauth :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
вconfig/initializers/identity.rb
. - создать приложение в Twitter можно здесь.
Логин через Google
Для того, чтобы включить в приложении логин через Google нужно:
- подключить
gem 'omniauth-google-oauth2'
в своем Gemfile. - указать
config.omniauth :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET']
вconfig/initializers/identity.rb
. - создать приложение в Google можно здесь.
- для создания приложения можно воспользоваться инструкцией
- если после выполнения всех инструкций и проверки правильности 'Redirect URIs' и 'Client ID'/'Client secret', аутентификация не происходит и выдает ошибку 'Error: redirect_uri_mismatch', то нужно пересоздать Client ID. Есть какой-то внутренний баг гема.
Логин через Microsoft
Для того, чтобы включить в приложении логин через Microsoft нужно:
- подключить
gem 'omniauth-windowslive'
в своем Gemfile. - указать
config.omniauth :windowslive, ENV['MICROSOFT_KEY'], ENV['MICROSOFT_SECRET'], scope: 'wl.emails'
вconfig/initializers/identity.rb
. - создать приложение в Microsoft можно здесь.
Логин через Yahoo
Для того, чтобы включить в приложении логин через Yahoo нужно:
- подключить
gem 'omniauth-yahoo'
в своем Gemfile. - указать
config.omniauth :yahoo, ENV['YAHOO_KEY'], ENV['YAHOO_SECRET']
вconfig/initializers/identity.rb
. - создать приложение в Yahoo можно здесь.