zendesk_remote_authentication 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.6.0
@@ -1,5 +1,5 @@
1
1
  require 'digest/md5'
2
- require 'active_support' #gives us Hash.to_query
2
+ require 'active_support'
3
3
 
4
4
  module Zendesk
5
5
  class RemoteAuthentication
@@ -7,12 +7,12 @@ module Zendesk
7
7
  attr_writer :auth_url, :token
8
8
 
9
9
  def token
10
- raise ArgumentError.new('Zendesk Token has not been set yet. Set with Zendesk::RemoteAuthentication.token = <token>') unless @token
10
+ raise ArgumentError.new('Set your Zendesk token with. Zendesk::RemoteAuthentication.token = <token>') unless @token
11
11
  @token
12
12
  end
13
13
 
14
14
  def auth_url
15
- raise ArgumentError.new('Zendesk authentication url has not been set yet. Set with Zendesk::RemoteAuthentication.auth_url = <token>') unless @auth_url
15
+ raise ArgumentError.new('Set your Zendesk authentication url with, Zendesk::RemoteAuthentication.auth_url = <token>') unless @auth_url
16
16
  @auth_url
17
17
  end
18
18
 
@@ -22,31 +22,27 @@ module Zendesk
22
22
  end
23
23
 
24
24
  module RemoteAuthenticationHelper
25
- #you can either pass username and email or a user object which contains email and username attributes
26
- def zendesk_remote_authentication_url(params)
27
- params = params.is_a?(Hash) ? params : convert_user_to_a_hash(params)
28
-
29
- #TODO: Need a class to validate the params
30
- raise ArgumentError.new("You must provide name and email address") unless (params[:name] && params[:email])
31
25
 
32
- #add timestamp if none is passed in the params
33
- params[:timestamp] = Time.now.utc.to_i unless params[:timestamp]
26
+ def zendesk_remote_authentication_url(params)
27
+ raise ArgumentError.new("You must provide name and email address") unless (params[:name] && params[:email])
28
+
29
+ timestamp = params[:timestamp] || Time.now.to_i.to_s
30
+ name = params[:name]
31
+ email = params[:email].force_utf8
32
+ external_id = params[:external_id]
33
+ hash = Digest::MD5.hexdigest(name + email + external_id + Token + now)
34
+ back = params[:return_to]
34
35
 
35
- params[:hash] = params[:external_id] ? generate_authentication_hash(Zendesk::RemoteAuthentication.token, params) : ''
36
+ auth_params = [
37
+ '?name=' + CGI.escape(name),
38
+ '&email=' + CGI.escape(email),
39
+ '&timestamp=' + now,
40
+ '&hash=' + hash,
41
+ '&return_to=' + back
42
+ ].join.force_utf8
36
43
 
37
- "#{Zendesk::RemoteAuthentication.auth_url}?#{params.to_query}"
38
- end
39
-
40
- def convert_user_to_a_hash(user)
41
- params = {}
42
- params[:name] = "#{user.first_name} #{user.last_name}"
43
- params[:email] = user.email
44
- params[:external_id] = user.id
45
- return params
46
- end
47
-
48
- def generate_authentication_hash(token, params)
49
- Digest::MD5.hexdigest(params[:name] + params[:email] + params[:external_id] + token + params[:timestamp])
44
+ Zendesk::RemoteAuthentication.auth_url + auth_params
45
+
50
46
  end
51
-
47
+
52
48
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{zendesk_remote_authentication}
8
- s.version = "0.5.0"
8
+ s.version = "0.6.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["James Wachira"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_remote_authentication
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 5
8
+ - 6
9
9
  - 0
10
- version: 0.5.0
10
+ version: 0.6.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - James Wachira