From 4936db8635577b6537ccad382c90f1ed7e162ddb Mon Sep 17 00:00:00 2001 From: Helena <62230408+Hel5Sou@users.noreply.github.com> Date: Mon, 22 Mar 2021 09:41:38 -0700 Subject: [PATCH 1/4] utils.rb + test This file is supported by test. It respond to the util/utils.py file in the Python version. Test added to prove it's working. Now I can use these 3 methods for models. --- lib/onelogin/api/util/utils.rb | 27 +++++++++++++++++++++ spec/lib/onelogin/api/util_spec.rb | 39 ++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 lib/onelogin/api/util/utils.rb create mode 100644 spec/lib/onelogin/api/util_spec.rb diff --git a/lib/onelogin/api/util/utils.rb b/lib/onelogin/api/util/utils.rb new file mode 100644 index 0000000..bff6814 --- /dev/null +++ b/lib/onelogin/api/util/utils.rb @@ -0,0 +1,27 @@ +require 'date' + +module OneLogin + module Api + module Util + module StringUtils + + def str2bool(s) + if s == nil + return nil + else + return ["yes", "true", "t", "1"].include?(s.to_s.downcase) + end + end + + def str2date(s) + DateTime.parse(s) rescue nil + end + + def str2int(s) + Integer(s) rescue nil + end + + end + end + end +end \ No newline at end of file diff --git a/spec/lib/onelogin/api/util_spec.rb b/spec/lib/onelogin/api/util_spec.rb new file mode 100644 index 0000000..b76443a --- /dev/null +++ b/spec/lib/onelogin/api/util_spec.rb @@ -0,0 +1,39 @@ +require "spec_helper" +# require 'onelogin/api/util/string_utils' + +RSpec.describe OneLogin::Api::Util::StringUtils do + include OneLogin::Api::Util + + context 'stringutils' do + it 'str2bool' do + expect(str2bool(nil)).to be nil + expect(str2bool(true)).to be true + expect(str2bool(false)).to be false + + expect(str2bool('true')).to be true + expect(str2bool('TrUe')).to be true + expect(str2bool('yes')).to be true + expect(str2bool('T')).to be true + expect(str2bool('1')).to be true + + expect(str2bool('false')).to be false + expect(str2bool('something')).to be false + end + + it 'str2date' do + expect(str2date(nil)).to be nil + expect(str2date("3rd Feb 2001 04:05:06 PM")).to eq DateTime.new(2001, 2, 3, 16, 5, 6) + expect(str2date("3/2/2001 16:05:06")).to eq DateTime.new(2001, 2, 3, 16, 5, 6) + expect(str2date("February 3rd,2001 16:05:06")).to eq DateTime.new(2001, 2, 3, 16, 5, 6) + end + + it 'str2int' do + expect(str2int(nil)).to be nil + expect(str2int("something")).to be nil + expect(str2int("15")).to be 15 + expect(str2int(9)).to eq(9) + end + end + + +end \ No newline at end of file From 5da9de12f3b101bd9382b1e4e2a413d482ead715 Mon Sep 17 00:00:00 2001 From: Helena <62230408+Hel5Sou@users.noreply.github.com> Date: Mon, 22 Mar 2021 10:10:33 -0700 Subject: [PATCH 2/4] keep the naming same as within the Python Just changes to keep the naming same as within the Python SDK. Adding util.rb file to keep it working with the new Utils module and methods --- lib/onelogin/api/util.rb | 2 ++ lib/onelogin/api/util/utils.rb | 2 +- spec/lib/onelogin/api/util_spec.rb | 6 ++---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/onelogin/api/util.rb b/lib/onelogin/api/util.rb index 77393f9..44d8bcb 100644 --- a/lib/onelogin/api/util.rb +++ b/lib/onelogin/api/util.rb @@ -1,6 +1,7 @@ require 'onelogin/api/util/constants' require 'onelogin/api/util/url_builder' require 'onelogin/api/util/parser' +require 'onelogin/api/util/utils' module OneLogin module Api @@ -8,6 +9,7 @@ module Util include OneLogin::Api::Util::Constants include OneLogin::Api::Util::UrlBuilder include OneLogin::Api::Util::Parser + include OneLogin::Api::Util::Utils end end end \ No newline at end of file diff --git a/lib/onelogin/api/util/utils.rb b/lib/onelogin/api/util/utils.rb index bff6814..50054fc 100644 --- a/lib/onelogin/api/util/utils.rb +++ b/lib/onelogin/api/util/utils.rb @@ -3,7 +3,7 @@ module OneLogin module Api module Util - module StringUtils + module Utils def str2bool(s) if s == nil diff --git a/spec/lib/onelogin/api/util_spec.rb b/spec/lib/onelogin/api/util_spec.rb index b76443a..645923f 100644 --- a/spec/lib/onelogin/api/util_spec.rb +++ b/spec/lib/onelogin/api/util_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" # require 'onelogin/api/util/string_utils' -RSpec.describe OneLogin::Api::Util::StringUtils do +RSpec.describe OneLogin::Api::Util::Utils do include OneLogin::Api::Util - context 'stringutils' do + context 'utils' do it 'str2bool' do expect(str2bool(nil)).to be nil expect(str2bool(true)).to be true @@ -34,6 +34,4 @@ expect(str2int(9)).to eq(9) end end - - end \ No newline at end of file From 6e8dc811d74579a7586b3529fde12aedb58358a2 Mon Sep 17 00:00:00 2001 From: Helena <62230408+Hel5Sou@users.noreply.github.com> Date: Mon, 22 Mar 2021 14:56:48 -0700 Subject: [PATCH 3/4] Endpoints (API) and hash dictionary (matrix) Endpoints - the endpoints.py v2 and hash dictionary (matrix) in the constants.rb file (same as the constants.py file) --- lib/onelogin/api/util/constants.rb | 347 ++++++++++++++++++----------- lib/onelogin/api/util/endpoints.rb | 150 +++++++++++++ 2 files changed, 362 insertions(+), 135 deletions(-) create mode 100644 lib/onelogin/api/util/endpoints.rb diff --git a/lib/onelogin/api/util/constants.rb b/lib/onelogin/api/util/constants.rb index 5c804bc..ac46eea 100644 --- a/lib/onelogin/api/util/constants.rb +++ b/lib/onelogin/api/util/constants.rb @@ -7,6 +7,7 @@ module Util # in the OneLogin's Ruby SDK. # module Constants + # OAuth2 Tokens URLs TOKEN_REQUEST_URL = "https://api.%s.onelogin.com/auth/oauth2/v2/token" TOKEN_REFRESH_URL = "https://api.%s.onelogin.com/auth/oauth2/v2/token" @@ -14,162 +15,238 @@ module Constants GET_RATE_URL = "https://api.%s.onelogin.com/auth/rate_limit" # User URLs - GET_USERS_URL = "https://api.%s.onelogin.com/api/1/users" - GET_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s" - GET_APPS_FOR_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s/apps" - GET_ROLES_FOR_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s/roles" - GET_CUSTOM_ATTRIBUTES_URL = "https://api.%s.onelogin.com/api/1/users/custom_attributes" - CREATE_USER_URL = "https://api.%s.onelogin.com/api/1/users" - SESSION_LOGIN_TOKEN_URL = "https://api.%s.onelogin.com/api/1/login/auth" - GET_TOKEN_VERIFY_FACTOR = "https://api.%s.onelogin.com/api/1/login/verify_factor" - UPDATE_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s" - DELETE_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s" - ADD_ROLE_TO_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s/add_roles" - DELETE_ROLE_TO_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s/remove_roles" - SET_PW_CLEARTEXT = "https://api.%s.onelogin.com/api/1/users/set_password_clear_text/%s" - SET_PW_SALT = "https://api.%s.onelogin.com/api/1/users/set_password_using_salt/%s" - SET_CUSTOM_ATTRIBUTE_TO_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s/set_custom_attributes" - SET_USER_STATE_URL = "https://api.%s.onelogin.com/api/1/users/%s/set_state" - LOG_USER_OUT_URL = "https://api.%s.onelogin.com/api/1/users/%s/logout" - LOCK_USER_URL = "https://api.%s.onelogin.com/api/1/users/%s/lock_user" - GENERATE_MFA_TOKEN_URL = "https://api.%s.onelogin.com/api/1/users/%s/mfa_token" - - # Connectors URL - GET_CONNECTORS_URL = "https://api.%s.onelogin.com/api/2/connectors" - #GET_CONNECTOR_URL = "https://api.%s.onelogin.com/api/2/connectors/%s" + GET_USERS_URL = "https://api.%s.onelogin.com/api/%s/users" + GET_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s" + GET_APPS_FOR_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s/apps" + GET_ROLES_FOR_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s/roles" + GET_CUSTOM_ATTRIBUTES_URL = "https://api.%s.onelogin.com/api/%s/users/custom_attributes" + CREATE_USER_URL = "https://api.%s.onelogin.com/api/%s/users" + UPDATE_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s" + DELETE_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s" + ADD_ROLE_TO_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s/add_roles" + DELETE_ROLE_TO_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s/remove_roles" + SET_PW_CLEARTEXT = "https://api.%s.onelogin.com/api/%s/users/set_password_clear_text/%s" + SET_PW_SALT = "https://api.%s.onelogin.com/api/%s/users/set_password_using_salt/%s" + SET_STATE_TO_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s/set_state" + SET_CUSTOM_ATTRIBUTE_TO_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s/set_custom_attributes" + LOG_USER_OUT_URL = "https://api.%s.onelogin.com/api/%s/users/%s/logout" + LOCK_USER_URL = "https://api.%s.onelogin.com/api/%s/users/%s/lock_user" + GENERATE_MFA_TOKEN_URL = "https://api.%s.onelogin.com/api/%s/users/%s/mfa_token" - # Apps URL + # Connectors URLS + GET_CONNECTORS_URL = "https://api.%s.onelogin.com/api/%s/connectors" - # V1 - GET_APPS_URL_V1 = "https://api.%s.onelogin.com/api/1/apps" + # Apps URL + GET_APPS_URL = "https://api.%s.onelogin.com/api/%s/apps" + CREATE_APP_URL = "https://api.%s.onelogin.com/api/%s/apps" + GET_APP_URL = "https://api.%s.onelogin.com/api/%s/apps/%s" + UPDATE_APP_URL = "https://api.%s.onelogin.com/api/%s/apps/%s" + DELETE_APP_URL = "https://api.%s.onelogin.com/api/%s/apps/%s" + DELETE_APP_PARAMETER_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/parameters/%s" + GET_APP_USERS_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/users" - # V2 - GET_APPS_URL = "https://api.%s.onelogin.com/api/2/apps" - CREATE_APP_URL = "https://api.%s.onelogin.com/api/2/apps" - GET_APP_URL = "https://api.%s.onelogin.com/api/2/apps/%s" - UPDATE_APP_URL = "https://api.%s.onelogin.com/api/2/apps/%s" - DELETE_APP_URL = "https://api.%s.onelogin.com/api/2/apps/%s" - DELETE_APP_PARAMETER_URL = "https://api.%s.onelogin.com/api/2/apps/%s/parameters/%s" + # App Rules URL + GET_APP_RULES_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules" + CREATE_APP_RULE_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules" + GET_APP_RULE_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/%s" + UPDATE_APP_RULE_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/%s" + DELETE_APP_RULE_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/%s" + GET_APP_CONDITIONS_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/conditons" + GET_APP_CONDITION_OPERATORS_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/conditions/%s/operators" + GET_APP_CONDITION_VALUES_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/conditions/%s/values" + GET_APP_ACTIONS_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/actions" + GET_APP_ACTION_VALUES_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/actions/%s/values" + APP_RULE_SORT_URL = "https://api.%s.onelogin.com/api/%s/apps/%s/rules/sort" # Role URLs - GET_ROLES_URL = "https://api.%s.onelogin.com/api/1/roles" - CREATE_ROLE_URL = "https://api.%s.onelogin.com/api/1/roles" - GET_ROLE_URL = "https://api.%s.onelogin.com/api/1/roles/%s" + GET_ROLES_URL = "https://api.%s.onelogin.com/api/%s/roles" + CREATE_ROLE_URL = "https://api.%s.onelogin.com/api/%s/roles" + GET_ROLE_URL = "https://api.%s.onelogin.com/api/%s/roles/%s" + UPDATE_ROLE_URL = "https://api.%s.onelogin.com/api/%s/roles/%s" + GET_ROLE_APPS_URL = "https://api.%s.onelogin.com/api/%s/roles/%s/apps" + SET_ROLE_APPS_URL = "https://api.%s.onelogin.com/api/%s/roles/%s/apps" + GET_ROLE_USERS_URL = "https://api.%s.onelogin.com/api/%s/roles/%s/users" + ADD_ROLE_USERS_URL = "https://api.%s.onelogin.com/api/%s/roles/%s/users" + REMOVE_ROLE_USERS_URL = "https://api.%s.onelogin.com/api/%s/roles/%s/users" + GET_ROLE_ADMINS_URL = "https://api.%s.onelogin.com/api/%s/roles/%s/admins" + ADD_ROLE_ADMINS_URL = "https://api.%s.onelogin.com/api/%s/roles/%s/admins" + REMOVE_ROLE_ADMINS_URL = "https://api.%s.onelogin.com/api/%s/roles/%s/admins" + DELETE_ROLE_URL = "https://api.%s.onelogin.com/api/%s/roles/%s" # Event URLS - GET_EVENT_TYPES_URL = "https://api.%s.onelogin.com/api/1/events/types" - GET_EVENTS_URL = "https://api.%s.onelogin.com/api/1/events" - CREATE_EVENT_URL = "https://api.%s.onelogin.com/api/1/events" - GET_EVENT_URL = "https://api.%s.onelogin.com/api/1/events/%s" + GET_EVENT_TYPES_URL = "https://api.%s.onelogin.com/api/%s/events/types" + GET_EVENTS_URL = "https://api.%s.onelogin.com/api/%s/events" + CREATE_EVENT_URL = "https://api.%s.onelogin.com/api/%s/events" + GET_EVENT_URL = "https://api.%s.onelogin.com/api/%s/events/%s" # Group URLs - GET_GROUPS_URL = "https://api.%s.onelogin.com/api/1/groups" - CREATE_GROUP_URL = "https://api.%s.onelogin.com/api/1/groups" - GET_GROUP_URL = "https://api.%s.onelogin.com/api/1/groups/%s" + GET_GROUPS_URL = "https://api.%s.onelogin.com/api/%s/groups" + CREATE_GROUP_URL = "https://api.%s.onelogin.com/api/%s/groups" + GET_GROUP_URL = "https://api.%s.onelogin.com/api/%s/groups/%s" + + # Custom Login URLs + SESSION_LOGIN_TOKEN_URL = "https://api.%s.onelogin.com/api/%s/login/auth" + GET_TOKEN_VERIFY_FACTOR = "https://api.%s.onelogin.com/api/%s/login/verify_factor" # SAML Assertion URLs - GET_SAML_ASSERTION_URL = "https://api.%s.onelogin.com/api/1/saml_assertion" - GET_SAML_VERIFY_FACTOR = "https://api.%s.onelogin.com/api/1/saml_assertion/verify_factor" + GET_SAML_ASSERTION_URL = "https://api.%s.onelogin.com/api/%s/saml_assertion" + GET_SAML_VERIFY_FACTOR = "https://api.%s.onelogin.com/api/%s/saml_assertion/verify_factor" # Multi-Factor Authentication URLs - GET_FACTORS_URL = "https://api.%s.onelogin.com/api/1/users/%s/auth_factors" - ENROLL_FACTOR_URL = "https://api.%s.onelogin.com/api/1/users/%s/otp_devices" - GET_ENROLLED_FACTORS_URL = "https://api.%s.onelogin.com/api/1/users/%s/otp_devices" - ACTIVATE_FACTOR_URL = "https://api.%s.onelogin.com/api/1/users/%s/otp_devices/%s/trigger" - VERIFY_FACTOR_URL = "https://api.%s.onelogin.com/api/1/users/%s/otp_devices/%s/verify" - REMOVE_FACTOR_URL = "https://api.%s.onelogin.com/api/1/users/%s/otp_devices/%s" + GET_FACTORS_URL = "https://api.%s.onelogin.com/api/%s/users/%s/auth_factors" + V2_GET_FACTORS_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/factors" + ENROLL_FACTOR_URL = "https://api.%s.onelogin.com/api/%s/users/%s/otp_devices" + V2_ENROLL_FACTOR_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/registrations" + GET_ENROLLED_FACTORS_URL = "https://api.%s.onelogin.com/api/%s/users/%s/otp_devices" + VERIFY_ENROLLMENT_SMS_EMAIL_PROTECT_AUTH_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/registrations/%s" + VERIFY_ENROLLMENT__PROTECTPUSH_VOICE_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/registrations/%s" + V2_GET_ENROLLED_FACTORS_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/devices" + ACTIVATE_FACTOR_URL = "https://api.%s.onelogin.com/api/%s/users/%s/otp_devices/%s/trigger" + V2_ACTIVATE_FACTOR_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/verifications" + VERIFY_FACTOR_URL = "https://api.%s.onelogin.com/api/%s/users/%s/otp_devices/%s/verify" + VERIFY_FACTOR_SMS_EMAIL_PROTECT_AUTH_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/verifications/%s" + VERIFY_FACTOR_PROTECTPUSH_VOICE_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/verifications/%s" + DELETE_FACTOR_URL = "https://api.%s.onelogin.com/api/%s/users/%s/otp_devices/%s" + V2_DELETE_FACTOR_URL = "https://api.%s.onelogin.com/api/%s/mfa/users/%s/devices/%s" # Invite Link URLS - GENERATE_INVITE_LINK_URL = "https://api.%s.onelogin.com/api/1/invites/get_invite_link" - SEND_INVITE_LINK_URL = "https://api.%s.onelogin.com/api/1/invites/send_invite_link" + GENERATE_INVITE_LINK_URL = "https://api.%s.onelogin.com/api/%s/invites/get_invite_link" + SEND_INVITE_LINK_URL = "https://api.%s.onelogin.com/api/%s/invites/send_invite_link" # Embed Apps URL EMBED_APP_URL = "https://api.onelogin.com/client/apps/embed2" + # Account Brands URLS + GET_ACCOUNT_BRANDS_URL = "https://api.%s.onelogin.com/api/%s/branding/brands" + CREATE_ACCOUNT_BRAND_URL = "https://api.%s.onelogin.com/api/%s/branding/brands/%s" + GET_ACCOUNT_BRAND_URL = "https://api.%s.onelogin.com/api/%s/branding/brands/%s" + UPDATE_ACCOUNT_BRAND_URL = "https://api.%s.onelogin.com/api/%s/branding/brands/%s" + DELETE_ACCOUNT_BRAND_URL = "https://api.%s.onelogin.com/api/%s/branding/brands/%s" + GET_APPS_BRAND_URL = "https://api.%s.onelogin.com/api/%s/branding/%s/apps" + GET_ACCOUNT_EMAIL_SETTINGS = "https://api.%s.onelogin.com/api/%s/branding/email_settings" + UPDATE_ACCOUNT_EMAIL_SETTINGS = "https://api.%s.onelogin.com/api/%s/branding/email_settings" + RESET_ACCOUNT_EMAIL_SETTINGS = "https://api.%s.onelogin.com/api/%s/branding/email_settings" + + # Smart Hooks URLS + GET_HOOKS_URL = "https://api.%s.onelogin.com/api/%s/hooks" + CREATE_HOOK_URL = "https://api.%s.onelogin.com/api/%s/hooks" + GET_HOOK_URL = "https://api.%s.onelogin.com/api/%s/hooks/%s" + UPDATE_HOOK_URL = "https://api.%s.onelogin.com/api/%s/hooks/%s" + DELETE_HOOK_URL = "https://api.%s.onelogin.com/api/%s/hooks/%s" + GET_HOOK_LOGS_URL = "https://api.%s.onelogin.com/api/%s/hooks/%s/logs" + GET_HOOK_ENVS_URL = "https://api.%s.onelogin.com/api/%s/hooks/%s/env" + CREATE_HOOK_ENV_URL = "https://api.%s.onelogin.com/api/%s/hooks/%s/env" + UPDATE_HOOK_ENV_URL = "https://api.%s.onelogin.com/api/%s/hooks/%s/env_vars/%s" + DELETE_HOOK_ENV_URL = "https://api.%s.onelogin.com/api/%s/hooks/%s/env_vars/%s" + + # Vigilance AI URLS + TRACK_EVENT_URL = "https://api.%s.onelogin.com/api/%s/risk/events" + GET_RISK_SCORE_URL = "https://api.%s.onelogin.com/api/%s/risk/verify" + GET_RISK_RULES_URL = "https://api.%s.onelogin.com/api/%s/risk/rules" + CREATE_RISK_RULE_URL = "https://api.%s.onelogin.com/api/%s/risk/rules" + GET_RISK_RULE_URL = "https://api.%s.onelogin.com/api/%s/risk/rules/%s" + UPDATE_RISK_RULE_URL = "https://api.%s.onelogin.com/api/%s/risk/rules/%s" + DELETE_RISK_RULE_URL = "https://api.%s.onelogin.com/api/%s/risk/rules/%s" + GET_SCORE_INSIGHTS = "https://api.%s.onelogin.com/api/%s/risk/scores" + + # Mappings URLS + GET_MAPPINGS_URL = "https://api.%s.onelogin.com/api/%s/mappings" + CREATE_MAPPING_URL = "https://api.%s.onelogin.com/api/%s/mappings" + GET_MAPPING_URL = "https://api.%s.onelogin.com/api/%s/mappings/%s" + UPDATE_MAPPING_URL = "https://api.%s.onelogin.com/api/%s/mappings/%s" + DELETE_MAPPING_URL = "https://api.%s.onelogin.com/api/%s/mappings/%s" + DRYRUN_MAPPING_URL = "https://api.%s.onelogin.com/api/%s/mappings/%s/dryrun" + GET_MAPPING_CONDITIONS_URL = "https://api.%s.onelogin.com/api/%s/mappings/conditons" + GET_MAPPING_CONDITION_OPERATORS_URL = "https://api.%s.onelogin.com/api/%s/mappings/conditions/%s/operators" + GET_MAPPING_CONDITION_VALUES_URL = "https://api.%s.onelogin.com/api/%s/mappings/conditions/%s/values" + GET_MAPPING_ACTIONS_URL = "https://api.%s.onelogin.com/api/%s/mappings/actions" + GET_MAPPING_ACTION_VALUES_URL = "https://api.%s.onelogin.com/api/%s/mappings/actions/%s/values" + MAPPING_SORT_URL = "https://api.%s.onelogin.com/api/%s/mappings/sort" + # Privileges URLS - LIST_PRIVILEGES_URL = "https://api.%s.onelogin.com/api/1/privileges" - CREATE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges" - UPDATE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s" - GET_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s" - DELETE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s" - GET_ROLES_ASSIGNED_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/roles" - ASSIGN_ROLES_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/roles" - REMOVE_ROLE_FROM_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/roles/%s" - GET_USERS_ASSIGNED_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/users" - ASSIGN_USERS_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/users" - REMOVE_USER_FROM_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/1/privileges/%s/users/%s" + LIST_PRIVILEGES_URL = "https://api.%s.onelogin.com/api/%s/privileges" + CREATE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges" + UPDATE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s" + GET_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s" + DELETE_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s" + GET_ROLES_ASSIGNED_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s/roles" + ASSIGN_ROLES_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s/roles" + REMOVE_ROLE_FROM_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s/roles/%s" + GET_USERS_ASSIGNED_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s/users" + ASSIGN_USERS_TO_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s/users" + REMOVE_USER_FROM_PRIVILEGE_URL = "https://api.%s.onelogin.com/api/%s/privileges/%s/users/%s" VALID_ACTIONS = [ - "apps:List", - "apps:Get", - "apps:Create", - "apps:Update", - "apps:Delete", - "apps:ManageRoles", - "apps:ManageUsers", - "directories:List", - "directories:Get", - "directories:Create", - "directories:Update", - "directories:Delete", - "directories:SyncUsers", - "directories:RefreshSchema", - "events:List", - "events:Get", - "mappings:List", - "mappings:Get", - "mappings:Create", - "mappings:Update", - "mappings:Delete", - "mappings:ReapplyAll", - "policies:List", - "policies:user:Get", - "policies:user:Create", - "policies:user:Update", - "policies:user:Delete", - "policies:app:Get", - "policies:app:Create", - "policies:app:Update", - "policies:app:Delete", - "privileges:List", - "privileges:Get", - "privileges:Create", - "privileges:Update", - "privileges:Delete", - "privileges:ListUsers", - "privileges:ListRoles", - "privileges:ManageUsers", - "privileges:ManageRoles", - "reports:List", - "reports:Get", - "reports:Create", - "reports:Update", - "reports:Delete", - "reports:Run", - "roles:List", - "roles:Get", - "roles:Create", - "roles:Update", - "roles:Delete", - "roles:ManageUsers", - "roles:ManageApps", - "trustedidp:List", - "trustedidp:Get", - "trustedidp:Create", - "trustedidp:Update", - "trustedidp:Delete", - "users:List", - "users:Get", - "users:Create", - "users:Update", - "users:Delete", - "users:Unlock", - "users:ResetPassword", - "users:ForceLogout", - "users:Invite", - "users:ReapplyMappings", - "users:ManageRoles", - "users:ManageApps", - "users:GenerateTempMfaToken" + "apps:List", + "apps:Get", + "apps:Create", + "apps:Update", + "apps:Delete", + "apps:ManageRoles", + "apps:ManageUsers", + "directories:List", + "directories:Get", + "directories:Create", + "directories:Update", + "directories:Delete", + "directories:SyncUsers", + "directories:RefreshSchema", + "events:List", + "events:Get", + "mappings:List", + "mappings:Get", + "mappings:Create", + "mappings:Update", + "mappings:Delete", + "mappings:ReapplyAll", + "policies:List", + "policies:user:Get", + "policies:user:Create", + "policies:user:Update", + "policies:user:Delete", + "policies:app:Get", + "policies:app:Create", + "policies:app:Update", + "policies:app:Delete", + "privileges:List", + "privileges:Get", + "privileges:Create", + "privileges:Update", + "privileges:Delete", + "privileges:ListUsers", + "privileges:ListRoles", + "privileges:ManageUsers", + "privileges:ManageRoles", + "reports:List", + "reports:Get", + "reports:Create", + "reports:Update", + "reports:Delete", + "reports:Run", + "roles:List", + "roles:Get", + "roles:Create", + "roles:Update", + "roles:Delete", + "roles:ManageUsers", + "roles:ManageApps", + "trustedidp:List", + "trustedidp:Get", + "trustedidp:Create", + "trustedidp:Update", + "trustedidp:Delete", + "users:List", + "users:Get", + "users:Create", + "users:Update", + "users:Delete", + "users:Unlock", + "users:ResetPassword", + "users:ForceLogout", + "users:Invite", + "users:ReapplyMappings", + "users:ManageRoles", + "users:ManageApps", + "users:GenerateTempMfaToken" ] end end diff --git a/lib/onelogin/api/util/endpoints.rb b/lib/onelogin/api/util/endpoints.rb new file mode 100644 index 0000000..037bc6b --- /dev/null +++ b/lib/onelogin/api/util/endpoints.rb @@ -0,0 +1,150 @@ +#frozen_string_literal: true + +require_relative "constants" # will we stick here to the require or will we use the require_relative which +#recommended for ruby 1.9 and hire + +module OneLogin + module Api + module Util + # Endpoints class of the OneLogin's Ruby SDK. + # + # Copyright (c) 2021, OneLogin, Inc. + # All rights reserved + # + + + module Endpoints + + #AUX API URL endpoints for the OneLogin's Ruby SDK. + + + matrix = { + Constants::GET_USERS_URL => {"user": [1, 2]}, + Constants::GET_USER_URL => {"user": [1, 2]}, + Constants::GET_APPS_FOR_USER_URL => {"user": [1, 2]}, + Constants::GET_ROLES_FOR_USER_URL => {"user": [1]}, + Constants::GET_CUSTOM_ATTRIBUTES_URL => {"user": [1]}, + Constants::CREATE_USER_URL => {"user": [1, 2]}, + Constants::UPDATE_USER_URL => {"user": [1, 2]}, + Constants::DELETE_USER_URL => {"user": [1, 2]}, + Constants::ADD_ROLE_TO_USER_URL => {"user": [1]}, + Constants::DELETE_ROLE_TO_USER_URL => {"user": [1]}, + Constants::SET_PW_CLEARTEXT => {"user": [1]}, + Constants::SET_PW_SALT => {"user": [1]}, + Constants::SET_STATE_TO_USER_URL => {"user": [1]}, + Constants::SET_CUSTOM_ATTRIBUTE_TO_USER_URL => {"user": [1]}, + Constants::LOG_USER_OUT_URL => {"user": [1]}, + Constants::LOCK_USER_URL => {"user": [1]}, + Constants::GENERATE_MFA_TOKEN_URL => {"user": [1]}, + Constants::GET_CONNECTORS_URL =>{"connector": [2]}, + Constants::GET_APPS_URL => {"app": [1, 2]}, + Constants::CREATE_APP_URL => {"app": [2]}, + Constants::GET_APP_URL => {"app": [2]}, + Constants::UPDATE_APP_URL => {"app": [2]}, + Constants::DELETE_APP_URL => {"app": [2]}, + Constants::DELETE_APP_PARAMETER_URL => {"app": [2]}, + Constants::GET_APP_USERS_URL => {"app": [2]}, + Constants::GET_APP_RULES_URL => {"app_rule": [2]}, + Constants::CREATE_APP_RULE_URL => {"app_rule": [2]}, + Constants::GET_APP_RULE_URL => {"app_rule": [2]}, + Constants::UPDATE_APP_RULE_URL => {"app_rule": [2]}, + Constants::DELETE_APP_RULE_URL => {"app_rule": [2]}, + Constants::GET_APP_CONDITIONS_URL => {"app_rule": [2]}, + Constants::GET_APP_CONDITION_OPERATORS_URL => {"app_rule": [2]}, + Constants::GET_APP_CONDITION_VALUES_URL => {"app_rule": [2]}, + Constants::GET_APP_ACTIONS_URL => {"app_rule": [2]}, + Constants::GET_APP_ACTION_VALUES_URL => {"app_rule": [2]}, + Constants::APP_RULE_SORT_URL => {"app_rule": [2]}, + Constants::GET_ROLES_URL => {"role": [1, 2]}, + Constants::CREATE_ROLE_URL => {"role": [2]}, + Constants::GET_ROLE_URL => {"role": [1, 2]}, + Constants::UPDATE_ROLE_URL => {"role": [2]}, + Constants::GET_ROLE_APPS_URL => {"role": [2]}, + Constants::SET_ROLE_APPS_URL => {"role": [2]}, + Constants::GET_ROLE_USERS_URL => {"role": [2]}, + Constants::ADD_ROLE_USERS_URL => {"role": [2]}, + Constants::REMOVE_ROLE_USERS_URL => {"role": [2]}, + Constants::GET_ROLE_ADMINS_URL => {"role": [2]}, + Constants::ADD_ROLE_ADMINS_URL => {"role": [2]}, + Constants::REMOVE_ROLE_ADMINS_URL => {"role": [2]}, + Constants::DELETE_ROLE_URL => {"role": [2]}, + Constants::GET_EVENT_TYPES_URL => {"event": [1]}, + Constants::GET_EVENTS_URL => {"event": [1]}, + Constants::CREATE_EVENT_URL => {"event": [1]}, + Constants::GET_EVENT_URL => {"event": [1]}, + Constants::GET_GROUPS_URL => {"group": [1]}, + Constants::CREATE_GROUP_URL => {"group": [1]}, + Constants::GET_GROUP_URL => {"group": [1]}, + Constants::SESSION_LOGIN_TOKEN_URL => {"custom_login": [1]}, + Constants::GET_TOKEN_VERIFY_FACTOR => {"custom_login": [1]}, + Constants::GET_SAML_ASSERTION_URL => {"assertion": [1, 2]}, + Constants::GET_SAML_VERIFY_FACTOR => {"assertion": [1, 2]}, + Constants::GET_FACTORS_URL => {"mfa": [1, 2]}, + Constants::ENROLL_FACTOR_URL => {"mfa": [1, 2]}, + Constants::VERIFY_ENROLLMENT_SMS_EMAIL_PROTECT_AUTH_URL => {"mfa": [2]}, + Constants::VERIFY_ENROLLMENT__PROTECTPUSH_VOICE_URL => {"mfa": [2]}, + Constants::GET_ENROLLED_FACTORS_URL => {"mfa": [1, 2]}, + Constants::ACTIVATE_FACTOR_URL => {"mfa": [1, 2]}, + Constants::VERIFY_FACTOR_URL => {"mfa": [1]}, + Constants::VERIFY_FACTOR_SMS_EMAIL_PROTECT_AUTH_URL => {"mfa": [2]}, + Constants::VERIFY_FACTOR_PROTECTPUSH_VOICE_URL => {"mfa": [2]}, + Constants::DELETE_FACTOR_URL => {"mfa": [1, 2]}, + Constants::GENERATE_INVITE_LINK_URL => {"invite": [1]}, + Constants::SEND_INVITE_LINK_URL => {"invite": [1]}, + Constants::LIST_PRIVILEGES_URL => {"privilege": [1]}, + Constants::CREATE_PRIVILEGE_URL => {"privilege": [1]}, + Constants::UPDATE_PRIVILEGE_URL => {"privilege": [1]}, + Constants::GET_PRIVILEGE_URL => {"privilege": [1]}, + Constants::DELETE_PRIVILEGE_URL => {"privilege": [1]}, + Constants::GET_ROLES_ASSIGNED_TO_PRIVILEGE_URL => {"privilege": [1]}, + Constants::ASSIGN_ROLES_TO_PRIVILEGE_URL => {"privilege": [1]}, + Constants::REMOVE_ROLE_FROM_PRIVILEGE_URL => {"privilege": [1]}, + Constants::GET_USERS_ASSIGNED_TO_PRIVILEGE_URL => {"privilege": [1]}, + Constants::ASSIGN_USERS_TO_PRIVILEGE_URL => {"privilege": [1]}, + Constants::REMOVE_USER_FROM_PRIVILEGE_URL => {"privilege": [1]}, + Constants::GET_ACCOUNT_BRANDS_URL => {"branding": [2]}, + Constants::CREATE_ACCOUNT_BRAND_URL => {"branding": [2]}, + Constants::GET_ACCOUNT_BRAND_URL => {"branding": [2]}, + Constants::UPDATE_ACCOUNT_BRAND_URL => {"branding": [2]}, + Constants::DELETE_ACCOUNT_BRAND_URL => {"branding": [2]}, + Constants::GET_APPS_BRAND_URL => {"branding": [2]}, + Constants::GET_ACCOUNT_EMAIL_SETTINGS => {"branding": [2]}, + Constants::UPDATE_ACCOUNT_EMAIL_SETTINGS => {"branding": [2]}, + Constants::RESET_ACCOUNT_EMAIL_SETTINGS => {"branding": [2]}, + Constants::GET_HOOKS_URL => {"smarthook": [2]}, + Constants::CREATE_HOOK_URL => {"smarthook": [2]}, + Constants::GET_HOOK_URL => {"smarthook": [2]}, + Constants::UPDATE_HOOK_URL => {"smarthook": [2]}, + Constants::DELETE_HOOK_URL => {"smarthook": [2]}, + Constants::GET_HOOK_LOGS_URL => {"smarthook": [2]}, + Constants::GET_HOOK_ENVS_URL => {"smarthook": [2]}, + Constants::CREATE_HOOK_ENV_URL => {"smarthook": [2]}, + Constants::UPDATE_HOOK_ENV_URL => {"smarthook": [2]}, + Constants::DELETE_HOOK_ENV_URL => {"smarthook": [2]}, + Constants::TRACK_EVENT_URL => {"risk": [2]}, + Constants::GET_RISK_SCORE_URL => {"risk": [2]}, + Constants::GET_RISK_RULES_URL => {"risk": [2]}, + Constants::CREATE_RISK_RULE_URL => {"risk": [2]}, + Constants::GET_RISK_RULE_URL => {"risk": [2]}, + Constants::UPDATE_RISK_RULE_URL => {"risk": [2]}, + Constants::DELETE_RISK_RULE_URL => {"risk": [2]}, + Constants::GET_SCORE_INSIGHTS => {"risk": [2]}, + Constants::GET_MAPPINGS_URL => {"user_mapping": [2]}, + Constants::CREATE_MAPPING_URL => {"user_mapping": [2]}, + Constants::GET_MAPPING_URL => {"user_mapping": [2]}, + Constants::UPDATE_MAPPING_URL => {"user_mapping": [2]}, + Constants::DELETE_MAPPING_URL => {"user_mapping": [2]}, + Constants::DRYRUN_MAPPING_URL => {"user_mapping": [2]}, + Constants::GET_MAPPING_CONDITIONS_URL => {"user_mapping": [2]}, + Constants::GET_MAPPING_CONDITION_OPERATORS_URL => {"user_mapping": [2]}, + Constants::GET_MAPPING_CONDITION_VALUES_URL => {"user_mapping": [2]}, + Constants::GET_MAPPING_ACTIONS_URL => {"user_mapping": [2]}, + Constants::GET_MAPPING_ACTION_VALUES_URL => {"user_mapping": [2]}, + Constants::MAPPING_SORT_URL => {"user_mapping": [2]}, + } + } + + end + end + end +end \ No newline at end of file From 6d4b2e825bdd8d7d337f89f1987c4776f1b59a3f Mon Sep 17 00:00:00 2001 From: Helena <62230408+Hel5Sou@users.noreply.github.com> Date: Fri, 26 Mar 2021 13:57:32 -0700 Subject: [PATCH 4/4] Adding more files within the models I'm adding more files. From the Python SDK v2 branch to Ruby translation. Also adding these which weren't created within the Python SDK v1 to this Ruby new one. --- lib/onelogin/api/models.rb | 2 +- lib/onelogin/api/models/app.rb | 44 ++++++++++++++--- lib/onelogin/api/models/assigned_admin.rb | 0 lib/onelogin/api/models/assigned_base.rb | 29 +++++++++++ lib/onelogin/api/models/assigned_user.rb | 0 lib/onelogin/api/models/brand.rb | 37 ++++++++++++++ .../{connector_basic.rb => connector.rb} | 9 ++-- lib/onelogin/api/models/device.rb | 1 + lib/onelogin/api/models/user.rb | 48 +++++++++++++------ 9 files changed, 144 insertions(+), 26 deletions(-) create mode 100644 lib/onelogin/api/models/assigned_admin.rb create mode 100644 lib/onelogin/api/models/assigned_base.rb create mode 100644 lib/onelogin/api/models/assigned_user.rb create mode 100644 lib/onelogin/api/models/brand.rb rename lib/onelogin/api/models/{connector_basic.rb => connector.rb} (60%) diff --git a/lib/onelogin/api/models.rb b/lib/onelogin/api/models.rb index 11ea510..fe42c50 100644 --- a/lib/onelogin/api/models.rb +++ b/lib/onelogin/api/models.rb @@ -1,6 +1,6 @@ require 'onelogin/api/models/app' require 'onelogin/api/models/auth_factor' -require 'onelogin/api/models/connector_basic' +require 'onelogin/api/models/connector' require 'onelogin/api/models/device' require 'onelogin/api/models/event' require 'onelogin/api/models/event_type' diff --git a/lib/onelogin/api/models/app.rb b/lib/onelogin/api/models/app.rb index 4eeefd3..fd578d3 100644 --- a/lib/onelogin/api/models/app.rb +++ b/lib/onelogin/api/models/app.rb @@ -1,3 +1,6 @@ +require 'onelogin/api/util/utils.rb' +require 'onelogin/api/models/base.rb' + module OneLogin module Api module Models @@ -6,15 +9,42 @@ class App attr_accessor :id, :name, :icon, :provisioned attr_accessor :extension, :login_id, :personal + attr_accessor :connector, :visible, :provisioning + attr_accessor :provisioning_status def initialize(data) - @id = data['id'] - @name = data['name'] - @icon = data['icon'] - @provisioned = data['provisioned'] - @extension = data['extension'] - @login_id = data['login_id'] - @personal = data['personal'] + @id = str2int(data['id', nil]) + @name = data['name', ''] + if data.keys.include?('icon') + @icon = data['icon', nil] + else + @icon = data['icon_url', nil] + @connector_id = str2int(data['connector_id', nil]) + end + if data.keys.include?('extension') + @extension = str2bool(data['extension', nil]) + end + if data.keys.include?('visible') + @visible = str2bool(data['visible', nil]) + end + if data.keys.include?('login_id') + @login_id = str2bool(data['login_id', nil]) + end + if data.keys.include?('personal') + @personal = str2bool(data['personal', nil]) + end + if data.keys.include?('provisioned') + @provisioned = str2bool(data['provisioned', nil]) + end + if data.keys.include?('provisioning') + @provisioning = str2bool(data['provisioning', nil]) + end + if data.keys.include?('provisioning_status') + @provisioning_status = str2bool(data['provisioning_status', nil]) + @provisioning_state = str2bool(data['provisioning_state', nil]) + @provisioning_enabled = str2bool(data['provisioning_enabled', nil]) + end + end end end diff --git a/lib/onelogin/api/models/assigned_admin.rb b/lib/onelogin/api/models/assigned_admin.rb new file mode 100644 index 0000000..e69de29 diff --git a/lib/onelogin/api/models/assigned_base.rb b/lib/onelogin/api/models/assigned_base.rb new file mode 100644 index 0000000..5d5b76b --- /dev/null +++ b/lib/onelogin/api/models/assigned_base.rb @@ -0,0 +1,29 @@ +require 'onelogin/api/util/utils.rb' +require 'onelogin/api/models/base.rb' + +module OneLogin + module Api + module Models + + class AssignedBase + include Base + + attr_accessor :id, :name, :email, :username + attr_accessor :assigned, :added_by + + def initialize(data) + @id = str2int(data['id',nil]) + @name = str2int(data['name',nil]) + @email = str2int(data['email',nil]) + @username= str2int(data['username',nil]) + @assigned = str2int(data['assigned',nil]) + @added_by = str2int(data['added_by',nil]) + end + + def get_added_by + return @added_by + end + end + end +end +end \ No newline at end of file diff --git a/lib/onelogin/api/models/assigned_user.rb b/lib/onelogin/api/models/assigned_user.rb new file mode 100644 index 0000000..e69de29 diff --git a/lib/onelogin/api/models/brand.rb b/lib/onelogin/api/models/brand.rb new file mode 100644 index 0000000..0560472 --- /dev/null +++ b/lib/onelogin/api/models/brand.rb @@ -0,0 +1,37 @@ +require 'onelogin/api/util/utils.rb' +require 'onelogin/api/models/base.rb' + +module OneLogin + module Api + module Models + + class Brand Base + attr_accessor :id, :name, :enabled, :custom_support_enabled, :custom_color, + :@custom_accent_color, :custom_masking_color, :custom_masking_opacity, + :enable_custom_label_for_login_screen, :enable_custom_label_for_login_screen, + :login_instruction, :login_instruction_title, :mfa_enrollment_message, + :hide_onelogin_footer, :background, :logo + + def initialize(data) + + @id = str2ing(data['id', nil]) + @name = data['name'] + @enabled = str2bool(data['enabled', False]) + @custom_support_enabled = data['custom_support_enabled', nil] + @custom_color = data['custom_color', nil] + @custom_accent_color = data['custom_accent_color', nil] + @custom_masking_color = data['custom_masking_color', nil] + @custom_masking_opacity = str2int(data['custom_masking_opacity', nil]) + @enable_custom_label_for_login_screen = str2bool(data['enable_custom_label_for_login_screen', nil]) + @custom_label_text_for_login_screen = data['custom_label_text_for_login_screen', nil] + @login_instruction = data['login_instruction', nil] + @login_instruction_title = data['login_instruction_title', nil] + @mfa_enrollment_message = data['mfa_enrollment_message', nil] + @hide_onelogin_footer = str2bool(data['hide_onelogin_footer', nil]) + @background = data['background', nil] + @logo = data['logo', nil] + end + end + end +end +end \ No newline at end of file diff --git a/lib/onelogin/api/models/connector_basic.rb b/lib/onelogin/api/models/connector.rb similarity index 60% rename from lib/onelogin/api/models/connector_basic.rb rename to lib/onelogin/api/models/connector.rb index 44b2b7f..ab40383 100644 --- a/lib/onelogin/api/models/connector_basic.rb +++ b/lib/onelogin/api/models/connector.rb @@ -1,3 +1,5 @@ +require 'onelogin/api/util/utils.rb' + module OneLogin module Api module Models @@ -8,11 +10,12 @@ class ConnectorBasic attr_accessor :icon_url, :allows_new_parameters def initialize(data) - @id = data['id'] + + @id = str2int(data['id']) @name = data['name'] @icon_url = data['icon_url'] - @auth_method = data['auth_method'] - @allows_new_parameters = data['allows_new_parameters'] + @auth_method = str2int(data['auth_method']) + @allows_new_parameters = str2bool(data['allows_new_parameters']) end end end diff --git a/lib/onelogin/api/models/device.rb b/lib/onelogin/api/models/device.rb index b8bb7b8..80a72e4 100644 --- a/lib/onelogin/api/models/device.rb +++ b/lib/onelogin/api/models/device.rb @@ -1,3 +1,4 @@ +require 'onelogin/api/util/utils.rb' module OneLogin module Api module Models diff --git a/lib/onelogin/api/models/user.rb b/lib/onelogin/api/models/user.rb index 4841f57..5cb82af 100644 --- a/lib/onelogin/api/models/user.rb +++ b/lib/onelogin/api/models/user.rb @@ -1,8 +1,11 @@ +require 'onelogin/api/util/utils.rb' +require 'onelogin/api/models/base.rb' + module OneLogin module Api module Models - class User + class User < Base attr_accessor :id, :external_id, :email, :username, :firstname, :lastname, :distinguished_name, :phone, :company, :department, :status, :state, :member_of, :samaccountname, :userprincipalname, @@ -11,7 +14,7 @@ class User :password_changed_at, :invitation_sent_at, :invalid_login_attempts, :last_login, :locked_until def initialize(data) - @id = data['id'] + @id = str2int(data['id', nil]) @external_id = data['external_id'] @email = data['email'].to_s @username = data['username'].to_s @@ -22,29 +25,35 @@ def initialize(data) @company = data['company'].to_s @department = data['department'].to_s @title = data['title'].to_s - @status = data['status'] + @status = str2int(data['status', nil]) @state = data['state'] @member_of = data['member_of'].to_s @samaccountname = data['samaccountname'].to_s @userprincipalname = data['userprincipalname'].to_s @group_id = data['group_id']? data['group_id'].to_i : nil + @role_ids = [] + if data.keys.include?('role_ids') + @role_ids = data['role_ids', []] + else + @role_ids = data['role_id', []] @role_ids = data['role_id']? data['role_id'] : [] @custom_attributes = data['custom_attributes'] ? data['custom_attributes'] : [] @openid_name = data['openid_name'].to_s @locale_code = data['locale_code'].to_s + #@notes = data['notes'] : nil @comment = data['comment'].to_s - @directory_id = data['directory_id'] - @manager_ad_id = data['manager_ad_id'] - @trusted_idp_id = data['trusted_idp_id'] - @manager_user_id = data['manager_user_id'] - @activated_at = data['activated_at']? Time.iso8601(data['activated_at']) : nil - @created_at = data['created_at']? Time.iso8601(data['created_at']) : nil - @updated_at = data['updated_at']? Time.iso8601(data['updated_at']) : nil - @password_changed_at = data['password_changed_at']? Time.iso8601(data['password_changed_at']) : nil - @invitation_sent_at = data['invitation_sent_at']? Time.iso8601(data['invitation_sent_at']) : nil - @invalid_login_attempts = data['invalid_login_attempts'] - @last_login = data['last_login']? Time.iso8601(data['last_login']) : nil - @locked_until = data['locked_until']? Time.iso8601(data['locked_until']) : nil + @directory_id = str2int(data['directory_id', nil]) + @manager_ad_id = str2int(data['manager_ad_id', nil]) + @trusted_idp_id = str2int(data['trusted_idp_id', nil]) + @manager_user_id = data['manager_user_id', nil] + @activated_at = data['activated_at']? str2date(data['activated_at']) : nil + @created_at = data['created_at']? str2date(data['created_at']) : nil + @updated_at = data['updated_at']? str2date(data['updated_at']) : nil + @password_changed_at = data['password_changed_at']? str2date(data['password_changed_at']) : nil + @invitation_sent_at = data['invitation_sent_at']? str2date(data['invitation_sent_at']) : nil + @invalid_login_attempts = str2int(data['invalid_login_attempts', nil]) + @last_login = data['last_login']? str2date(data['last_login']) : nil + @locked_until = data['locked_until']? str2date(data['locked_until']) : nil end def get_role_ids @@ -102,6 +111,13 @@ def get_custom_attributes @custom_attributes end + def get_custom_atributes(name) + if name @custom_attributes.keys.include?('name') + return @custom_attributes[name] + end + return nil + end + def get_user_params return { "external_id"=> self.external_id, @@ -122,6 +138,7 @@ def get_user_params "userprincipalname"=> self.userprincipalname, "group_id"=> self.group_id, "locale_code"=> self.locale_code, + #"notes" => self.notes "openid_name"=> self.openid_name, "directory_id"=> self.directory_id, "manager_ad_id"=> self.manager_ad_id, @@ -133,3 +150,4 @@ def get_user_params end end end +end