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 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
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in slack_oauth.gemspec
4
+ gemspec
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
@@ -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
@@ -0,0 +1,3 @@
1
+ module SlackOauth
2
+ VERSION = "0.1.0"
3
+ end
@@ -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: []