omniauth-apple 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of omniauth-apple might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7998a38a969afb6c44b52111e0ce267a2f64e39c8e1059c7a3b2d4804c2ac5c
4
- data.tar.gz: e151d17ba689527597adf1a7ce5c152c005e3dd3c51865dd0b297aeffeb56e5b
3
+ metadata.gz: c485aae891ca049ae67179446bce1b1ec65386a9b7cbfdd965b7fde65fa688eb
4
+ data.tar.gz: ebbc624c1ebd90025579dc882c39717f65b7a1cc48cb81ac9e4557c6fd67d30b
5
5
  SHA512:
6
- metadata.gz: ea94526792b55a24852ea3e2a637a44f9565c59399707dcef0079358f03e71311f90d274f2390f18b80593c113ad5dd9adb16a0c34d9ac16fb9a60e6bb0b09e2
7
- data.tar.gz: 152441ec7c484bf1ee451113e65e94f3d8427e18418a75c2013cedd61ed22ffb9043f52246b73d141c562d0774f63db1bafe2f04bc0a9822bfebaae892ce1463
6
+ metadata.gz: 77ac0078fd69ce3038de8e8096581364bc71d739cbba2ac2669a8ae64fa0d3612edbba1e066831625dee3f330eea83e18b7eb1e7778d0f5829a9f15459460ffe
7
+ data.tar.gz: a0f3692d3d130cf18f82941a93ca2bf925c909c58d8bc105791f3b9f2ea22f768ca61c23059d504f7d348751336b383001b51a24f58ddfd707c82fda174e8392
data/.gitignore CHANGED
@@ -42,9 +42,10 @@ build-iPhoneSimulator/
42
42
 
43
43
  # for a library or gem, you might want to ignore these files since the code is
44
44
  # intended to run in multiple environments; otherwise, check them in:
45
- # Gemfile.lock
46
- # .ruby-version
45
+ Gemfile.lock
46
+ .ruby-version
47
47
  # .ruby-gemset
48
48
 
49
49
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
50
50
  .rvmrc
51
+ .idea
data/README.md CHANGED
@@ -7,7 +7,7 @@ OmniAuth strategy for [Sign In with Apple](https://developer.apple.com/sign-in-w
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem 'omniauth-apple' github: 'nhosoya/omniauth-apple', branch: master
10
+ gem 'omniauth-apple', github: 'nhosoya/omniauth-apple', branch: 'master'
11
11
  ```
12
12
 
13
13
  And then execute:
@@ -22,9 +22,12 @@ Or install it yourself as:
22
22
 
23
23
  ```ruby
24
24
  Rails.application.config.middleware.use OmniAuth::Builder do
25
- provider :apple, ENV['CLIENT_ID'], ENV['TEAM_ID'], ENV['KEY_ID'], ENV['PRIVATE_KEY'],
25
+ provider :apple, ENV['CLIENT_ID'], '',
26
26
  {
27
27
  scope: 'email name',
28
+ team_id: ENV['TEAM_ID'],
29
+ key_id: ENV['KEY_ID'],
30
+ pem: ENV['PRIVATE_KEY']
28
31
  }
29
32
  end
30
33
  ```
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module Apple
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'omniauth/apple/version'
4
+ require 'omniauth/strategies/apple'
@@ -1,23 +1,34 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'omniauth-oauth2'
2
4
 
3
5
  module OmniAuth
4
6
  module Strategies
5
7
  class Apple < OmniAuth::Strategies::OAuth2
6
-
7
- attr_reader :id_token
8
- args %i[client_id team_id key_id pem]
9
-
10
8
  option :name, 'apple'
11
- option :client_options, {
12
- site: 'https://appleid.apple.com',
13
- authorize_url: '/auth/authorize',
14
- token_url: '/auth/token',
15
- }
16
9
 
17
- uid { id_token['sub'] }
10
+ option :client_options,
11
+ site: 'https://appleid.apple.com',
12
+ authorize_url: '/auth/authorize',
13
+ token_url: '/auth/token'
14
+ option :authorize_params,
15
+ response_mode: 'form_post'
16
+
17
+ uid { id_info['sub'] }
18
18
 
19
19
  info do
20
- { sub: id_token['sub'] }
20
+ {
21
+ sub: id_info['sub'],
22
+ email: email,
23
+ first_name: first_name,
24
+ last_name: last_name
25
+ }
26
+ end
27
+
28
+ extra do
29
+ {
30
+ raw_info: id_info.merge(user_info)
31
+ }
21
32
  end
22
33
 
23
34
  def client
@@ -25,27 +36,47 @@ module OmniAuth
25
36
  end
26
37
 
27
38
  def callback_url
28
- full_host + script_name + callback_path
39
+ options[:redirect_uri] || (full_host + script_name + callback_path)
29
40
  end
30
41
 
31
- def build_access_token
32
- _access_token = super
33
- @id_token = ::JSON::JWT.decode(_access_token.params['id_token'], :skip_verification)
34
- _access_token
42
+ private
43
+
44
+ def id_info
45
+ id_token = request.params['id_token'] || access_token.params['id_token']
46
+ log(:info, "id_token: #{id_token}")
47
+ @id_info ||= ::JWT.decode(id_token, nil, false)[0] # payload after decoding
35
48
  end
36
49
 
37
- private
50
+ def user_info
51
+ return {} unless request.params['user'].present?
52
+
53
+ log(:info, "user_info: #{request.params['user']}")
54
+ @user_info ||= JSON.parse(request.params['user'])
55
+ end
56
+
57
+ def email
58
+ user_info['email'] || id_info['email']
59
+ end
60
+
61
+ def first_name
62
+ user_info.dig('name', 'firstName')
63
+ end
64
+
65
+ def last_name
66
+ user_info.dig('name', 'lastName')
67
+ end
38
68
 
39
69
  def client_secret
40
- jwt = ::JSON::JWT.new(
70
+ payload = {
41
71
  iss: options.team_id,
42
72
  aud: 'https://appleid.apple.com',
43
73
  sub: options.client_id,
44
- iat: Time.current,
45
- exp: 1.minutes.after
46
- )
47
- jwt.kid = options.key_id
48
- jwt.sign(private_key).to_s
74
+ iat: Time.now.to_i,
75
+ exp: Time.now.to_i + 60
76
+ }
77
+ headers = { kid: options.key_id }
78
+
79
+ ::JWT.encode(payload, private_key, 'ES256', headers)
49
80
  end
50
81
 
51
82
  def private_key
@@ -1,4 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'omniauth-apple/version'
4
- require 'omniauth/strategies/apple'
3
+ require 'omniauth/apple'
@@ -1,13 +1,13 @@
1
1
 
2
2
  lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "omniauth-apple/version"
4
+ require "omniauth/apple/version"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "omniauth-apple"
8
8
  spec.version = Omniauth::Apple::VERSION
9
- spec.authors = ["nhosoya"]
10
- spec.email = ["hnhnnhnh@gmail.com"]
9
+ spec.authors = ["nhosoya", "Fabian Jäger"]
10
+ spec.email = ["hnhnnhnh@gmail.com", "fabian@mailbutler.io"]
11
11
 
12
12
  spec.summary = %q{OmniAuth strategy for Sign In with Apple}
13
13
  spec.description = %q{OmniAuth strategy for Sign In with Apple}
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
37
37
  spec.require_paths = ["lib"]
38
38
 
39
39
  spec.add_dependency 'omniauth-oauth2'
40
+ spec.add_dependency 'jwt'
40
41
  spec.add_development_dependency "bundler", "~> 2.0"
41
42
  spec.add_development_dependency "rake", "~> 10.0"
42
43
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-apple
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - nhosoya
8
+ - Fabian Jäger
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2019-06-07 00:00:00.000000000 Z
12
+ date: 2020-01-16 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: omniauth-oauth2
@@ -24,6 +25,20 @@ dependencies:
24
25
  - - ">="
25
26
  - !ruby/object:Gem::Version
26
27
  version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: jwt
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
27
42
  - !ruby/object:Gem::Dependency
28
43
  name: bundler
29
44
  requirement: !ruby/object:Gem::Requirement
@@ -55,6 +70,7 @@ dependencies:
55
70
  description: OmniAuth strategy for Sign In with Apple
56
71
  email:
57
72
  - hnhnnhnh@gmail.com
73
+ - fabian@mailbutler.io
58
74
  executables: []
59
75
  extensions: []
60
76
  extra_rdoc_files: []
@@ -67,7 +83,8 @@ files:
67
83
  - bin/console
68
84
  - bin/setup
69
85
  - lib/omniauth-apple.rb
70
- - lib/omniauth-apple/version.rb
86
+ - lib/omniauth/apple.rb
87
+ - lib/omniauth/apple/version.rb
71
88
  - lib/omniauth/strategies/apple.rb
72
89
  - omniauth-apple.gemspec
73
90
  homepage: https://github.com/nhosoya/omniauth-apple
@@ -89,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
106
  - !ruby/object:Gem::Version
90
107
  version: '0'
91
108
  requirements: []
92
- rubygems_version: 3.0.3
109
+ rubygems_version: 3.1.2
93
110
  signing_key:
94
111
  specification_version: 4
95
112
  summary: OmniAuth strategy for Sign In with Apple