slack_oauth 0.1.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 +7 -0
- data/Gemfile +4 -0
- data/lib/helper.rb +61 -0
- data/lib/slack_oauth.rb +32 -0
- data/lib/version.rb +3 -0
- data/slack_oauth.gemspec +23 -0
- metadata +104 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 207d99ddad07fb7be632680961488a5fdac05bf2
|
4
|
+
data.tar.gz: 824fef9a2cc34fcfe16cb1d546a41b91a2324a6c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4b5f693b24a7fe03da9ce2f1e3e3a0ff704e8cb748924e1b7708790542b542039626c9651712ed33b9b9574f0f21354c30b0e2525c89a4d4c02baef47f6a66ba
|
7
|
+
data.tar.gz: 0b45081bee61b070f21daa3023411b949fb011681ff5df02c7159ee377126ca3eeb1f6c946c49c537edc76ed69497028974e69cea796b51a464f3f68c41d1e50
|
data/Gemfile
ADDED
data/lib/helper.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'sinatra/base'
|
2
|
+
require 'net/https'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module SlackOauth
|
6
|
+
module Driver
|
7
|
+
module Helper
|
8
|
+
|
9
|
+
def authorize(code)
|
10
|
+
uri = URI.parse('https://slack.com/api/oauth.access')
|
11
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
12
|
+
http.use_ssl = true
|
13
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
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})
|
19
|
+
res = JSON.parse(http.request(req).body)
|
20
|
+
session[:authorized] = res['ok'] && settings.slack_allowed_teams.include?(res['team_name'])
|
21
|
+
if session[:authorized]
|
22
|
+
session[:slack_team] = res['team_name']
|
23
|
+
session[:slack_access_token] = res['access_token']
|
24
|
+
session[:slack_user_id] = res['user_id']
|
25
|
+
session[:slack_team_id] = res['team_id']
|
26
|
+
end
|
27
|
+
session[:authorized]
|
28
|
+
end
|
29
|
+
|
30
|
+
def authorized?
|
31
|
+
session[:authorized]
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_params
|
35
|
+
params = []
|
36
|
+
|
37
|
+
unless settings.slack_client_id.nil?
|
38
|
+
params << "client_id=#{settings.slack_client_id}"
|
39
|
+
end
|
40
|
+
|
41
|
+
unless settings.slack_team.nil?
|
42
|
+
params << "team=#{settings.slack_team}"
|
43
|
+
end
|
44
|
+
|
45
|
+
unless settings.slack_scope.nil?
|
46
|
+
params << "scope=#{settings.slack_scope}"
|
47
|
+
end
|
48
|
+
|
49
|
+
unless settings.slack_redirect_uri.nil?
|
50
|
+
params << "redirect_uri=#{settings.slack_redirect_uri}"
|
51
|
+
end
|
52
|
+
"?#{params.join('&')}"
|
53
|
+
end
|
54
|
+
|
55
|
+
def get_authentication_url
|
56
|
+
"https://slack.com/oauth/authorize#{get_params}"
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/slack_oauth.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative 'version'
|
2
|
+
require_relative 'helper.rb'
|
3
|
+
require 'sinatra/base'
|
4
|
+
require 'net/https'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
module SlackOauth
|
8
|
+
module Driver
|
9
|
+
|
10
|
+
def self.registered(app)
|
11
|
+
app.helpers SlackOauth::Driver::Helper
|
12
|
+
|
13
|
+
app.get '/oauth' do
|
14
|
+
if authorized?
|
15
|
+
redirect app.settings.logined_uri
|
16
|
+
elsif !params[:error].nil?
|
17
|
+
redirect settings.error_uri
|
18
|
+
elsif !params[:code].nil?
|
19
|
+
if authorize(params[:code])
|
20
|
+
redirect settings.logined_uri
|
21
|
+
else
|
22
|
+
redirect settings.error_uri
|
23
|
+
end
|
24
|
+
else
|
25
|
+
redirect get_authentication_url
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
data/lib/version.rb
ADDED
data/slack_oauth.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'slack_oauth'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "slack_oauth"
|
8
|
+
spec.version = SlackOauth::VERSION
|
9
|
+
spec.authors = ["m0cchi"]
|
10
|
+
spec.email = ["boom.boom.planet@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Slack OAuth driver.}
|
13
|
+
spec.description = %q{Slack OAuth driver.}
|
14
|
+
spec.homepage = "https://github.com/m0cchi/slack_oauth"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
|
19
|
+
spec.add_dependency "sinatra"
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
21
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
22
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: slack_oauth
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- m0cchi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sinatra
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.12'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.12'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
description: Slack OAuth driver.
|
70
|
+
email:
|
71
|
+
- boom.boom.planet@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- Gemfile
|
77
|
+
- lib/helper.rb
|
78
|
+
- lib/slack_oauth.rb
|
79
|
+
- lib/version.rb
|
80
|
+
- slack_oauth.gemspec
|
81
|
+
homepage: https://github.com/m0cchi/slack_oauth
|
82
|
+
licenses: []
|
83
|
+
metadata: {}
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options: []
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
requirements: []
|
99
|
+
rubyforge_project:
|
100
|
+
rubygems_version: 2.6.4
|
101
|
+
signing_key:
|
102
|
+
specification_version: 4
|
103
|
+
summary: Slack OAuth driver.
|
104
|
+
test_files: []
|