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
 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.