Skip to content

Instantly share code, notes, and snippets.

@shohey1226
Last active February 27, 2019 17:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save shohey1226/a4eb464aa6d6c22eb9550587146f7109 to your computer and use it in GitHub Desktop.
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..)
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
@shohey1226
Copy link
Author

It's in user model.

@shohey1226
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment