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.
- checksums.yaml +7 -0
- data/README.md +57 -0
- data/bin/authenticator-server +8 -0
- data/config.ru +4 -0
- data/config/database.rb +31 -0
- data/lib/opener/authenticator.rb +6 -0
- data/lib/opener/authenticator/server.rb +25 -0
- data/lib/opener/authenticator/user.rb +17 -0
- data/lib/opener/authenticator/version.rb +5 -0
- data/opener-authenticator.gemspec +36 -0
- metadata +220 -0
checksums.yaml
ADDED
@@ -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
|
data/README.md
ADDED
@@ -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.
|
data/config.ru
ADDED
data/config/database.rb
ADDED
@@ -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,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,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: []
|