Project

genkan

0.0
No commit activity in last 3 years
No release in over 3 years
Genkan is authentication engine for Rails
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.15

Runtime

>= 5.0
 Project Readme

Build Status Gem Version

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:

  1. Ensure you have edited config/initializers/genkan.rb. For example:
Genkan.configure do |config|
  config.user_class_name   = 'User'
  config.auto_acceptance   = true
  config.cookie_expiration = 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',
        verify_iss: false,
      }
    )
  end
end
  1. Ensure you have defined root_url to something in your config/routes.rb. For example:
root to: "home#index"
  1. Ensure you have flash messages in app/views/layouts/application.html.erb. For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
  1. 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.