riddl 0.99.216 → 0.99.217

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ad39cac2c5fac6d11ae73767ba06d0f960cd896
4
- data.tar.gz: a53bd4630af8a23ff85df248e1dbc0ae7cb71db2
3
+ metadata.gz: 1e50e2c0810b8d257a762416cc885ca7f744ca30
4
+ data.tar.gz: 955760f2f27cb7b020b6b58b863ca6ede7629c71
5
5
  SHA512:
6
- metadata.gz: 6b127ff50333232a2bcbbb4fa1065a60a6b58ca3c36ba3188b2ef27c2c3976a998ba710c1e15ea2fc85482a1652a6729284bb67f1308533813995eced4fddef9
7
- data.tar.gz: b92a629b242f62c1aee5678c436e5ccdbcddb66d0bf0a899615463b5d549adef1eb844de88061552392b526aa36c924f813d4293dcb492baf656bc07ef51fa33
6
+ metadata.gz: b594d20e57e17c71fa73f74d30f654fcddf7b4a89ccbee93b512b79a18fb17c93bcaf819ea9ec160456883140f1c9690ee42813a3a8da8eea14b81f319ff2c69
7
+ data.tar.gz: 6b2f13d927ff84be0fc26c4ded893db0aff9e40005bd8b7bc85b466cd44474b7be2fb87fc5e387109634b256250edec9f183da398c5d6628512d07bc48e5a18c
@@ -40,7 +40,9 @@ module Riddl
40
40
  end
41
41
 
42
42
  def write
43
- File.write(@tfile, JSON::pretty_generate(@tokens)) rescue {}
43
+ EM.defer {
44
+ File.write(@tfile, JSON::pretty_generate(@tokens)) rescue {}
45
+ }
44
46
  @changed = changed
45
47
  end
46
48
  private :write
@@ -133,4 +135,4 @@ module Riddl
133
135
  end
134
136
  end
135
137
  end
136
- end
138
+ end
@@ -72,7 +72,6 @@ module Riddl
72
72
  raise "client_id, client_secret or token storage not available."
73
73
  end
74
74
  Proc.new do
75
- run Riddl::Utils::OAuth2::UnivieBearer::CheckAuth, client_id, client_secret, access_tokens if get
76
75
  on resource 'verify' do
77
76
  run VerifyIdentity, access_tokens, refresh_tokens, client_id, client_secret if post 'verify_in'
78
77
  end
@@ -131,6 +130,42 @@ module Riddl
131
130
  refresh_tokens.delete_by_token token
132
131
  end
133
132
  end
133
+
134
+ class RefreshToken < Riddl::Implementation
135
+ def response
136
+ refresh_token = @p[1].value
137
+ access_tokens = @a[0]
138
+ refresh_tokens = @a[1]
139
+ client_id = @a[2]
140
+ client_secret = @a[3]
141
+
142
+ token, _ = refresh_token.split '.'
143
+ token_data = JSON::parse(Base64::urlsafe_decode64 token)
144
+
145
+ if token_data['iss'] != client_id
146
+ @status = 401
147
+ return Riddl::Parameter::Complex.new('data', 'application/json', {
148
+ :error => 'Token must be refreshed by issuer.'
149
+ }.to_json)
150
+ elsif refresh_tokens[refresh_token].nil? || token_data['exp'] <= Time.now.to_i
151
+ @status = 403
152
+ puts "i dont know #{refresh_token}", "#{refresh_tokens[refresh_token]}"
153
+ return Riddl::Parameter::Complex.new('data', 'application/json', {
154
+ :error => 'Invalid refresh token.'
155
+ }.to_json)
156
+ end
157
+
158
+ old_token = refresh_tokens[refresh_token]
159
+ user = access_tokens.delete old_token
160
+
161
+ token = OAuth2Fed::make_access_token(client_id, client_id + ':' + client_secret)
162
+
163
+ refresh_tokens[refresh_token] = token
164
+ access_tokens[token] = user
165
+
166
+ Riddl::Parameter::Complex.new('data', 'application/json', { :token => token }.to_json)
167
+ end
168
+ end
134
169
  end
135
170
 
136
171
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "riddl"
3
- s.version = "0.99.216"
3
+ s.version = "0.99.217"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3"
6
6
  s.summary = "restful interface description and declaration language: tools and client/server libs"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riddl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.99.216
4
+ version: 0.99.217
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen 'eTM' Mangler
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: tools
12
12
  cert_chain: []
13
- date: 2016-04-28 00:00:00.000000000 Z
13
+ date: 2016-04-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: xml-smart