google_directory 0.2.2 → 0.2.4
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad3d45be79a46c765d3e286620049175179c317083042a816acd730751a00ebc
|
4
|
+
data.tar.gz: 2032dcf141e7f8c93d23cee5262c1104fbb902de6bcab02aff8f031b03c8091a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db8d3e223648271045ae7ede6b39e2ff6b6ac4ffbf0979a88338bbe86c408a2e6cb0366328d9723cd03db536e226e85c2839f8ca0e474208ed732733c9a9e6a5
|
7
|
+
data.tar.gz: 39e9c27cd74a021935569401113c71fd3814db24bfd7813977d5460b74fc4bde218b3fb23b3c4666687eec1e7addb781d3903e70cc76be66db16a3526c2d82b0
|
@@ -1,8 +1,6 @@
|
|
1
|
-
require 'google/apis/admin_directory_v1'
|
2
1
|
require 'googleauth'
|
3
|
-
require '
|
2
|
+
require 'google/apis/admin_directory_v1'
|
4
3
|
require 'fileutils'
|
5
|
-
|
6
4
|
require "google_directory/version"
|
7
5
|
require "google_directory/user_commands"
|
8
6
|
|
@@ -19,17 +17,17 @@ module GoogleDirectory
|
|
19
17
|
include GoogleDirectory::UserCommands
|
20
18
|
|
21
19
|
# default settings from google for all users
|
22
|
-
|
23
|
-
|
20
|
+
CREDENTIALS_PATH = ENV['CREDENTIALS_JSON_PATH']
|
21
|
+
SUB_ACCOUNT = ENV['SUB_ACCOUNT_NAME']
|
24
22
|
|
25
23
|
# Get info the Google Cloud Admin
|
26
24
|
# https://console.cloud.google.com/apis/ or
|
27
25
|
# build using: https://developers.google.com/api-client-library/ruby/guide/aaa_client_secrets
|
28
|
-
CLIENT_SECRETS_PATH = ENV['CLIENT_SECRETS_PATH'] || 'client_secret.json'
|
26
|
+
# CLIENT_SECRETS_PATH = ENV['CLIENT_SECRETS_PATH'] || 'client_secret.json'
|
29
27
|
|
30
28
|
# Scope options - https://www.googleapis.com/auth/admin.directory.user
|
31
29
|
# https://developers.google.com/admin-sdk/directory/v1/guides/authorizing
|
32
|
-
SCOPE = Google::Apis::AdminDirectoryV1::AUTH_ADMIN_DIRECTORY_USER
|
30
|
+
# SCOPE = Google::Apis::AdminDirectoryV1::AUTH_ADMIN_DIRECTORY_USER
|
33
31
|
# SCOPE = 'https://www.googleapis.com/auth/admin.directory.user'
|
34
32
|
|
35
33
|
# Initialize the API
|
@@ -39,9 +37,7 @@ module GoogleDirectory
|
|
39
37
|
# @note make connection to google directory services
|
40
38
|
# @param service [Class] the default is: Google::Apis::AdminDirectoryV1::DirectoryService
|
41
39
|
def initialize( service: Google::Apis::AdminDirectoryV1::DirectoryService )
|
42
|
-
app_name ||= ENV['APPLICATION_NAME'] || 'google_cloud_app_name'
|
43
40
|
@service = service.new
|
44
|
-
@service.client_options.application_name = app_name
|
45
41
|
@service.authorization = authorize
|
46
42
|
end
|
47
43
|
|
@@ -49,8 +45,6 @@ module GoogleDirectory
|
|
49
45
|
VERSION
|
50
46
|
end
|
51
47
|
|
52
|
-
# @note Run a command against Google Directory
|
53
|
-
#
|
54
48
|
# @param command [Symbol] choose command to perform these include: :user_get, :user_exists? (t/f), :user_create, :user_delete, :user_update & convience commands :user_suspend, :user_reactivate, :user_change_password
|
55
49
|
# @param attributes [Hash] attributes needed to perform command
|
56
50
|
# @return [Hash] formatted as: `{success: {command: :command, attributes: {primary_email: "user@domain"}, response: GoogleAnswer} }`
|
@@ -60,8 +54,9 @@ module GoogleDirectory
|
|
60
54
|
response = send( command, attributes: attributes )
|
61
55
|
response[:status] = 'success'
|
62
56
|
rescue Google::Apis::ClientError => error
|
63
|
-
response = {
|
64
|
-
attributes: attributes,
|
57
|
+
response = {status: 'error', response: error,
|
58
|
+
attributes: attributes, command: command,
|
59
|
+
}
|
65
60
|
end
|
66
61
|
response
|
67
62
|
end
|
@@ -77,32 +72,15 @@ module GoogleDirectory
|
|
77
72
|
|
78
73
|
private
|
79
74
|
attr_reader :service
|
80
|
-
##
|
81
|
-
# FROM:
|
82
|
-
# https://www.rubydoc.info/github/google/google-api-ruby-client/Google/Apis/AdminDirectoryV1/DirectoryService
|
83
|
-
# Ensure valid credentials, either by restoring from the saved credentials
|
84
|
-
# files or intitiating an OAuth2 authorization. If authorization is required,
|
85
|
-
# the user's default browser will be launched to approve the request.
|
86
|
-
# @return [Google::Auth::UserRefreshCredentials] OAuth2 credentials
|
87
|
-
def authorize
|
88
|
-
FileUtils.mkdir_p(File.dirname(CREDENTIALS_PATH))
|
89
75
|
|
90
|
-
|
91
|
-
|
92
|
-
authorizer
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
puts "Open the following URL in the browser and enter the " +
|
99
|
-
"resulting code after authorization"
|
100
|
-
puts url
|
101
|
-
code = gets
|
102
|
-
credentials = authorizer.get_and_store_credentials_from_code(
|
103
|
-
user_id: user_id, code: code, base_url: OOB_URI)
|
104
|
-
end
|
105
|
-
credentials
|
76
|
+
def authorize
|
77
|
+
scope = ['https://www.googleapis.com/auth/admin.directory.user', 'https://www.googleapis.com/auth/admin.directory.user.security']
|
78
|
+
authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
|
79
|
+
json_key_io: File.open(CREDENTIALS_PATH),
|
80
|
+
scope: scope)
|
81
|
+
authorizer.update!(sub: SUB_ACCOUNT)
|
82
|
+
authorizer.fetch_access_token!
|
83
|
+
return authorizer
|
106
84
|
end
|
107
85
|
end
|
108
86
|
end
|
@@ -13,7 +13,7 @@ module GoogleDirectory
|
|
13
13
|
# @return [Hash] formatted as {success: {command: :user_get, attributes: {primary_email: "user@domain"}, response: GoogleUserObject } }
|
14
14
|
def user_get( attributes: )
|
15
15
|
response = service.get_user( attributes[:primary_email] )
|
16
|
-
{
|
16
|
+
{response: response, attributes: attributes[:primary_email], command: :user_get}
|
17
17
|
end
|
18
18
|
|
19
19
|
# @note Test if user exists in Google Directory
|
@@ -23,10 +23,10 @@ module GoogleDirectory
|
|
23
23
|
def user_exists?( attributes: )
|
24
24
|
begin
|
25
25
|
response = service.get_user( attributes[:primary_email] )
|
26
|
-
return {
|
26
|
+
return {response: true, attributes: attributes[:primary_email], command: :user_exists?}
|
27
27
|
rescue Google::Apis::ClientError => error
|
28
28
|
if error.message.include? 'notFound'
|
29
|
-
return {
|
29
|
+
return {response: false, attributes: attributes[:primary_email], command: :user_exists?}
|
30
30
|
else
|
31
31
|
raise error
|
32
32
|
end
|
@@ -46,7 +46,7 @@ module GoogleDirectory
|
|
46
46
|
user_object = Google::Apis::AdminDirectoryV1::User.new user_attr
|
47
47
|
# create user in directory services
|
48
48
|
response = service.insert_user( user_object )
|
49
|
-
{
|
49
|
+
{response: response, attributes: attributes[:primary_email], command: :user_create}
|
50
50
|
end
|
51
51
|
|
52
52
|
# @note updates an exising Google Directory User
|
@@ -56,7 +56,7 @@ module GoogleDirectory
|
|
56
56
|
def user_update( attributes: )
|
57
57
|
# create a user object for google to update
|
58
58
|
response = update_user( attributes )
|
59
|
-
{
|
59
|
+
{response: response, attributes: attributes[:primary_email], command: :user_update}
|
60
60
|
end
|
61
61
|
|
62
62
|
# @note updates an exising Google Directory User password - convience method instead of using :user_update
|
@@ -69,7 +69,7 @@ module GoogleDirectory
|
|
69
69
|
user_attr = defaults.merge( attributes )
|
70
70
|
|
71
71
|
response = update_user( user_attr )
|
72
|
-
{
|
72
|
+
{response: response, attributes: attributes[:primary_email], command: :user_change_password}
|
73
73
|
end
|
74
74
|
|
75
75
|
# @note activates an exising Google Directory User password - convience method instead of using :user_update
|
@@ -81,7 +81,7 @@ module GoogleDirectory
|
|
81
81
|
user_attr = defaults.merge( attributes )
|
82
82
|
|
83
83
|
response = update_user( user_attr )
|
84
|
-
{
|
84
|
+
{response: response, attributes: attributes[:primary_email], command: :user_reactivate}
|
85
85
|
end
|
86
86
|
|
87
87
|
# @note suspends an exising Google Directory User password - convience method instead of using :user_update
|
@@ -93,7 +93,7 @@ module GoogleDirectory
|
|
93
93
|
user_attr = defaults.merge( attributes )
|
94
94
|
|
95
95
|
response = update_user( user_attr )
|
96
|
-
{
|
96
|
+
{response: response, attributes: attributes[:primary_email], command: :user_suspend}
|
97
97
|
end
|
98
98
|
|
99
99
|
# @note deletes an exising Google Directory User
|
@@ -102,7 +102,7 @@ module GoogleDirectory
|
|
102
102
|
# @return [Hash] formatted as {success: {command: :user_delete, attributes: {primary_email: "user@domain"}, response: "" } }
|
103
103
|
def user_delete( attributes: )
|
104
104
|
response = service.delete_user( attributes[:primary_email] )
|
105
|
-
{
|
105
|
+
{response: response, attributes: attributes[:primary_email], command: :user_delete}
|
106
106
|
end
|
107
107
|
|
108
108
|
private
|
@@ -17,7 +17,7 @@ module GoogleDirectory
|
|
17
17
|
defaults = { max_results: 10, order_by: 'email' }
|
18
18
|
filters = defaults.merge( attributes )
|
19
19
|
response = service.list_users( filters )
|
20
|
-
{
|
20
|
+
{response: response, attributes: filters, command: :users_list}
|
21
21
|
end
|
22
22
|
|
23
23
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_directory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bill Tihen
|
8
8
|
- Lee Weisbecker
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-09-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-api-client
|
@@ -17,70 +17,70 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '0.
|
20
|
+
version: '0.37'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '0.
|
27
|
+
version: '0.37'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '1
|
34
|
+
version: '2.1'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '1
|
41
|
+
version: '2.1'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rake
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '13.0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '13.0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rspec
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '3.
|
62
|
+
version: '3.9'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '3.
|
69
|
+
version: '3.9'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: pry
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0.
|
76
|
+
version: '0.12'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '0.
|
83
|
+
version: '0.12'
|
84
84
|
description: Authenticate, list, make, check, suspend and activate google users.
|
85
85
|
email:
|
86
86
|
- btihen@gmail.com
|
@@ -98,7 +98,7 @@ homepage: https://github.com/LAS-IT/google_directory
|
|
98
98
|
licenses:
|
99
99
|
- MIT
|
100
100
|
metadata: {}
|
101
|
-
post_install_message:
|
101
|
+
post_install_message:
|
102
102
|
rdoc_options: []
|
103
103
|
require_paths:
|
104
104
|
- lib
|
@@ -113,9 +113,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: '0'
|
115
115
|
requirements: []
|
116
|
-
|
117
|
-
|
118
|
-
signing_key:
|
116
|
+
rubygems_version: 3.1.6
|
117
|
+
signing_key:
|
119
118
|
specification_version: 4
|
120
119
|
summary: Simple ruby wrapper to manage google accounts - using oauth2.
|
121
120
|
test_files: []
|