omniauth-heroku 0.4.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +29 -0
- data/.gitignore +17 -0
- data/.rspec +3 -0
- data/CHANGELOG.md +43 -0
- data/Gemfile +3 -0
- data/Gemfile-omniauth1 +5 -0
- data/Gemfile-omniauth2 +5 -0
- data/README.md +29 -7
- data/Rakefile +10 -0
- data/bin/rake +29 -0
- data/bin/rspec +29 -0
- data/lib/omniauth-heroku.rb +2 -1
- data/lib/omniauth/heroku/version.rb +7 -0
- data/lib/omniauth/strategies/heroku.rb +35 -27
- data/omniauth-heroku.gemspec +39 -0
- metadata +92 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e748c5250cbb5edbba46f40b0f38d4a8cf54cd5c266b6df4deaebc57637e9d1
|
4
|
+
data.tar.gz: 4a5af940242e0cfb0a51ba7d73983303264846bb9278839cabadaaa890cf0227
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a623e6356f151b83eb7e370f8039e51012c9a76adf17187fe279aff23c10744b03514c46195198fd6261b9bcc206639ab7a15ea48875f6c06b300e3d8c72e45c
|
7
|
+
data.tar.gz: 61a1c1b3114cbf737de9de020572c98db82d3c29a180e0b135f3188ec6938123dc29766685475eff28e833d4d58ae600435411392b0a84579396757edccf5e19
|
@@ -0,0 +1,29 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
test:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
|
9
|
+
strategy:
|
10
|
+
fail-fast: false
|
11
|
+
matrix:
|
12
|
+
ruby: [ 2.3, 2.4, 2.5, 2.6, 2.7, 3.0 ]
|
13
|
+
gemfile: ["omniauth1", "omniauth2"]
|
14
|
+
|
15
|
+
env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
|
16
|
+
BUNDLE_GEMFILE: Gemfile-${{ matrix.gemfile }}
|
17
|
+
|
18
|
+
steps:
|
19
|
+
- uses: actions/checkout@v2
|
20
|
+
|
21
|
+
- name: Setup Ruby
|
22
|
+
uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
ruby-version: ${{ matrix.ruby }}
|
25
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
26
|
+
|
27
|
+
- name: Build and test
|
28
|
+
run: bin/rspec
|
29
|
+
|
data/.gitignore
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Ignore all logfiles and tempfiles
|
2
|
+
/coverage/
|
3
|
+
/log/
|
4
|
+
/spec/reports
|
5
|
+
/spec/rspec-status.txt
|
6
|
+
/tmp/
|
7
|
+
/tags
|
8
|
+
|
9
|
+
# Package and dependency caches
|
10
|
+
/.bundle
|
11
|
+
/Gemfile.lock
|
12
|
+
/pkg/
|
13
|
+
|
14
|
+
# Generated documentation
|
15
|
+
/doc/
|
16
|
+
/.yardoc
|
17
|
+
/_yardoc/
|
data/.rspec
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
5
|
+
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
|
+
|
7
|
+
## [Unreleased]
|
8
|
+
|
9
|
+
## [1.0.0] 2021-07-14
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
|
13
|
+
- Support `omniauth` versions `>= 1.9` but `< 3`.
|
14
|
+
i.e., support version `2` which addresses some CVEs.
|
15
|
+
- Standardize syntax and style via [Standard.rb](https://github.com/testdouble/standard)
|
16
|
+
|
17
|
+
### Breaking
|
18
|
+
|
19
|
+
- Loosen `omniauth-oauth2` requirement to allow `>= 1.7.0`.
|
20
|
+
With this change, blocks give to dynamically determine the `:scope` argument will be passed the Rack `env`, rather than an instance of the `Rack::Request`.
|
21
|
+
See the [Upgrading to 1.0 docs](README.md#upgrading-to-10) for more.
|
22
|
+
- Remove `AuthUrl` and `ApiUrl` constants from `OmniAuth::Strategies::Heroku`.
|
23
|
+
These were internal details, not meant to be part of the public API.
|
24
|
+
- Require Ruby `>= 2.3.0`.
|
25
|
+
We were only supporting that anyway, but now it's explicit.
|
26
|
+
However, we do recommend only running on [actively supported Rubies](https://www.ruby-lang.org/en/downloads/branches/).
|
27
|
+
|
28
|
+
## [0.4.1] 2021-07-06
|
29
|
+
|
30
|
+
### Changed
|
31
|
+
- Lock to `omniauth-oauth2 ~> 1.6.0` to fix regression in dynamic `:scope` option.
|
32
|
+
With `omniauth-oauth2 >= 1.7.0`, the block is passed the Rack `env` as the parameter.
|
33
|
+
This breaks our expectation the will receive a `Rack::Request` instance as the argument to dynamically determine the `:scope` option.
|
34
|
+
i.e., this broken:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
use OmniAuth::Builder do
|
38
|
+
provider :heroku, ENV.fetch("HEROKU_OAUTH_ID"), ENV.fetch("HEROKU_OAUTH_SECRET"),
|
39
|
+
scope: ->(request) { request.params["scope"] || "identity" }
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
See [PR #22](https://github.com/heroku/omniauth-heroku/pull/22) for more context, workaround, etc...
|
data/Gemfile
ADDED
data/Gemfile-omniauth1
ADDED
data/Gemfile-omniauth2
ADDED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# OmniAuth Heroku
|
2
2
|
|
3
3
|
[![Build Status](https://github.com/heroku/omniauth-heroku/actions/workflows/ci.yml/badge.svg)](https://github.com/heroku/omniauth-heroku/actions)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/omniauth-heroku.svg)](https://badge.fury.io/rb/omniauth-heroku)
|
4
5
|
|
5
6
|
[OmniAuth](https://github.com/intridea/omniauth) strategy for authenticating
|
6
7
|
Heroku users.
|
@@ -89,20 +90,41 @@ use OmniAuth::Builder do
|
|
89
90
|
end
|
90
91
|
```
|
91
92
|
|
92
|
-
This will trim down the permissions associated to the access token given back
|
93
|
-
to you.
|
93
|
+
This will trim down the permissions associated to the access token given back to you.
|
94
94
|
|
95
|
-
The
|
96
|
-
could use a `scope`
|
97
|
-
if it does not:
|
95
|
+
The OAuth scope can also be decided dynamically at runtime.
|
96
|
+
For example, you could use a `scope` parameter from the request, if it exists, with a default value if it does not:
|
98
97
|
|
99
98
|
```ruby
|
100
99
|
use OmniAuth::Builder do
|
101
100
|
provider :heroku, ENV.fetch("HEROKU_OAUTH_ID"), ENV.fetch("HEROKU_OAUTH_SECRET"),
|
102
|
-
scope: ->(
|
101
|
+
scope: ->(env) { Rack::Request.new(env).params["scope"] || "identity" }
|
103
102
|
end
|
104
103
|
```
|
105
104
|
|
105
|
+
#### Upgrading to 1.0+
|
106
|
+
|
107
|
+
Versions before `1.0` allowed you to pass `:scope` option as a block, just as today.
|
108
|
+
However, that block received a `Rack::Request` instance, rather than the `Rack` `env`.
|
109
|
+
If you used the `Rack::Request` argument in your `:scope` block you can update your code to create a new instance, from the `env`.
|
110
|
+
|
111
|
+
For example, `< 1.0` code that looked like this:
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
use OmniAuth::Builder do
|
115
|
+
provider :heroku, ENV.fetch("HEROKU_OAUTH_ID"), ENV.fetch("HEROKU_OAUTH_SECRET"),
|
116
|
+
scope: ->(request) { request.params["scope"] }
|
117
|
+
end
|
118
|
+
```
|
119
|
+
|
120
|
+
need to be updated to something like this:
|
121
|
+
|
122
|
+
```ruby
|
123
|
+
use OmniAuth::Builder do
|
124
|
+
provider :heroku, ENV.fetch("HEROKU_OAUTH_ID"), ENV.fetch("HEROKU_OAUTH_SECRET"),
|
125
|
+
scope: ->(env) { Rack::Request.new(env).params["scope"] }
|
126
|
+
end
|
127
|
+
```
|
106
128
|
|
107
129
|
## Example - Sinatra
|
108
130
|
|
@@ -162,7 +184,7 @@ class SessionsController < ApplicationController
|
|
162
184
|
end
|
163
185
|
|
164
186
|
def create
|
165
|
-
access_token = request.env[
|
187
|
+
access_token = request.env["omniauth.auth"]["credentials"]["token"]
|
166
188
|
# DO NOT store this token in an unencrypted cookie session
|
167
189
|
# Please read "A note on security" below!
|
168
190
|
heroku = PlatformAPI.connect_oauth(access_token)
|
data/Rakefile
ADDED
data/bin/rake
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/rspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rspec-core", "rspec")
|
data/lib/omniauth-heroku.rb
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
require
|
1
|
+
require "omniauth/heroku/version"
|
2
|
+
require "omniauth/strategies/heroku"
|
@@ -1,20 +1,25 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "omniauth-oauth2"
|
2
4
|
|
3
5
|
module OmniAuth
|
4
6
|
module Strategies
|
5
7
|
class Heroku < OmniAuth::Strategies::OAuth2
|
6
|
-
|
7
|
-
|
8
|
+
# This style of overriding the default means it can only be done when the class is loaded.
|
9
|
+
# Which is problematic for testing, and a bit against the grain of how the base class
|
10
|
+
# expects this to work, where consumers would explicitly override by passing in the option.
|
11
|
+
AUTH_URL = ENV.fetch("HEROKU_AUTH_URL", "https://id.heroku.com")
|
12
|
+
private_constant :AUTH_URL
|
8
13
|
|
9
|
-
option
|
10
|
-
site:
|
11
|
-
authorize_url: "#{
|
12
|
-
token_url:
|
13
|
-
}
|
14
|
+
option(:client_options, {
|
15
|
+
site: AUTH_URL,
|
16
|
+
authorize_url: "#{AUTH_URL}/oauth/authorize",
|
17
|
+
token_url: "#{AUTH_URL}/oauth/token"
|
18
|
+
})
|
14
19
|
|
15
|
-
# whether we
|
20
|
+
# Configure whether we make another API call to Heroku to fetch
|
16
21
|
# additional account info like the real user name and email
|
17
|
-
option :fetch_info
|
22
|
+
option :fetch_info, false
|
18
23
|
|
19
24
|
uid do
|
20
25
|
access_token.params["user_id"]
|
@@ -22,17 +27,16 @@ module OmniAuth
|
|
22
27
|
|
23
28
|
info do
|
24
29
|
if options.fetch_info
|
25
|
-
email_hash
|
26
|
-
|
27
|
-
image_url = "https://secure.gravatar.com/avatar/#{email_hash}.png?d=#{default_image_url}"
|
30
|
+
email_hash = Digest::MD5.hexdigest(account_info["email"].to_s)
|
31
|
+
image_url = "https://secure.gravatar.com/avatar/#{email_hash}.png?d=#{DEFAULT_IMAGE_URL}"
|
28
32
|
|
29
33
|
{
|
30
|
-
name:
|
34
|
+
name: account_info["name"],
|
31
35
|
email: account_info["email"],
|
32
|
-
image: image_url
|
36
|
+
image: image_url
|
33
37
|
}
|
34
38
|
else
|
35
|
-
{
|
39
|
+
{name: "Heroku user"} # only mandatory field
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
@@ -56,26 +60,30 @@ module OmniAuth
|
|
56
60
|
end
|
57
61
|
end
|
58
62
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
end
|
63
|
+
private
|
64
|
+
|
65
|
+
DEFAULT_API_URL = "https://api.heroku.com"
|
66
|
+
private_constant :DEFAULT_API_URL
|
67
|
+
|
68
|
+
DEFAULT_IMAGE_URL = "https://dashboard.heroku.com/ninja-avatar-48x48.png"
|
69
|
+
private_constant :DEFAULT_IMAGE_URL
|
67
70
|
|
68
71
|
def account_info
|
69
72
|
@account_info ||= MultiJson.decode(heroku_api.get("/account").body)
|
70
73
|
end
|
71
74
|
|
75
|
+
def api_url
|
76
|
+
@api_url ||= ENV.fetch("HEROKU_API_URL", DEFAULT_API_URL)
|
77
|
+
end
|
78
|
+
|
72
79
|
def heroku_api
|
73
80
|
@heroku_api ||= Faraday.new(
|
74
|
-
url:
|
81
|
+
url: api_url,
|
75
82
|
headers: {
|
76
83
|
"Accept" => "application/vnd.heroku+json; version=3",
|
77
|
-
"Authorization" => "Bearer #{access_token.token}"
|
78
|
-
}
|
84
|
+
"Authorization" => "Bearer #{access_token.token}"
|
85
|
+
}
|
86
|
+
)
|
79
87
|
end
|
80
88
|
|
81
89
|
def missing_client_id?
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path("lib/omniauth/heroku/version", __dir__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "omniauth-heroku"
|
5
|
+
spec.version = OmniAuth::Heroku::VERSION
|
6
|
+
spec.authors = ["Pedro Belo"]
|
7
|
+
spec.email = ["pedro@heroku.com"]
|
8
|
+
|
9
|
+
spec.summary = "OmniAuth strategy for Heroku."
|
10
|
+
spec.description = "OmniAuth strategy for Heroku, for apps already using OmniAuth that authenticate against more than one service (eg: Heroku and GitHub), or apps that have specific needs on session management."
|
11
|
+
spec.homepage = "https://github.com/heroku/omniauth-heroku"
|
12
|
+
spec.license = "MIT"
|
13
|
+
|
14
|
+
spec.metadata = {
|
15
|
+
"homepage_uri" => spec.homepage,
|
16
|
+
"source_code_uri" => spec.homepage,
|
17
|
+
"bug_tracker_uri" => "#{spec.homepage}/issues",
|
18
|
+
"changelog_uri" => "#{spec.homepage}/blob/master/CHANGELOG.md"
|
19
|
+
}
|
20
|
+
|
21
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
22
|
+
|
23
|
+
# Specify which files should be added to the gem when it is released.
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
25
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
27
|
+
end
|
28
|
+
spec.bindir = "exe"
|
29
|
+
spec.executables = []
|
30
|
+
spec.require_paths = ["lib"]
|
31
|
+
|
32
|
+
spec.add_runtime_dependency("omniauth", [">= 1.9", "< 3"])
|
33
|
+
spec.add_runtime_dependency("omniauth-oauth2", "~> 1.7")
|
34
|
+
|
35
|
+
spec.add_development_dependency("multi_json", "~> 1.12")
|
36
|
+
spec.add_development_dependency("rake", "~> 13.0")
|
37
|
+
spec.add_development_dependency("rspec", "~> 3.4")
|
38
|
+
spec.add_development_dependency("webmock", "~> 3.13")
|
39
|
+
end
|
metadata
CHANGED
@@ -1,58 +1,138 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-heroku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Belo
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-07-
|
11
|
+
date: 2021-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.9'
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: '3'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.9
|
29
|
+
version: '1.9'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: omniauth-oauth2
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
39
|
+
version: '1.7'
|
34
40
|
type: :runtime
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
44
|
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
41
|
-
|
46
|
+
version: '1.7'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: multi_json
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.12'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.12'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rake
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '13.0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '13.0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rspec
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '3.4'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '3.4'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: webmock
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '3.13'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '3.13'
|
103
|
+
description: 'OmniAuth strategy for Heroku, for apps already using OmniAuth that authenticate
|
104
|
+
against more than one service (eg: Heroku and GitHub), or apps that have specific
|
105
|
+
needs on session management.'
|
42
106
|
email:
|
43
107
|
- pedro@heroku.com
|
44
108
|
executables: []
|
45
109
|
extensions: []
|
46
110
|
extra_rdoc_files: []
|
47
111
|
files:
|
112
|
+
- ".github/workflows/ci.yml"
|
113
|
+
- ".gitignore"
|
114
|
+
- ".rspec"
|
115
|
+
- CHANGELOG.md
|
116
|
+
- Gemfile
|
117
|
+
- Gemfile-omniauth1
|
118
|
+
- Gemfile-omniauth2
|
48
119
|
- LICENSE
|
49
120
|
- README.md
|
121
|
+
- Rakefile
|
122
|
+
- bin/rake
|
123
|
+
- bin/rspec
|
50
124
|
- lib/omniauth-heroku.rb
|
125
|
+
- lib/omniauth/heroku/version.rb
|
51
126
|
- lib/omniauth/strategies/heroku.rb
|
127
|
+
- omniauth-heroku.gemspec
|
52
128
|
homepage: https://github.com/heroku/omniauth-heroku
|
53
129
|
licenses:
|
54
130
|
- MIT
|
55
|
-
metadata:
|
131
|
+
metadata:
|
132
|
+
homepage_uri: https://github.com/heroku/omniauth-heroku
|
133
|
+
source_code_uri: https://github.com/heroku/omniauth-heroku
|
134
|
+
bug_tracker_uri: https://github.com/heroku/omniauth-heroku/issues
|
135
|
+
changelog_uri: https://github.com/heroku/omniauth-heroku/blob/master/CHANGELOG.md
|
56
136
|
post_install_message:
|
57
137
|
rdoc_options: []
|
58
138
|
require_paths:
|
@@ -61,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
61
141
|
requirements:
|
62
142
|
- - ">="
|
63
143
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
144
|
+
version: 2.3.0
|
65
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
146
|
requirements:
|
67
147
|
- - ">="
|