foobara-auth 0.1.0 → 0.1.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/CHANGELOG.md +5 -0
- data/src/delete_api_key.rb +46 -0
- data/src/get_api_key_summaries.rb +30 -0
- data/src/types/api_key_summary.rb +14 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a40375ebe8e9f9689ea358e55c4e8e00122cd84c4ddcff9a44ad0fbdd9f8138
|
4
|
+
data.tar.gz: 0a79985c2914d66cff7fc4c0f8325757b3ff4863667bcc5f957cda868063d17d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65b59bfb16f16c5ffb8c03c795977031be02d5458c472571c2781ba6b3e3173a8397c09917781a29b8696f8c7f4f3c3992030d764586cfdfbd024db55c25657c
|
7
|
+
data.tar.gz: 7b887fc6f7cc7945fd04d65b4f43d31a6f5191004f775edb863e62adf9232f921de75c075173a5392e1842e917d94450db0cee3cf1fa5a9862f81e40db3db0eb
|
data/CHANGELOG.md
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
require "securerandom"
|
2
|
+
require "base64"
|
3
|
+
|
4
|
+
require_relative "build_secret"
|
5
|
+
require_relative "create_token"
|
6
|
+
|
7
|
+
module Foobara
|
8
|
+
module Auth
|
9
|
+
class DeleteApiKey < Foobara::Command
|
10
|
+
inputs do
|
11
|
+
token Types::Token, :required
|
12
|
+
end
|
13
|
+
|
14
|
+
def execute
|
15
|
+
remove_api_key_from_user
|
16
|
+
delete_token
|
17
|
+
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def load_records
|
22
|
+
super
|
23
|
+
self.user = Types::User.that_owns(token, :api_keys)
|
24
|
+
end
|
25
|
+
|
26
|
+
attr_accessor :user
|
27
|
+
|
28
|
+
# should Foobara do this automatically? Or at least support it? Similar to CASCADE in SQL
|
29
|
+
def remove_api_key_from_user
|
30
|
+
api_keys = user.api_keys
|
31
|
+
|
32
|
+
if api_keys.include?(token)
|
33
|
+
user.api_keys = api_keys - [token]
|
34
|
+
else
|
35
|
+
# :nocov:
|
36
|
+
raise "User has no such api key"
|
37
|
+
# :nocov:
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def delete_token
|
42
|
+
token.hard_delete!
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Foobara
|
2
|
+
module Auth
|
3
|
+
class GetApiKeySummaries < Foobara::Command
|
4
|
+
inputs do
|
5
|
+
user Types::User, :required
|
6
|
+
end
|
7
|
+
|
8
|
+
result [Types::ApiKeySummary]
|
9
|
+
|
10
|
+
def execute
|
11
|
+
build_summaries
|
12
|
+
|
13
|
+
summaries
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_accessor :api_keys, :summaries
|
17
|
+
|
18
|
+
def build_summaries
|
19
|
+
self.summaries = user.api_keys.map do |api_key|
|
20
|
+
Types::ApiKeySummary.new(
|
21
|
+
token_id: api_key.id,
|
22
|
+
state: api_key.state,
|
23
|
+
expires_at: api_key.expires_at,
|
24
|
+
created_at: api_key.created_at
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Foobara
|
2
|
+
module Auth
|
3
|
+
module Types
|
4
|
+
class ApiKeySummary < Foobara::Model
|
5
|
+
attributes do
|
6
|
+
token_id :string, :required
|
7
|
+
state :token_state, :required, default: :needs_approval
|
8
|
+
expires_at :datetime, :allow_nil
|
9
|
+
created_at :datetime, :required
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foobara-auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miles Georgi
|
@@ -79,13 +79,16 @@ files:
|
|
79
79
|
- src/create_role.rb
|
80
80
|
- src/create_token.rb
|
81
81
|
- src/create_user.rb
|
82
|
+
- src/delete_api_key.rb
|
82
83
|
- src/find_user.rb
|
84
|
+
- src/get_api_key_summaries.rb
|
83
85
|
- src/login.rb
|
84
86
|
- src/logout.rb
|
85
87
|
- src/refresh_login.rb
|
86
88
|
- src/register.rb
|
87
89
|
- src/reset_password.rb
|
88
90
|
- src/set_password.rb
|
91
|
+
- src/types/api_key_summary.rb
|
89
92
|
- src/types/role.rb
|
90
93
|
- src/types/secret.rb
|
91
94
|
- src/types/token.rb
|