The Authic Client Gem is the quickest and easiest way to integrate your Rails 3 application with the most excellent Authic cloud authentication service. This Gem will have your Application using Authic to authenticate and manage your application's users in about the time it takes to read this document (5-10 min - no joke!) letting you concentrate on you application's unique value proposition and not on the mundane business of password reset forms.
In your Rails 3 or Rails 4 applications Gemfile add:
Run bundle install from the command line:
The authic_client gem comes with two generators to make setup a snap. After the gem is installed you can run the authic_client generators to generate configuration, database migration and model files.
To generate the initializer files
config/initializers/omniauth.rb run the following from the command line:
rails g authic:install
To generate the database migration and model files run the following command from the command line:
rails g active_record:authic User
NOTE: if the
User model already exists the generator will insert the appropriate attr_accessor calls at the top of your User model definition file (
app/models/user.rb) and the migration is smart enough to add columns to an existing model if they don't already exist.
To add the required fields to the your users table, run a database migration using the following command:
This will create/update the application's
User model to include the following fields.
t.string :email # the email address of the user t.string :provider # always 'authic' - to be deprecated soon t.string :uid # A unique identifier for the user assigned by Authic t.text :authic_data # a JSON encoded varibles related to the user, e.g the user's facebook id t.string :first_name # The first name of the user t.string :last_name # The last name of the user t.string :full_name # the combined first and last name of the user t.string :mobile # the mobile (cell) phone number of the user t.string :phone # the landline phone number of the user t.date :birth_date # the birth date of the user t.text :groups # which groups the user belongs to (future road map) t.text :roles # which roles the user belongs to (future road map) t.string :middle_name # the middle name of the user t.string :gender # the gender of the user t.string :timezone # the timezone in which the user is located t.string :country # the country in which the user is located t.text :address # the address in which the user is located
/config/initializers/authic.rb and add your Authic details. The details include your Authic client key, secret and subdomain. These values can be found on Authic's Client Application details screen.
The initializer looks like:
module AuthicClient # Authic config AUTHIC_CLIENT_KEY ||= ENV['AUTHIC_CLIENT_KEY'] ||= '< your authic client key >' AUTHIC_CLIENT_SECRET ||= ENV['AUTHIC_CLIENT_SECRET'] ||= '< your authic client secret >' AUTHIC_CLIENT_SUBDOMAIN ||= ENV['AUTHIC_CLIENT_SUBDOMAIN'] ||= '< your authic subdomain >' end
Just replace the <XXXX> strings between the quotes with the values. There is no need to change any other part of this file.
Alternatively you can leave the file alone and initialize these variables with heroku style environment configuration values:
'< your authic client key >'
'< your authic client secret >'
'< your authic subdomain >'
NOTE: Make sure keep the quotation marks around these values and don't include any '<' or '>'s.
NOTE2: For the configuration to take effect (with either style of configuration) you will need to restart your application.
The Authic Client gem provides the following handy helper methods which are available in both your controllers and views:
Returns the current user logged into your app via Authic
Returns true if there is currently a user logged into your app, and false if not
This will give you the URL to the hosted user account screen in Authic. You would use it on your “edit my account” link/button
This path will initiate sign in with Authic. You would use it on your “login” or “signin” links/buttons
This path will initiate sign up with Authic. You would use it on your “signup” links/buttons
Redirecting to this path will log the current user out of your app as well as Authic. You would use it on your “sign out” links/buttons
Here are some other bits and pieces that might be useful while having fun using authic_client
Set this session variable before initiating signin and authic_client will punt your user to this path after the Oauth callback process is complete
Authic is a secure, brandable cloud authentication service that integrates into your web app in seconds leaving you to concentrate on your core business functionality.
(The MIT License)
Copyright © 2012 Authic.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.