Strategy to authenticate with Doximity via OAuth2 in OmniAuth.
Add this line to your application's Gemfile:
gem 'omniauth-doximity_oauth2'
And then execute:
$ bundle
Or install it yourself as:
$ gem install omniauth-doximity_oauth2
Here's an example for adding the middleware to a Rails app in config/initializers/omniauth.rb
:
Rails.application.config.middleware.use OmniAuth::Builder do
:doximity, ENV['DOXIMITY_CLIENT_ID'], ENV['DOXIMITY_CLIENT_SECRET'], { strategy_class: OmniAuth::Strategies::DoximityOauth2, scope: 'email'}
end
First define your application id and secret in config/initializers/devise.rb
config.omniauth :doximity, ENV['DOXIMITY_CLIENT_ID'], ENV['DOXIMITY_CLIENT_SECRET'], { strategy_class: OmniAuth::Strategies::DoximityOauth2, scope: 'email'}
Then add the following to config/routes.rb
so the callback routes are defined.
devise_for :users, :controllers => { omniauth_callbacks: 'users/omniauth_callbacks' }
Make sure your model is omniauthable. Generally this is app/models/user.rb
devise :omniauthable, omniauth_providers: [:doximity]
Then make sure your callbacks controller is setup.
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def doximity
# LOGIC
# you can retrive your request with: request.env['omniauth.auth']
end
end
For your views you can login using:
<%= link_to 'Sign in with Doximity', user_omniauth_authorize_path(:doximity) %>
An overview is available at https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
- Fork it ( https://github.com/pushhealth/omniauth-doximity_oauth2/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request