Last active
February 27, 2019 17:57
-
-
Save shohey1226/a4eb464aa6d6c22eb9550587146f7109 to your computer and use it in GitHub Desktop.
How to create GSuite user by ruby api (always confusing this due to a lack of docs..)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def create_g_suite_email | |
return if Rails.env.test? || Rails.env.development? # skip if it's test | |
g_email = "#{self.first_name}.#{self.last_name}@xxxx.com".downcase | |
user_object = Google::Apis::AdminDirectoryV1::User.new | |
user_object.primary_email = g_email | |
user_object.name = Google::Apis::AdminDirectoryV1::UserName.new | |
user_object.name.given_name = self.first_name | |
user_object.name.family_name = self.last_name | |
user_object.password = 'xxxxxxxxxxxx' | |
response = admin_directory.insert_user(user_object) | |
end | |
handle_asynchronously :create_g_suite_email, queue: "google_admin_directory" | |
private | |
def authorize | |
require 'googleauth' | |
require 'googleauth/stores/file_token_store' | |
client_id = Google::Auth::ClientId.from_file(Rails.application.secrets.secret_file_g_suite_admin) | |
token_store = Google::Auth::Stores::FileTokenStore.new(file: Rails.application.secrets.credential_file_g_suite_admin) | |
authorizer = Google::Auth::UserAuthorizer.new(client_id, Google::Apis::AdminDirectoryV1::AUTH_ADMIN_DIRECTORY_USER, token_store) | |
user_id = 'default' | |
authorizer.get_credentials(user_id) | |
end | |
def initialize_admin_directory | |
service = Google::Apis::AdminDirectoryV1::DirectoryService.new | |
service.client_options.application_name = "My App" | |
service.authorization = credentials | |
service | |
end | |
def credentials | |
@credentials ||= authorize | |
end | |
def admin_directory | |
@admin_directory ||= initialize_admin_directory | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It's in user model.