opener-authenticator 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e63eda3717031d97ccabf56635aa9cfbb2fd1495
4
+ data.tar.gz: 869aeae56ded09d42427e27704f00a70089bd817
5
+ SHA512:
6
+ metadata.gz: 079c124d85b751c39f9c9906464b1115e5ee127929f8a3b28ab670ff716c4e4c6bfb6ef6256f0e646b8f6ca798daebabe9a336711d9ff4eec714c90758938c12
7
+ data.tar.gz: 9a8e9cdd4d4964acde9b912f6cf57f072582c4340e10251a38d001335e563903114b458a2ba167ba543bdde8957523d8294f996c8bc9f78fd25d4825217a2c3e
@@ -0,0 +1,57 @@
1
+ # Authenticator
2
+
3
+ Component that stores results from the Opener Web Services chain into a SQLite
4
+ Database and shows them into your browser.
5
+
6
+
7
+ ## Installation
8
+
9
+ ### As part of a Gemfile in a Ruby application
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'opener-authenticator',
14
+ :git=>"git@github.com:opener-project/authenticator.git"
15
+
16
+ And then execute:
17
+
18
+ $ bundle install
19
+
20
+ ## Usage
21
+
22
+ The Opener Authenticator comes equipped with a simple webservice. To start the
23
+ webservice type:
24
+
25
+ authenticator-server
26
+
27
+ This will launch a mini webserver with the webservice. It defaults to port 9292,
28
+ so you can access it at:
29
+
30
+ http://localhost:9292
31
+
32
+ To launch it on a different port provide the ```-p [port-number]``` option like
33
+ this:
34
+
35
+ authenticator-server -p 1234
36
+
37
+ It then launches at ```http://localhost:1234```
38
+
39
+ When you run a chain of web services using callbacks, the last URL should be the
40
+ one that points to the Authenticator Web Service. A unique id is generated and once the
41
+ chain has finished processing the text, you can view the result in the URL that
42
+ you get.
43
+
44
+ ## Contributing
45
+
46
+ ### Procedure
47
+
48
+ 1. Pull it
49
+ 2. Create your feature branch (`git checkout -b features/my-new-feature`)
50
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
51
+ 4. Push to the branch (`git push origin features/my-new-feature`)
52
+ 5. If you're confident, merge your changes into master.
53
+
54
+ # What's next?
55
+
56
+ If you're interested in the opener-authenticator, you also might want to check
57
+ out opener-project/authenticator.
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'puma/cli'
4
+
5
+ rack_config = File.expand_path('../../config.ru', __FILE__)
6
+
7
+ cli = Puma::CLI.new([rack_config] + ARGV)
8
+ cli.run
@@ -0,0 +1,4 @@
1
+ require File.expand_path('../lib/opener/authenticator', __FILE__)
2
+ require File.expand_path('../lib/opener/authenticator/server', __FILE__)
3
+
4
+ run Opener::Authenticator::Server
@@ -0,0 +1,31 @@
1
+ require 'active_record'
2
+ require 'activerecord-jdbcmysql-adapter'
3
+
4
+ db_pass = ENV["DB_PASS"]
5
+ db_name = ENV["DB_NAME"]
6
+ db_user = ENV["DB_USER"]
7
+ db_host = ENV["DB_HOST"]
8
+
9
+ if ENV["RACK_ENV"] == 'production'
10
+ ActiveRecord::Base.establish_connection(
11
+ adapter: 'mysql2',
12
+ database: db_name,
13
+ host: db_host,
14
+ username: db_user,
15
+ password: db_pass
16
+ )
17
+ else
18
+ ActiveRecord::Base.establish_connection(
19
+ adapter: 'mysql2',
20
+ host: db_host || 'localhost',
21
+ username: 'root',
22
+ password: db_pass || '',
23
+ database: db_name || 'opener_development'
24
+ )
25
+ end
26
+
27
+ ActiveRecord::Base.connection.execute("CREATE TABLE IF NOT EXISTS users (secret varchar(40), token varchar(40), created_at timestamp DEFAULT CURRENT_TIMESTAMP);")
28
+
29
+ if ActiveRecord::Base.connection.execute("SHOW INDEX FROM users").nil?
30
+ ActiveRecord::Base.connection.execute("CREATE INDEX secret_index ON users(secret);")
31
+ end
@@ -0,0 +1,6 @@
1
+ require 'digest/sha1'
2
+ require 'json'
3
+
4
+ require_relative 'authenticator/user'
5
+ require_relative 'authenticator/version'
6
+ require_relative 'authenticator/server'
@@ -0,0 +1,25 @@
1
+ require 'sinatra'
2
+
3
+ require File.expand_path('../../../../config/database', __FILE__)
4
+
5
+ module Opener
6
+ class Authenticator
7
+ class Server < Sinatra::Base
8
+ get '/' do
9
+ authenticate!
10
+ end
11
+
12
+ protected
13
+
14
+ def authenticate!
15
+ return if authenticated?
16
+ halt 401, "Not authorized\n"
17
+ end
18
+
19
+ def authenticated?
20
+ return false unless params[:secret] && params[:token]
21
+ User.exists?(:secret => params[:secret], :token => Digest::SHA1.hexdigest(params[:token]))
22
+ end
23
+ end # Server
24
+ end # Authenticator
25
+ end # Opener
@@ -0,0 +1,17 @@
1
+ require 'active_record'
2
+
3
+ module Opener
4
+ class Authenticator
5
+ class User < ActiveRecord::Base
6
+
7
+ validates_uniqueness_of :secret
8
+ validates_presence_of :token
9
+
10
+ before_save :encrypt_token
11
+
12
+ def encrypt_token
13
+ self.token = Digest::SHA1.hexdigest(token)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ module Opener
2
+ class Authenticator
3
+ VERSION = "0.2.3"
4
+ end
5
+ end
@@ -0,0 +1,36 @@
1
+ require File.expand_path('../lib/opener/authenticator/version', __FILE__)
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.name = 'opener-authenticator'
5
+ gem.version = Opener::Authenticator::VERSION
6
+ gem.authors = ['giannismelidis@olery.com']
7
+ gem.summary = 'Simple authentication endpoint for the Opener Web Services.'
8
+ gem.description = gem.summary
9
+ gem.homepage = "http://opener-project.github.com/"
10
+ gem.has_rdoc = 'yard'
11
+ gem.required_ruby_version = '>= 1.9.2'
12
+
13
+ gem.files = Dir.glob([
14
+ 'config/**/*',
15
+ 'lib/**/*',
16
+ 'config.ru',
17
+ '*.gemspec',
18
+ 'README.md'
19
+ ]).select { |file| File.file?(file) }
20
+
21
+ gem.executables = Dir.glob('bin/*').map { |file| File.basename(file) }
22
+
23
+ gem.add_dependency 'builder', '~>3.0.0'
24
+ gem.add_dependency 'sinatra', '~>1.4.2'
25
+ gem.add_dependency 'httpclient'
26
+ gem.add_dependency 'jdbc-mysql'
27
+ gem.add_dependency 'activerecord-jdbcmysql-adapter'
28
+ gem.add_dependency 'activerecord', '~>3.2'
29
+ gem.add_dependency 'activesupport', '~>3.2'
30
+ gem.add_dependency 'puma'
31
+
32
+ gem.add_development_dependency 'rspec'
33
+ gem.add_development_dependency 'cucumber'
34
+ gem.add_development_dependency 'pry'
35
+ gem.add_development_dependency 'rake'
36
+ end
metadata ADDED
@@ -0,0 +1,220 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opener-authenticator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.3
5
+ platform: ruby
6
+ authors:
7
+ - giannismelidis@olery.com
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: builder
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 3.0.0
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 3.0.0
25
+ prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: sinatra
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.2
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: 1.4.2
39
+ prerelease: false
40
+ type: :runtime
41
+ - !ruby/object:Gem::Dependency
42
+ name: httpclient
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ prerelease: false
54
+ type: :runtime
55
+ - !ruby/object:Gem::Dependency
56
+ name: jdbc-mysql
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ prerelease: false
68
+ type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ name: activerecord-jdbcmysql-adapter
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ prerelease: false
82
+ type: :runtime
83
+ - !ruby/object:Gem::Dependency
84
+ name: activerecord
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3.2'
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '3.2'
95
+ prerelease: false
96
+ type: :runtime
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: '3.2'
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ~>
107
+ - !ruby/object:Gem::Version
108
+ version: '3.2'
109
+ prerelease: false
110
+ type: :runtime
111
+ - !ruby/object:Gem::Dependency
112
+ name: puma
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ prerelease: false
124
+ type: :runtime
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ prerelease: false
138
+ type: :development
139
+ - !ruby/object:Gem::Dependency
140
+ name: cucumber
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ prerelease: false
152
+ type: :development
153
+ - !ruby/object:Gem::Dependency
154
+ name: pry
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ prerelease: false
166
+ type: :development
167
+ - !ruby/object:Gem::Dependency
168
+ name: rake
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - '>='
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ prerelease: false
180
+ type: :development
181
+ description: Simple authentication endpoint for the Opener Web Services.
182
+ email:
183
+ executables:
184
+ - authenticator-server
185
+ extensions: []
186
+ extra_rdoc_files: []
187
+ files:
188
+ - README.md
189
+ - bin/authenticator-server
190
+ - config.ru
191
+ - config/database.rb
192
+ - lib/opener/authenticator.rb
193
+ - lib/opener/authenticator/server.rb
194
+ - lib/opener/authenticator/user.rb
195
+ - lib/opener/authenticator/version.rb
196
+ - opener-authenticator.gemspec
197
+ homepage: http://opener-project.github.com/
198
+ licenses: []
199
+ metadata: {}
200
+ post_install_message:
201
+ rdoc_options: []
202
+ require_paths:
203
+ - lib
204
+ required_ruby_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '>='
207
+ - !ruby/object:Gem::Version
208
+ version: 1.9.2
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ requirements: []
215
+ rubyforge_project:
216
+ rubygems_version: 2.2.2
217
+ signing_key:
218
+ specification_version: 4
219
+ summary: Simple authentication endpoint for the Opener Web Services.
220
+ test_files: []