clonk 1.0.0alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/lib/clonk.rb +86 -0
  4. 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
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+ # gemspec
3
+ gem "clonk", path: "/Users/sfish/Code/ADBM/sso-idam-auth-application/clonk"
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: []