16/02/2012 Viewbook took over this gem from Tobias Crawley, this is now the official repo for this gem.
zendesk_remote_auth is a simple gem providing help with Zendesk’s SSO functionality (see www.zendesk.com/api/remote_authentication).
-
Install: gem install zendesk_remote_auth
-
Setup:
You will need to give the gem your token and authentication url, perhaps in an initializer:
Zendesk::RemoteAuth.token = 'YOUR-TOKEN' Zendesk::RemoteAuth.auth_url = 'https://yourcompany.zendesk.com/access/remote/'
and config the gem in environment.rb (if using rails):
config.gem 'zendesk_remote_auth'
Note: The latest release requires ActiveSupport 3.0 or greater.
Mixin the Zendesk::RemoteAuthHelper module wherever needed, then call:
zendesk_remote_auth_url(:name => 'user name', :email => 'user email', <optional params>)
This will return a url you can redirect the user to to log them in to your zendesk account.
As a convenience, you can pass a user object to zendesk_remote_auth_url:
zendesk_remote_auth_url(user)
This user must respond_to? :name and :email, and its :id will be used as the :external_id (making it useless with user objects that return an ephemeral object_id, but works well with ActiveRecord and the like). If the user object responds to :zendesk_organization, that will be used as the :organization for the call.
Same goes for :zendesk_tags, you’ll need a string such as:
"fine looking gentlemen,single"
And it’ll automatically be passed as :tags to Zendesk
This method will generate and include the hash of the parameters for you if necessary.
Here is an example controller that handles login and logout for zendesk:
# Uses restful-authentication style auth. # # Define the following in routes.rb: # map.with_options :controller => 'zendesk_auth' do |zd| # zd.connect '/zendesk/authorize', :action => 'authorize' # zd.connect '/zendesk/logout', :action => 'logout' # end class ZendeskAuthController < ApplicationController include Zendesk::RemoteAuthHelper skip_before_filter :login_required, :only => :logout def authorize redirect_to zendesk_remote_auth_url(current_user) end def logout redirect_to logout_url end protected def login_required if !logged_in? flash[:notice] = 'You must log in to access the support site.' store_location redirect_to login_path end end end
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright © 2011 Tobias Crawley. See LICENSE for details.