Intra
A relatively quick way to add Omniauth strategies to authenticate users on your
internal Rails apps. No username/password authentication.
Installation
Add this line to your application's Gemfile:
gem 'intra'
And then execute:
$ bundle
Or install it yourself as:
$ gem install intra
Then install the initializer and user migration
$ bin/rails intra:install
Usage
The rake task adds an initializer in config/initializers/intra.rb
and a
migration for a basic user model. Customize and run the migration if you need
to.
The GOOGLE_OPTIONS[:hd]
in the initializer allows you to limit sign-in to a
particular Google Apps hosted domain. This can be simply string 'domain.com' or
an array %w(domain.com domain.co). More information at:
https://developers.google.com/accounts/docs/OpenIDConnect#hd-param
The Rack middleware assumes you have a model to record users with at least the
following schema.
t.string :uuid, null: false
t.string :email
t.string :remember_token
t.string :first_name
t.string :last_name
t.string :image_url
You may want to add an index on remember_token
(and maybe uuid
) because on
first authentication, uuid
is used while remember_token
is used on each
subsequent HTTP request.
Configure the user model in the initializer and include the Authenticatable
module into that class.
class User < ApplicationRecord
include Intra::Authenticatable
end
You can customize the default sign in screen by creating your own view at
app/views/intra/sessions/new.html.erb
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/intra. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
License
The gem is available as open source under the terms of the MIT License.