# Identity Аутентификация и авторизация для Rails приложения. ## Установка Добавьте строчку в Gemfile приложения: ```ruby gem 'anadea-identity' ``` и запустите в консоли: ```console $ bundle ``` Запустите генератор: ```console $ rails g identity:install User ``` если нужно распаковать локализации и представления: ```console $ rails g identity:locales $ rails g identity:views ``` проверьте миграцию и запустите: ```console $ rake db:migrate ``` ## Использование ### Аутентификация Проверьте маршруты: `rake routes`. Вы увидите набор маршрутов, подобных тем, что даёт [Devise](https://github.com/plataformatec/devise). Собственно, Identity и есть не слишком толстая обёртка поверх Devise. У вас работает логин (через форму email/пароль), регистрация (через форму email/пароль/подтверждение пароля), восстановление пароля и многое другое. ### Админка Чтобы получить админку по пользователям, подключите [ActiveAdmin](https://github.com/activeadmin/activeadmin) и сгенерируйте конфигурационный файл без генерации пользователей (`--skip-users`). ### Конфигурация Выполняется в `config/initializers/identity.rb`. Вы всегда можете узнать полный список конфигурацинных опций и их значения по умолчанию, ознакомившись [с исходным кодом](lib/identity.rb). Важные опции: * `config.user_class_name` – имя класса, который будет использоваться, как основная модель для аутентификации. По умолчанию: `User`. * `config.devise_modules` – модули Devise, которые вы используете. Например, выключение `registerable` приведёт к невозможности зарегистрироваться, в том числе, исчезнет соответствующая ссылка, а включение `confirmable` приведёт к тому, что приложение станет требовать подтверждение адреса электронной почты, при условии, что в таблице `identity_users` есть соответствующие колонки (по умолчанию нет). Вы можете как модифицировать этот массив, так и полностью его переопределить: ```ruby 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 в точности. Например: ```ruby config.parent_controller = "ApplicationController" ``` За подробным списком того, что можно сконфигурировать в Devise, обратитесь к его документации. #### Сделанные кастомизации в конфигурации Devise. Мы делаем небольшие изменения в конфигурации Devise по умолчанию. Вы можете это увидеть в [исходном коде гема](lib/identity/devise_config.rb). * `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 можно с помощью [инструкции](https://getsocio.com/Help/How_to_set_up_Facebook_Application). ### Логин через Twitter. Для того, чтобы включить в приложении логин через Twitter нужно: * подключить `gem 'omniauth-twitter'` в своем Gemfile. * указать `config.omniauth :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']` в `config/initializers/identity.rb`. * создать приложение в Twitter можно [здесь](https://apps.twitter.com/). ### Логин через Google. Для того, чтобы включить в приложении логин через Google нужно: * подключить `gem 'omniauth-google-oauth2'` в своем Gemfile. * указать `config.omniauth :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET']` в `config/initializers/identity.rb`. * создать приложение в Google можно [здесь](https://console.developers.google.com/project). * для создания приложения можно воспользоваться [инструкцией](https://developers.google.com/identity/protocols/OpenIDConnect#appsetup)