omniauth-gitlab 1.0.1 → 3.0.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 +5 -5
- data/README.md +33 -6
- data/Rakefile +2 -2
- data/lib/omniauth-gitlab.rb +1 -1
- data/lib/omniauth-gitlab/version.rb +1 -1
- data/lib/omniauth/strategies/gitlab.rb +13 -11
- data/omniauth-gitlab.gemspec +7 -8
- data/spec/omniauth/strategies/gitlab_spec.rb +20 -16
- data/spec/spec_helper.rb +2 -12
- metadata +11 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9f47d5dde46b9dc356bd1ec717ba0b7dc87b49e188b84dcf1617d366709f390f
|
4
|
+
data.tar.gz: 6661be3cca493f7891e4663fead785e36639e121c4dde78b7b61de281dd3b08d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c25c70c310391102a0c594ab09b1122e2ca4d8d761a631a7460e04ecce9120bdaa17bc29c3cd40cfbc17b62936c85973c8a10e63d1f6c37d6bbc268175ef33f
|
7
|
+
data.tar.gz: 91165b4ffb9b274608f91a131c4514611536626384ed7ddcfe356bf4b0049bc8b4fb143b6cc159d974d1657a1e5f084d32b4985d215727c15d7d6f45ec12b449
|
data/README.md
CHANGED
@@ -31,12 +31,39 @@ Or install it yourself as:
|
|
31
31
|
## Standalone Usage
|
32
32
|
|
33
33
|
use OmniAuth::Builder do
|
34
|
-
provider :gitlab, ENV['GITLAB_KEY'], ENV['GITLAB_SECRET'],
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
provider :gitlab, ENV['GITLAB_KEY'], ENV['GITLAB_SECRET'],
|
35
|
+
{
|
36
|
+
client_options: {
|
37
|
+
site: 'https://gitlab.YOURDOMAIN.com/api/v4'
|
38
|
+
}
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
## Custom scopes
|
43
|
+
|
44
|
+
By default, the `api` scope is requested and must be allowed in GitLab's application configuration. To use different scopes:
|
45
|
+
|
46
|
+
use OmniAuth::Builder do
|
47
|
+
provider :gitlab, ENV['GITLAB_KEY'], ENV['GITLAB_SECRET'], scope: 'read_user openid'
|
48
|
+
end
|
49
|
+
|
50
|
+
Requesting a scope that is not configured will result the error "The requested scope is invalid, unknown, or malformed.".
|
51
|
+
|
52
|
+
## Old API version
|
53
|
+
|
54
|
+
API V3 will be unsupported from GitLab 9.5 and will be removed in GitLab 9.5 or later.
|
55
|
+
|
56
|
+
[https://gitlab.com/help/api/v3_to_v4.md](https://gitlab.com/help/api/v3_to_v4.md)
|
57
|
+
|
58
|
+
If you use GitLab 9.0 and below you could configure V3 API:
|
59
|
+
|
60
|
+
use OmniAuth::Builder do
|
61
|
+
provider :gitlab, ENV['GITLAB_KEY'], ENV['GITLAB_SECRET'],
|
62
|
+
{
|
63
|
+
client_options: {
|
64
|
+
site: 'https://gitlab.YOURDOMAIN.com/api/v3'
|
65
|
+
}
|
66
|
+
}
|
40
67
|
end
|
41
68
|
|
42
69
|
## Contributing
|
data/Rakefile
CHANGED
data/lib/omniauth-gitlab.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require
|
1
|
+
require 'omniauth-gitlab/version'
|
2
2
|
require 'omniauth/strategies/gitlab'
|
@@ -4,21 +4,18 @@ require 'omniauth-oauth2'
|
|
4
4
|
module OmniAuth
|
5
5
|
module Strategies
|
6
6
|
class GitLab < OmniAuth::Strategies::OAuth2
|
7
|
+
option :client_options, site: 'https://gitlab.com/api/v4'
|
7
8
|
|
8
|
-
option :
|
9
|
-
site: 'https://gitlab.com',
|
10
|
-
authorize_url: '/oauth/authorize',
|
11
|
-
token_url: '/oauth/token'
|
12
|
-
}
|
9
|
+
option :redirect_url
|
13
10
|
|
14
11
|
uid { raw_info['id'].to_s }
|
15
12
|
|
16
13
|
info do
|
17
14
|
{
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
name: raw_info['name'],
|
16
|
+
username: raw_info['username'],
|
17
|
+
email: raw_info['email'],
|
18
|
+
image: raw_info['avatar_url']
|
22
19
|
}
|
23
20
|
end
|
24
21
|
|
@@ -27,11 +24,16 @@ module OmniAuth
|
|
27
24
|
end
|
28
25
|
|
29
26
|
def raw_info
|
30
|
-
@raw_info ||= access_token.get('
|
27
|
+
@raw_info ||= access_token.get('user').parsed
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def callback_url
|
33
|
+
options.redirect_url || (full_host + script_name + callback_path)
|
31
34
|
end
|
32
35
|
end
|
33
36
|
end
|
34
37
|
end
|
35
38
|
|
36
|
-
|
37
39
|
OmniAuth.config.add_camelization 'gitlab', 'GitLab'
|
data/omniauth-gitlab.gemspec
CHANGED
@@ -6,22 +6,21 @@ require 'omniauth-gitlab/version'
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = 'omniauth-gitlab'
|
8
8
|
gem.version = Omniauth::Gitlab::VERSION
|
9
|
-
gem.authors = ['
|
9
|
+
gem.authors = ['Sergey Sein']
|
10
10
|
gem.email = ['linchus@gmail.com']
|
11
|
-
gem.description =
|
12
|
-
gem.summary =
|
11
|
+
gem.description = 'This is the strategy for authenticating to your GitLab service'
|
12
|
+
gem.summary = 'This is the strategy for authenticating to your GitLab service'
|
13
13
|
gem.homepage = 'https://github.com/linchus/omniauth-gitlab'
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
16
|
-
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ['lib']
|
19
19
|
|
20
|
-
gem.add_dependency 'omniauth', '~>
|
21
|
-
gem.add_dependency 'omniauth-oauth2', '~> 1.
|
20
|
+
gem.add_dependency 'omniauth', '~> 2.0'
|
21
|
+
gem.add_dependency 'omniauth-oauth2', '~> 1.7.1'
|
22
22
|
gem.add_development_dependency 'rspec', '~> 3.1'
|
23
23
|
gem.add_development_dependency 'rspec-its', '~> 1.0'
|
24
|
-
gem.add_development_dependency 'rack-test'
|
25
24
|
gem.add_development_dependency 'simplecov'
|
26
|
-
gem.add_development_dependency '
|
25
|
+
gem.add_development_dependency 'rake', '>= 12.0'
|
27
26
|
end
|
@@ -1,23 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe OmniAuth::Strategies::GitLab do
|
4
|
-
|
5
4
|
let(:access_token) { double('AccessToken') }
|
6
5
|
let(:parsed_response) { double('ParsedResponse') }
|
7
6
|
let(:response) { double('Response', parsed: parsed_response) }
|
8
7
|
|
9
|
-
let(:enterprise_site)
|
10
|
-
let(:enterprise_authorize_url) { '/oauth/authorize' }
|
11
|
-
let(:enterprise_token_url) { '/oauth/access_token' }
|
8
|
+
let(:enterprise_site) { 'https://some.other.site.com/api/v3' }
|
12
9
|
|
13
10
|
let(:gitlab_service) { OmniAuth::Strategies::GitLab.new({}) }
|
14
11
|
let(:enterprise) do
|
15
|
-
OmniAuth::Strategies::GitLab.new(
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
}
|
12
|
+
OmniAuth::Strategies::GitLab.new(
|
13
|
+
'GITLAB_KEY',
|
14
|
+
'GITLAB_SECRET',
|
15
|
+
client_options: { site: enterprise_site },
|
16
|
+
redirect_url: 'http://localhost:9292/callback_url'
|
21
17
|
)
|
22
18
|
end
|
23
19
|
|
@@ -31,23 +27,31 @@ describe OmniAuth::Strategies::GitLab do
|
|
31
27
|
context 'with defaults' do
|
32
28
|
subject { gitlab_service.options.client_options }
|
33
29
|
|
34
|
-
its(:site) { is_expected.to eq 'https://gitlab.com' }
|
35
|
-
its(:authorize_url) { is_expected.to eq '/oauth/authorize' }
|
36
|
-
its(:token_url) { is_expected.to eq '/oauth/token' }
|
30
|
+
its(:site) { is_expected.to eq 'https://gitlab.com/api/v4' }
|
37
31
|
end
|
38
32
|
|
39
33
|
context 'with override' do
|
40
34
|
subject { enterprise.options.client_options }
|
41
35
|
|
42
36
|
its(:site) { is_expected.to eq enterprise_site }
|
43
|
-
|
44
|
-
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'redirect_url' do
|
41
|
+
context 'with defaults' do
|
42
|
+
subject { gitlab_service.options }
|
43
|
+
its(:redirect_url) { is_expected.to be_nil }
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'with customs' do
|
47
|
+
subject { enterprise.options }
|
48
|
+
its(:redirect_url) { is_expected.to eq 'http://localhost:9292/callback_url' }
|
45
49
|
end
|
46
50
|
end
|
47
51
|
|
48
52
|
describe '#raw_info' do
|
49
53
|
it 'sent request to current user endpoint' do
|
50
|
-
expect(access_token).to receive(:get).with('
|
54
|
+
expect(access_token).to receive(:get).with('user').and_return(response)
|
51
55
|
expect(subject.raw_info).to eq(parsed_response)
|
52
56
|
end
|
53
57
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,18 +1,8 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
$LOAD_PATH.unshift File.expand_path('..', __FILE__)
|
2
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
3
3
|
require 'simplecov'
|
4
4
|
SimpleCov.start
|
5
5
|
require 'rspec'
|
6
6
|
require 'rspec/its'
|
7
|
-
require 'rack/test'
|
8
|
-
require 'webmock/rspec'
|
9
7
|
require 'omniauth'
|
10
8
|
require 'omniauth-gitlab'
|
11
|
-
|
12
|
-
RSpec.configure do |config|
|
13
|
-
config.include WebMock::API
|
14
|
-
config.include Rack::Test::Methods
|
15
|
-
config.extend OmniAuth::Test::StrategyMacros, :type => :strategy
|
16
|
-
end
|
17
|
-
|
18
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-gitlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Sergey Sein
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: omniauth-oauth2
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.7.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.7.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rack-test
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: simplecov
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,19 +81,19 @@ dependencies:
|
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
84
|
+
name: rake
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - ">="
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
89
|
+
version: '12.0'
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - ">="
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
96
|
+
version: '12.0'
|
111
97
|
description: This is the strategy for authenticating to your GitLab service
|
112
98
|
email:
|
113
99
|
- linchus@gmail.com
|
@@ -146,12 +132,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
132
|
- !ruby/object:Gem::Version
|
147
133
|
version: '0'
|
148
134
|
requirements: []
|
149
|
-
|
150
|
-
rubygems_version: 2.2.2
|
135
|
+
rubygems_version: 3.0.3
|
151
136
|
signing_key:
|
152
137
|
specification_version: 4
|
153
138
|
summary: This is the strategy for authenticating to your GitLab service
|
154
139
|
test_files:
|
155
140
|
- spec/omniauth/strategies/gitlab_spec.rb
|
156
141
|
- spec/spec_helper.rb
|
157
|
-
has_rdoc:
|