omniauth-microsoft-office365 0.0.7 → 0.0.8

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: fd622f841b717635405a31b2ca3817b2e5eef5e1
4
- data.tar.gz: 57bb2bf5a24c69db93c36563576593fade0ac646
3
+ metadata.gz: 9f1593595f1128cc3961d2e8a41f7e5c7c8b527d
4
+ data.tar.gz: 148bd4e0ad5ca323afc732f8399a78823c6613fe
5
5
  SHA512:
6
- metadata.gz: e059ee9e2289c6949b368bc8cf14c45b0f0eb85fa1da5cf477b4b742e465b58922b3f7336013e80849c3c037d63680cbd5318458c64cf5370650d81d2ca08f8b
7
- data.tar.gz: 095233d9948ed4bc1bee1a8b93d9a869ab34e5a688e85c3edff14f96bc688baa12e29059abf6541d9817e5beda7a4a8b81a2730178a630c57f12c7185725f09d
6
+ metadata.gz: ae2328eee7df00e7d9b78a79c15f8820c35a091b2debf517e644059d21176b917d259b68bacd04c431068ae44da6d2a280aa9ef5089d9ea1afcdcf45dbc87a5a
7
+ data.tar.gz: e730a417f25b83aa3bf40af0533c1a78d564a3a81f638c9e5d55a7bb3bf2f81393fc01d46596a7f712f79a4db729fe1c23d6cf5ff919e847deaf85c07687c85d
@@ -1 +1 @@
1
- ruby-2.3.0-preview1
1
+ ruby-2.3.5
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module MicrosoftOffice365
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
@@ -5,7 +5,7 @@ module OmniAuth
5
5
  class MicrosoftOffice365 < OmniAuth::Strategies::OAuth2
6
6
  option :name, :microsoft_office365
7
7
 
8
- DEFAULT_SCOPE="openid email profile https://outlook.office.com/contacts.read"
8
+ DEFAULT_SCOPE="openid User.Read Contacts.Read"
9
9
 
10
10
  option :client_options, {
11
11
  site: "https://login.microsoftonline.com",
@@ -13,18 +13,21 @@ module OmniAuth
13
13
  token_url: "/common/oauth2/v2.0/token"
14
14
  }
15
15
 
16
- option :authorize_options, [:scope]
16
+ option :authorize_options, %w[scope domain_hint]
17
17
 
18
- uid { raw_info["Id"] }
18
+ uid { raw_info["id"] }
19
19
 
20
20
  info do
21
21
  {
22
- email: raw_info["EmailAddress"],
23
- display_name: raw_info["DisplayName"],
24
- first_name: first_last_from_display_name(raw_info["DisplayName"])[0],
25
- last_name: first_last_from_display_name(raw_info["DisplayName"])[1],
26
- image: avatar_file,
27
- alias: raw_info["Alias"]
22
+ email: raw_info["mail"] || raw_info["userPrincipalName"],
23
+ display_name: raw_info["displayName"],
24
+ first_name: raw_info["givenName"],
25
+ last_name: raw_info["surname"],
26
+ job_title: raw_info["jobTitle"],
27
+ business_phones: raw_info["businessPhones"],
28
+ mobile_phone: raw_info["mobilePhone"],
29
+ office_phone: raw_info["officePhone"],
30
+ image: avatar_file,
28
31
  }
29
32
  end
30
33
 
@@ -35,12 +38,12 @@ module OmniAuth
35
38
  end
36
39
 
37
40
  def raw_info
38
- @raw_info ||= access_token.get("https://outlook.office.com/api/v2.0/me/").parsed
41
+ @raw_info ||= access_token.get("https://graph.microsoft.com/v1.0/me").parsed
39
42
  end
40
43
 
41
44
  def authorize_params
42
45
  super.tap do |params|
43
- %w[display scope auth_type].each do |v|
46
+ %w[display domain_hint scope auth_type].each do |v|
44
47
  if request.params[v]
45
48
  params[v.to_sym] = request.params[v]
46
49
  end
@@ -52,21 +55,12 @@ module OmniAuth
52
55
 
53
56
  private
54
57
 
55
- def first_last_from_display_name(display_name)
56
- # For display names with last name first like "Del Toro, Benicio"
57
- if last_first = display_name.match(/^([^,]+),\s+(\S+)$/)
58
- [last_first[2], last_first[1]]
59
- else
60
- display_name.split(/\s+/, 2)
61
- end
62
- end
63
-
64
58
  def callback_url
65
59
  options[:redirect_uri] || (full_host + script_name + callback_path)
66
60
  end
67
61
 
68
62
  def avatar_file
69
- photo = access_token.get("https://outlook.office.com/api/v2.0/me/photo/$value")
63
+ photo = access_token.get("https://graph.microsoft.com/v1.0/me/photo/$value")
70
64
  ext = photo.content_type.sub("image/", "") # "image/jpeg" => "jpeg"
71
65
 
72
66
  Tempfile.new(["avatar", ".#{ext}"]).tap do |file|
@@ -78,7 +78,7 @@ RSpec.describe OmniAuth::Strategies::MicrosoftOffice365 do
78
78
 
79
79
  it "uses correct scope and allows to customize authorization parameters" do
80
80
  expect(strategy.authorize_params).to match(
81
- "scope" => "openid email profile https://outlook.office.com/contacts.read",
81
+ "scope" => "openid User.Read Contacts.Read",
82
82
  "foo" => "bar",
83
83
  "baz" => "zip",
84
84
  "state" => /\A\h{48}\z/
@@ -89,18 +89,22 @@ RSpec.describe OmniAuth::Strategies::MicrosoftOffice365 do
89
89
  describe "#info" do
90
90
  let(:profile_response) do
91
91
  instance_double(OAuth2::Response, parsed: {
92
- "@odata.context" => "https://outlook.office.com/api/v2.0/$metadata#Me",
93
- "@odata.id" => "https://outlook.office.com/api/v2.0/Users('XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX@XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX')",
94
- "Id" => "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX@XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
95
- "EmailAddress" => "luke.skywalker@example.com",
96
- "DisplayName" => "Skywalker, Luke",
97
- "Alias" => "luke.skywalker",
98
- "MailboxGuid" => "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
92
+ "@odata.context" => "https://outlook.office.com/api/v2.0/$metadata#Me",
93
+ "@odata.id" => "https://outlook.office.com/api/v2.0/Users('XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX@XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX')",
94
+ "id" => "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX@XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
95
+ "mail" => "luke.skywalker@example.com",
96
+ "displayName" => "Luke Skywalker",
97
+ "givenName" => "Luke",
98
+ "surname" => "Skywalker",
99
+ "jobTitle" => "Jedi Master",
100
+ "businessPhones" => ['555-555-5555'],
101
+ "mobilePhone" => '555-555-5556',
102
+ "MailboxGuid" => "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
99
103
  })
100
104
  end
101
105
 
102
106
  before do
103
- expect(access_token).to receive(:get).with("https://outlook.office.com/api/v2.0/me/")
107
+ expect(access_token).to receive(:get).with("https://graph.microsoft.com/v1.0/me")
104
108
  .and_return(profile_response)
105
109
  end
106
110
 
@@ -108,17 +112,20 @@ RSpec.describe OmniAuth::Strategies::MicrosoftOffice365 do
108
112
  let(:avatar_response) { instance_double(OAuth2::Response, content_type: "image/jpeg", body: "JPEG_STREAM") }
109
113
 
110
114
  before do
111
- expect(access_token).to receive(:get).with("https://outlook.office.com/api/v2.0/me/photo/$value")
115
+ expect(access_token).to receive(:get).with("https://graph.microsoft.com/v1.0/me/photo/$value")
112
116
  .and_return(avatar_response)
113
117
  end
114
118
 
115
119
  it "returns a hash containing normalized user data" do
116
120
  expect(strategy.info).to match({
117
- alias: "luke.skywalker",
118
- display_name: "Skywalker, Luke",
121
+ display_name: "Luke Skywalker",
119
122
  email: "luke.skywalker@example.com",
120
123
  first_name: "Luke",
121
124
  last_name: "Skywalker",
125
+ job_title: "Jedi Master",
126
+ business_phones: ['555-555-5555'],
127
+ mobile_phone: '555-555-5556',
128
+ office_phone: nil,
122
129
  image: Tempfile,
123
130
  })
124
131
  end
@@ -131,53 +138,24 @@ RSpec.describe OmniAuth::Strategies::MicrosoftOffice365 do
131
138
  end
132
139
  end
133
140
 
134
- context "when the name is in alternate format" do
135
- let(:avatar_response) { instance_double(OAuth2::Response, content_type: "image/jpeg", body: "JPEG_STREAM") }
136
-
137
- before do
138
- expect(access_token).to receive(:get).with("https://outlook.office.com/api/v2.0/me/photo/$value")
139
- .and_return(avatar_response)
140
- end
141
-
142
- let(:profile_response) do
143
- instance_double(OAuth2::Response, parsed: {
144
- "@odata.context" => "https://outlook.office.com/api/v2.0/$metadata#Me",
145
- "@odata.id" => "https://outlook.office.com/api/v2.0/Users('XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX@XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX')",
146
- "Id" => "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX@XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
147
- "EmailAddress" => "luke.skywalker@example.com",
148
- "DisplayName" => "Luke Skywalker",
149
- "Alias" => "luke.skywalker",
150
- "MailboxGuid" => "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
151
- })
152
- end
153
-
154
- it "returns the parsed first and last name correctly" do
155
- expect(strategy.info).to match({
156
- alias: "luke.skywalker",
157
- display_name: "Luke Skywalker",
158
- email: "luke.skywalker@example.com",
159
- first_name: "Luke",
160
- last_name: "Skywalker",
161
- image: Tempfile,
162
- })
163
- end
164
- end
165
-
166
141
  context "when user didn't provide avatar image" do
167
142
  let(:avatar_response) { instance_double(OAuth2::Response, "error=" => nil, status: 404, parsed: {}, body: '') }
168
143
 
169
144
  before do
170
- expect(access_token).to receive(:get).with("https://outlook.office.com/api/v2.0/me/photo/$value")
145
+ expect(access_token).to receive(:get).with("https://graph.microsoft.com/v1.0/me/photo/$value")
171
146
  .and_raise(OAuth2::Error, avatar_response)
172
147
  end
173
148
 
174
149
  it "returns a hash containing normalized user data" do
175
150
  expect(strategy.info).to match({
176
- alias: "luke.skywalker",
177
- display_name: "Skywalker, Luke",
151
+ display_name: "Luke Skywalker",
178
152
  email: "luke.skywalker@example.com",
179
153
  first_name: "Luke",
180
154
  last_name: "Skywalker",
155
+ job_title: "Jedi Master",
156
+ business_phones: ['555-555-5555'],
157
+ mobile_phone: '555-555-5556',
158
+ office_phone: nil,
181
159
  image: nil,
182
160
  })
183
161
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-microsoft-office365
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Urbański
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-16 00:00:00.000000000 Z
11
+ date: 2019-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  version: '0'
137
137
  requirements: []
138
138
  rubyforge_project:
139
- rubygems_version: 2.5.0
139
+ rubygems_version: 2.5.2.1
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: OmniAuth provider for Microsoft Office365