glogin 0.14.0 → 0.14.1
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 +4 -4
- data/Gemfile +1 -1
- data/lib/glogin/auth.rb +2 -2
- data/lib/glogin/cookie.rb +27 -5
- data/lib/glogin/version.rb +1 -1
- data/test/glogin/test_cookie.rb +4 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43ce4ccebe57a06bb860c407b9e96dc939932f952aa2a6c4951a64f79a5f34c7
|
4
|
+
data.tar.gz: 65854ae4920a4ff27bd67bcf7cf34d8222be36398639bd82b013fa73b94700a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c36870984ff3f36eb946b5bbb5273bc4f3633332651bd180196d1b172c7782248583285a0e3c9ae499205d45b6a45bb6e19910b7fb6ca8a455b0b2af8934c457
|
7
|
+
data.tar.gz: 456ef6a6e5329d490d2195c58d3c8c007e23f6326f4535d362b04898451009926a5226baa384342b8dd889f6e00c17b8ef595d85e7a0e0fd5fa4a06c69324642
|
data/Gemfile
CHANGED
data/lib/glogin/auth.rb
CHANGED
@@ -56,9 +56,9 @@ module GLogin
|
|
56
56
|
if @secret.empty?
|
57
57
|
return {
|
58
58
|
'id' => 526_301,
|
59
|
-
'type' => 'User',
|
60
59
|
'login' => 'yegor256',
|
61
|
-
'avatar_url' => 'https://github.com/yegor256.png'
|
60
|
+
'avatar_url' => 'https://github.com/yegor256.png',
|
61
|
+
'bearer' => ''
|
62
62
|
}
|
63
63
|
end
|
64
64
|
raise 'Code can\'t be nil' if code.nil?
|
data/lib/glogin/cookie.rb
CHANGED
@@ -39,19 +39,29 @@ module GLogin
|
|
39
39
|
#
|
40
40
|
class Cookie
|
41
41
|
# Closed cookie.
|
42
|
+
#
|
43
|
+
# An instance of this class is created when a cookie arrives
|
44
|
+
# to the application. The cookie text is provided to the class
|
45
|
+
# as the first parameter. Then, when an instance of the class
|
46
|
+
# is created, the value encypted inside the cookie text may
|
47
|
+
# be retrieved through the +to_user+ method.
|
42
48
|
class Closed
|
43
49
|
def initialize(text, secret, context = '')
|
44
50
|
raise 'Text can\'t be nil' if text.nil?
|
45
51
|
@text = text
|
46
52
|
raise 'Secret can\'t be nil' if secret.nil?
|
47
53
|
@secret = secret
|
54
|
+
raise 'Context can\'t be nil' if context.nil?
|
48
55
|
@context = context.to_s
|
49
56
|
end
|
50
57
|
|
51
|
-
# Returns a hash with
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
58
|
+
# Returns a hash with four elements: `id`, `login`, `avatar`, and `bearer`.
|
59
|
+
#
|
60
|
+
# If the `secret` is empty, the text will not be decrypted, but used
|
61
|
+
# "as is". This may be helpful during testing.
|
62
|
+
#
|
63
|
+
# If the data is not valid, an exception
|
64
|
+
# `GLogin::Codec::DecodingError` will be raised, which you have
|
55
65
|
# to catch in your applicaiton and ignore the login attempt.
|
56
66
|
def to_user
|
57
67
|
plain = Codec.new(@secret).decrypt(@text)
|
@@ -68,12 +78,24 @@ module GLogin
|
|
68
78
|
|
69
79
|
# Open
|
70
80
|
class Open
|
71
|
-
# Here comes the JSON you receive from Auth.user()
|
81
|
+
# Here comes the JSON you receive from Auth.user().
|
82
|
+
#
|
83
|
+
# The JSON is a Hash where every key is a string. When the class is instantiated,
|
84
|
+
# its methods +id+, +login+, and +avatar_url+ may be used to retrieve
|
85
|
+
# the data inside the JSON, but this is not what this class is mainly about.
|
86
|
+
#
|
87
|
+
# The method +to_s+ returns an encrypted cookie string, that may be
|
88
|
+
# sent to the user as a +Set-Cookie+ HTTP header.
|
72
89
|
def initialize(json, secret, context = '')
|
73
90
|
raise 'JSON can\'t be nil' if json.nil?
|
91
|
+
raise 'JSON must contain "id" key' if json['id'].nil?
|
92
|
+
raise 'JSON must contain "login" key' if json['login'].nil?
|
93
|
+
raise 'JSON must contain "avatar_url" key' if json['avatar_url'].nil?
|
94
|
+
raise 'JSON must contain "bearer" key' if json['bearer'].nil?
|
74
95
|
@json = json
|
75
96
|
raise 'Secret can\'t be nil' if secret.nil?
|
76
97
|
@secret = secret
|
98
|
+
raise 'Context can\'t be nil' if context.nil?
|
77
99
|
@context = context.to_s
|
78
100
|
end
|
79
101
|
|
data/lib/glogin/version.rb
CHANGED
data/test/glogin/test_cookie.rb
CHANGED
@@ -31,7 +31,7 @@ class TestCookie < Minitest::Test
|
|
31
31
|
GLogin::Cookie::Open.new(
|
32
32
|
JSON.parse(
|
33
33
|
"{\"id\":\"123\",
|
34
|
-
\"login\":\"yegor256\",
|
34
|
+
\"login\":\"yegor256\",\"bearer\":\"\",
|
35
35
|
\"avatar_url\":\"https://avatars1.githubusercontent.com/u/526301\"}"
|
36
36
|
),
|
37
37
|
secret
|
@@ -47,7 +47,7 @@ class TestCookie < Minitest::Test
|
|
47
47
|
context = '127.0.0.1'
|
48
48
|
user = GLogin::Cookie::Closed.new(
|
49
49
|
GLogin::Cookie::Open.new(
|
50
|
-
JSON.parse('{"id":"123","login":"jeffrey","avatar_url":"#"}'),
|
50
|
+
JSON.parse('{"id":"123","login":"jeffrey","avatar_url":"#","bearer":""}'),
|
51
51
|
secret,
|
52
52
|
context
|
53
53
|
).to_s,
|
@@ -81,7 +81,7 @@ class TestCookie < Minitest::Test
|
|
81
81
|
assert_raises GLogin::Codec::DecodingError do
|
82
82
|
GLogin::Cookie::Closed.new(
|
83
83
|
GLogin::Cookie::Open.new(
|
84
|
-
JSON.parse('{"login":"x","avatar_url":"x"}'),
|
84
|
+
JSON.parse('{"login":"x","avatar_url":"x","id":"1","bearer":""}'),
|
85
85
|
'secret-1'
|
86
86
|
).to_s,
|
87
87
|
'secret-2'
|
@@ -94,7 +94,7 @@ class TestCookie < Minitest::Test
|
|
94
94
|
assert_raises GLogin::Codec::DecodingError do
|
95
95
|
GLogin::Cookie::Closed.new(
|
96
96
|
GLogin::Cookie::Open.new(
|
97
|
-
JSON.parse('{"login":"x","avatar_url":"x"}'),
|
97
|
+
JSON.parse('{"login":"x","avatar_url":"x","id":"999","bearer":""}'),
|
98
98
|
secret,
|
99
99
|
'context-1'
|
100
100
|
).to_s,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glogin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: base58
|