slack_oauth 0.1.0 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 207d99ddad07fb7be632680961488a5fdac05bf2
4
- data.tar.gz: 824fef9a2cc34fcfe16cb1d546a41b91a2324a6c
3
+ metadata.gz: 854ea6bb849afb1579b16e1324fa30914a2540ff
4
+ data.tar.gz: eb3a7718f284e9ebce134b5ec6bb3510e6e0d619
5
5
  SHA512:
6
- metadata.gz: 4b5f693b24a7fe03da9ce2f1e3e3a0ff704e8cb748924e1b7708790542b542039626c9651712ed33b9b9574f0f21354c30b0e2525c89a4d4c02baef47f6a66ba
7
- data.tar.gz: 0b45081bee61b070f21daa3023411b949fb011681ff5df02c7159ee377126ca3eeb1f6c946c49c537edc76ed69497028974e69cea796b51a464f3f68c41d1e50
6
+ metadata.gz: 3ed2ed608984dd91cde6a970b0754ef8159836462acceb134cd277fe17dca2a739f0da8de190139192fe55bd29900dde48693f21eda4fe7ca03c8bbfd38d2f77
7
+ data.tar.gz: 93eeaad7c2eadc3614cc968fcbcaa0dbc6fd887a821fc54692456ab5e38967a16e824f6628d8d72ee8bfb1b48bbf98227d501715883066a5d723ee429128a5bc
@@ -0,0 +1,74 @@
1
+ # SlackOauth
2
+
3
+ oauth client library for sinatra
4
+
5
+ # Coverage
6
+ - Whether authorized with allowed team
7
+ - authorized user's token(slack)
8
+ - team id(slack) using the authorization
9
+ - team name(slack) using the authorization
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem 'slack_oauth'
17
+ ```
18
+
19
+ And then execute:
20
+
21
+ $ bundle
22
+
23
+ Or install it yourself as:
24
+
25
+ $ gem install slack_oauth
26
+
27
+ ## Usage
28
+
29
+ ```ruby
30
+ require 'sinatra/base'
31
+ require 'slack_oauth'
32
+
33
+ register SlackOauth::Driver
34
+
35
+ use Rack::Session::Cookie,
36
+ :expire_after => 3600,
37
+ :secret => 'change'
38
+
39
+ configure do
40
+ set :slack_token, 'xxxxx-xxxxx-xxxx-xxxx'
41
+ set :slack_client_id, 'nnnnnn.nnnnn'
42
+ set :slack_secret_key, 'xxxxxxxxxxxxxxxxxx'
43
+ set :logined_uri, '/'
44
+ set :error_uri, '/'
45
+ set :slack_redirect_uri, 'http://yourhost:4567/oauth'
46
+ set :slack_team, 'your-team' # or nil
47
+ set :slack_allowed_teams, ['allowed team']
48
+ set :slack_scope, 'identify'
49
+ use Rack::Session::Cookie,
50
+ :expire_after => 3600,
51
+ :secret => 'change'
52
+ end
53
+
54
+ get '/' do
55
+ <<-EOS
56
+ <html>
57
+ <body>
58
+ #{(authorized?) ? 'Authorized<br>' : ''}
59
+ <a href="#{get_authentication_url}">sign in</a>
60
+ </body>
61
+ </html>
62
+ EOS
63
+ end
64
+
65
+ get '/signout' do
66
+ session.clear
67
+ end
68
+
69
+ ```
70
+
71
+
72
+ ## Contributing
73
+
74
+ Bug reports and pull requests are welcome on GitHub at https://github.com/m0cchi/slack_oauth.
@@ -12,10 +12,16 @@ module SlackOauth
12
12
  http.use_ssl = true
13
13
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
14
14
  req = Net::HTTP::Post.new(uri.path)
15
- req.set_form_data({client_id: settings.slack_client_id,
16
- client_secret: settings.slack_secret_key,
17
- code: code,
18
- redirect_uri: settings.slack_redirect_uri})
15
+
16
+ params = {client_id: settings.slack_client_id,
17
+ client_secret: settings.slack_secret_key,
18
+ code: code}
19
+
20
+ if has_settings(:slack_redirect_uri)
21
+ params[:redirect_uri] = settings.slack_redirect_uri
22
+ end
23
+
24
+ req.set_form_data(params)
19
25
  res = JSON.parse(http.request(req).body)
20
26
  session[:authorized] = res['ok'] && settings.slack_allowed_teams.include?(res['team_name'])
21
27
  if session[:authorized]
@@ -34,19 +40,14 @@ module SlackOauth
34
40
  def get_params
35
41
  params = []
36
42
 
37
- unless settings.slack_client_id.nil?
38
- params << "client_id=#{settings.slack_client_id}"
39
- end
43
+ params << "client_id=#{settings.slack_client_id}"
44
+ params << "scope=#{settings.slack_scope}"
40
45
 
41
- unless settings.slack_team.nil?
46
+ if has_settings(:slack_team)
42
47
  params << "team=#{settings.slack_team}"
43
48
  end
44
49
 
45
- unless settings.slack_scope.nil?
46
- params << "scope=#{settings.slack_scope}"
47
- end
48
-
49
- unless settings.slack_redirect_uri.nil?
50
+ if has_settings(:slack_redirect_uri)
50
51
  params << "redirect_uri=#{settings.slack_redirect_uri}"
51
52
  end
52
53
  "?#{params.join('&')}"
@@ -56,6 +57,12 @@ module SlackOauth
56
57
  "https://slack.com/oauth/authorize#{get_params}"
57
58
  end
58
59
 
60
+ private
61
+
62
+ def has_settings(name)
63
+ !!settings.methods.include?(name) && settings.send((name.to_s + '?').to_sym)
64
+ end
65
+
59
66
  end
60
67
  end
61
68
  end
@@ -1,3 +1,3 @@
1
1
  module SlackOauth
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,54 @@
1
+ require 'sinatra/base'
2
+ require 'slack_oauth'
3
+
4
+ helpers SlackOauth::Driver::Helper
5
+
6
+ configure do
7
+ set :slack_token, 'xxxxx-xxxxx-xxxx-xxxx'
8
+ set :slack_client_id, 'nnnnnn.nnnnn'
9
+ set :slack_secret_key, 'xxxxxxxxxxxxxxxxxx'
10
+ set :logined_uri, '/'
11
+ set :error_uri, '/'
12
+ set :slack_redirect_uri, 'http://yourhost:4567/your-path'
13
+ set :slack_team, 'your-team' # or nil
14
+ set :slack_allowed_teams, ['allowed team']
15
+ set :slack_scope, 'identify'
16
+ use Rack::Session::Cookie,
17
+ :expire_after => 3600,
18
+ :secret => 'change'
19
+ end
20
+
21
+ get '/your-path' do
22
+ if !params[:error].nil?
23
+ redirect settings.error_uri
24
+ elsif !params[:code].nil?
25
+ if authorize(params[:code])
26
+ redirect settings.logined_uri
27
+ else
28
+ redirect settings.error_uri
29
+ end
30
+ end
31
+ end
32
+
33
+ get '/signin' do
34
+ if authorized?
35
+ redirect settings.logined_uri
36
+ else
37
+ redirect get_authentication_url
38
+ end
39
+ end
40
+
41
+ get '/' do
42
+ <<-EOS
43
+ <html>
44
+ <body>
45
+ #{(authorized?) ? 'Authorized<br>' : ''}
46
+ <a href="/signin">sign in</a>
47
+ </body>
48
+ </html>
49
+ EOS
50
+ end
51
+
52
+ get '/signout' do
53
+ session.clear
54
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack_oauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - m0cchi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-17 00:00:00.000000000 Z
11
+ date: 2016-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -74,9 +74,11 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - Gemfile
77
+ - README.md
77
78
  - lib/helper.rb
78
79
  - lib/slack_oauth.rb
79
80
  - lib/version.rb
81
+ - sample/helper.rb
80
82
  - slack_oauth.gemspec
81
83
  homepage: https://github.com/m0cchi/slack_oauth
82
84
  licenses: []