-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.ru
More file actions
53 lines (44 loc) · 1.44 KB
/
config.ru
File metadata and controls
53 lines (44 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# This file is used by Rack-based servers to start the application.
require 'rubygems'
require 'hadley'
require 'active_support'
require 'dalli'
require 'sinatra/base'
require 'json'
class ExampleResourceServer < Sinatra::Base
include Hadley::Authz
get '/' do
body 'afid-resource-server'
end
get '/v1/current_time' do
warden.authenticate!(:afid_user)
body({current_time: Time.now.strftime('%Y-%m-%dT%H:%M:%SZ')}.to_json)
end
get '/v1/anonymous_time' do
warden.authenticate!(:afid_client)
body({current_time: Time.now.strftime('%s')}.to_json)
end
token_store = Hadley::TokenStore.new(ActiveSupport::Cache.lookup_store(:dalli_store))
use Rack::Session::Cookie, :secret => 'a8ab10237100f16d12b6c8e574e84b92cc15aecaced04d47251a5f34ffaa0e60'
use Warden::Manager do |manager|
manager.basic(:server) do |basic|
basic.hash_credentials true
basic.lookup do |id, secret|
[ id, secret] == [
'a8ab10237100f16d12b6c8e574e84b92cc15aecaced04d47251a5f34ffaa0e60',
'29cd5d3e8f481821422f886055d536c8e395a8aa123700eec74f045b0144e986'
] ? id : nil
end
end
manager.bearer(:client) do |bearer|
bearer.token_store token_store
bearer.anonymous_allowed true
end
manager.bearer(:user) do |bearer|
bearer.token_store token_store
bearer.anonymous_allowed false
end
end
use Hadley::Middleware, token_store: token_store
end
run ExampleResourceServer