clonk 1.0.0alpha
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 +7 -0
- data/Gemfile +3 -0
- data/lib/clonk.rb +86 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1ae127e233c70507fde9f7a04c8aec698c74c3ad9d19712d80de703710e2af11
|
4
|
+
data.tar.gz: 5a864090ca4dfbeeb171d7a1efd88aa1db1312ccb2d4cbadeae764b3b512dc9a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eb6a3a1e48a07ed3207a4ac25b5a74d66b1b9249c2feb80c1c5a744b3910474a052c0597620137e6641be365cc0dceecaabb9c27efce3e37cfa72506146ce9f6
|
7
|
+
data.tar.gz: 570835b981709c60280f8014d4d34ff486366a46c43c494d7b10b4e437e186fedb98047d24dca9db8134ef7eecc8881b8daa4948d0fac0a26553fc4f1efad815
|
data/Gemfile
ADDED
data/lib/clonk.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
require 'faraday_middleware'
|
5
|
+
# require 'dotenv/load'
|
6
|
+
require 'json'
|
7
|
+
# require 'pp'
|
8
|
+
|
9
|
+
BASE_URL = ENV.fetch('SSO_BASE_URL')
|
10
|
+
USERNAME = ENV.fetch('SSO_USERNAME')
|
11
|
+
PASSWORD = ENV.fetch('SSO_PASSWORD')
|
12
|
+
REALM = ENV.fetch('SSO_REALM')
|
13
|
+
|
14
|
+
module Clonk
|
15
|
+
class << self
|
16
|
+
def connection(token: nil, raise_error: true, json: true)
|
17
|
+
Faraday.new(url: BASE_URL) do |faraday|
|
18
|
+
faraday.request(json ? :json : :url_encoded)
|
19
|
+
faraday.use Faraday::Response::RaiseError if raise_error
|
20
|
+
faraday.adapter Faraday.default_adapter
|
21
|
+
faraday.headers['Authorization'] = "Bearer #{token}" if token
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def realm_admin_root(realm = REALM)
|
26
|
+
"#{BASE_URL}/auth/admin/realms/#{realm}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def admin_token
|
30
|
+
data = {
|
31
|
+
username: USERNAME,
|
32
|
+
password: PASSWORD,
|
33
|
+
grant_type: 'password',
|
34
|
+
client_id: 'admin-cli'
|
35
|
+
}
|
36
|
+
|
37
|
+
JSON.parse(
|
38
|
+
connection(json: false)
|
39
|
+
.post('/auth/realms/master/protocol/openid-connect/token', data).body
|
40
|
+
)['access_token']
|
41
|
+
end
|
42
|
+
|
43
|
+
def response(protocol: :get, path: '/', data: nil, token: admin_token)
|
44
|
+
return unless %i[get post put delete].include?(protocol)
|
45
|
+
|
46
|
+
conn = connection(token: token).public_send(protocol, path, data)
|
47
|
+
end
|
48
|
+
|
49
|
+
def parsed_response(protocol: :get, path: '/', data: nil, token: admin_token)
|
50
|
+
resp = response(protocol: protocol, path: path, data: data, token: token)
|
51
|
+
|
52
|
+
JSON.parse(resp.body)
|
53
|
+
rescue JSON::ParserError
|
54
|
+
resp.body
|
55
|
+
end
|
56
|
+
|
57
|
+
def set_permissions(object: nil, type: nil, enabled: true, realm: REALM)
|
58
|
+
parsed_response(
|
59
|
+
protocol: :put,
|
60
|
+
path: "#{realm_admin_root(realm)}/#{type}s/#{object['id']}/management/permissions",
|
61
|
+
data: { enabled: enabled },
|
62
|
+
token: @token
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
def get_permission(id: nil, realm: REALM)
|
68
|
+
parsed_response(
|
69
|
+
token: @token,
|
70
|
+
path: "#{client_url(client: @realm_management, realm: realm)}/authz/resource-server/permission/scope/#{id}"
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
# getPermissionScopes???
|
75
|
+
# getPermissionResources???
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
require 'clonk/group'
|
81
|
+
require 'clonk/user'
|
82
|
+
require 'clonk/client'
|
83
|
+
require 'clonk/policy'
|
84
|
+
require 'clonk/role'
|
85
|
+
require 'clonk/realm'
|
86
|
+
require 'clonk/permission'
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: clonk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0alpha
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Simon Fish
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday_middleware
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description:
|
42
|
+
email:
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- Gemfile
|
48
|
+
- lib/clonk.rb
|
49
|
+
homepage:
|
50
|
+
licenses: []
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.3.1
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.7.7
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: Keycloak/RHSSO admin API client
|
72
|
+
test_files: []
|