Genkan is authentication engine for Rails
Installation
gem 'genkan'
# Add any omniauth provider
gem 'omniauth-google-oauth2'
gem 'omniauth-facebook'
And then execute:
$ bundle
Getting started
$ bin/rails g genkan:install --model User
create config/initializers/genkan.rb
create db/migrate/20170705074103_create_users.rb
create app/models/user.rb
insert app/controllers/application_controller.rb
route mount Genkan::Engine, at: '/'
create app/views/genkan/sessions/new.html.erb
$ bin/rails db:migrate
Some setup you must do manually if you haven't yet:
- Ensure you have edited config/initializers/genkan.rb. For example:
Genkan.configure do |config|
config.user_class_name = 'User'
config.auto_acceptance = true
config. = 1.week
end
Genkan::Engine.configure do |config|
config.middleware.use OmniAuth::Builder do
# Add omniauth-google-oauth2 to Gemfile:
# gem 'omniauth-google-oauth2'
provider(
:google_oauth2,
ENV['GOOGLE_OAUTH_CLIENT_ID'],
ENV['GOOGLE_OAUTH_CLIENT_SECRET'],
{
name: 'google',
scope: 'email',
hd: 'host-domain.com'
}
)
end
end
- Ensure you have defined root_url to something in your config/routes.rb. For example:
root to: "home#index"
- Ensure you have flash messages in app/views/layouts/application.html.erb. For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
- Ensure you have set logout link in app/views/layouts/application.html.erb. For example:
<% if logged_in? %>
<p><%= link_to "logout", genkan.logout_path %></p>
<% end %>
Debugging
You can check on dummy server:
$ bundle
$ bin/rails db:setup
$ GOOGLE_OAUTH_CLIENT_ID=YOUR_ID GOOGLE_OAUTH_CLIENT_SECRET=YOUR_SECRET bin/rails s
How to create google client id and secret:
License
The gem is available as open source under the terms of the MIT License.