omniauth-kongregate 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # OmniAuth::Kongregate
1
+ # OmniAuth::Kongregate ![CI status](https://secure.travis-ci.org/uken/omniauth-kongregate.png)
2
2
 
3
3
  OmniAuth strategy for [Kongregate](http://www.kongregate.com) authentication
4
4
 
@@ -19,11 +19,16 @@ If the token is valid, `/auth/kongregate/callback` will fire. You can get the va
19
19
  auth = request.env['omniauth.auth']
20
20
  user_id = auth.uid
21
21
  username = auth.extras['username']
22
+
23
+ ### Guest Access
24
+
25
+ Guest access (users that are not logged in on Kongregate) will result in an auto-generated, non-numeric value in `user_id` (so it won't clash with `kongregate_user_id`), prefixed with "g_", so applications have a set of temporary credentials until the user decides to authenticate.
22
26
 
23
27
  ## TODO
24
28
 
25
29
  - Display the Kongregate login form for non-authenticated users
26
30
 
31
+
27
32
  ## Contributing
28
33
 
29
34
  1. Fork it
@@ -31,3 +36,7 @@ If the token is valid, `/auth/kongregate/callback` will fire. You can get the va
31
36
  3. Commit your changes (`git commit -am 'Added some feature'`)
32
37
  4. Push to the branch (`git push origin my-new-feature`)
33
38
  5. Create new Pull Request
39
+
40
+ ## Special Thanks
41
+
42
+ - [pmariano](http://github.com/uken/pmariano), for implementing guest access.
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module Kongregate
3
- VERSION = "0.0.2"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
@@ -2,6 +2,7 @@ require 'omniauth'
2
2
  require 'net/http'
3
3
  require 'uri'
4
4
  require 'json'
5
+ require "securerandom"
5
6
 
6
7
  module OmniAuth
7
8
  module Strategies
@@ -18,7 +19,8 @@ module OmniAuth
18
19
  end
19
20
 
20
21
  def callback_phase
21
- @k_response = verify_kongregate_auth(request[:user_id], request[:game_auth_token])
22
+ @k_response = guest_access? ? guest_response : kongregate_auth
23
+
22
24
  return fail!(:invalid_credentials) unless authenticated?
23
25
  super
24
26
  end
@@ -29,21 +31,33 @@ module OmniAuth
29
31
 
30
32
  private
31
33
 
34
+ def guest_response
35
+ { "success" => true, "username" => "guest", "user_id" => generate_guest_user_id }
36
+ end
37
+
38
+ def generate_guest_user_id
39
+ SecureRandom.uuid
40
+ end
41
+
42
+ def guest_access?
43
+ request[:user_id] == "0"
44
+ end
45
+
32
46
  def authenticated?
33
47
  @k_response && @k_response['success']
34
48
  end
35
49
 
36
- def verify_kongregate_auth(user_id, game_auth_token)
50
+ def kongregate_auth
37
51
  uri = URI.parse('http://www.kongregate.com/api/authenticate.json')
38
52
  uri.query = URI.encode_www_form({
39
- :user_id => user_id,
40
- :game_auth_token => game_auth_token,
53
+ :user_id => request[:user_id],
54
+ :game_auth_token => request[:game_auth_token],
41
55
  :api_key => options.api_key
42
56
  })
43
57
  begin
44
58
  response = Net::HTTP.get_response(uri)
45
59
  log :debug, "Kongregate HTTP: #{response.code} - #{response.body}"
46
- JSON.parse(response.body)
60
+ JSON.parse response.body
47
61
  rescue Exception => e
48
62
  fail!(:kongregate_query_error, e)
49
63
  nil
metadata CHANGED
@@ -1,64 +1,65 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-kongregate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Chester / Uken Games
8
+ - Chester (chesterbr) / Uken Games
9
+ - Pedro Mariano (pmariano)
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2012-09-24 00:00:00.000000000 Z
13
+ date: 2013-02-21 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: omniauth
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
- - - ! '>='
20
+ - - ~>
20
21
  - !ruby/object:Gem::Version
21
- version: '0'
22
+ version: 1.1.1
22
23
  type: :runtime
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
26
  none: false
26
27
  requirements:
27
- - - ! '>='
28
+ - - ~>
28
29
  - !ruby/object:Gem::Version
29
- version: '0'
30
+ version: 1.1.1
30
31
  - !ruby/object:Gem::Dependency
31
32
  name: webmock
32
33
  requirement: !ruby/object:Gem::Requirement
33
34
  none: false
34
35
  requirements:
35
- - - ! '>='
36
+ - - ~>
36
37
  - !ruby/object:Gem::Version
37
- version: '0'
38
+ version: 1.9.0
38
39
  type: :development
39
40
  prerelease: false
40
41
  version_requirements: !ruby/object:Gem::Requirement
41
42
  none: false
42
43
  requirements:
43
- - - ! '>='
44
+ - - ~>
44
45
  - !ruby/object:Gem::Version
45
- version: '0'
46
+ version: 1.9.0
46
47
  - !ruby/object:Gem::Dependency
47
48
  name: rspec-rails
48
49
  requirement: !ruby/object:Gem::Requirement
49
50
  none: false
50
51
  requirements:
51
- - - ! '>='
52
+ - - ~>
52
53
  - !ruby/object:Gem::Version
53
- version: '0'
54
+ version: '2.0'
54
55
  type: :development
55
56
  prerelease: false
56
57
  version_requirements: !ruby/object:Gem::Requirement
57
58
  none: false
58
59
  requirements:
59
- - - ! '>='
60
+ - - ~>
60
61
  - !ruby/object:Gem::Version
61
- version: '0'
62
+ version: '2.0'
62
63
  - !ruby/object:Gem::Dependency
63
64
  name: capybara
64
65
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +127,7 @@ dependencies:
126
127
  description: OmniAuth Strategy for Kongregate
127
128
  email:
128
129
  - chester@uken.com
130
+ - pmariano@
129
131
  executables: []
130
132
  extensions: []
131
133
  extra_rdoc_files: []
@@ -147,15 +149,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
149
  - - ! '>='
148
150
  - !ruby/object:Gem::Version
149
151
  version: '0'
152
+ segments:
153
+ - 0
154
+ hash: -1859619691304913419
150
155
  required_rubygems_version: !ruby/object:Gem::Requirement
151
156
  none: false
152
157
  requirements:
153
158
  - - ! '>='
154
159
  - !ruby/object:Gem::Version
155
160
  version: '0'
161
+ segments:
162
+ - 0
163
+ hash: -1859619691304913419
156
164
  requirements: []
157
165
  rubyforge_project:
158
- rubygems_version: 1.8.24
166
+ rubygems_version: 1.8.25
159
167
  signing_key:
160
168
  specification_version: 3
161
169
  summary: Allows applications to get the kongregate id and username