variable "account" {
  type        = string
  description = "snowflake account id"
  default     = "delphidev"
}

variable "users" {
  type = map(object({
    first_name                     = string,
    last_name                      = string,
    email                          = string,
    default_role                   = string,
    roles                          = list(string)
    username                       = optional(string, ""),
    comment                        = optional(string),
    default_wh                     = optional(string),
    default_secondary_roles_option = optional(string, "ALL")
    owner                          = optional(string, "USERADMIN"),
    disabled                       = optional(bool, false),
    rsa_public_key                 = optional(string),
    network_policy                 = optional(string),
  }))
  description = "A map of users with their first/last names and default role and Email as a key"

  # Validate that all sonymusicpub.com domain users are in the approved list
  validation {
    condition = alltrue([
      for k, v in var.users :
      !endswith(lower(v.email), "sonymusicpub.com") ||
      contains([], lower(v.email))
    ])
    error_message = "ERROR: Attempted to create users with sonymusicpub.com email domain that are not in the approved list. For competitive reasons, adding new sonymusicpub.com users requires explicit approval from either Farouk, Myron or Jacob."
  }
  default = {
    "ABENGI" = {
      email        = "alikutay.bengi@sonymusic.com"
      first_name   = "Ali Kutay"
      last_name    = "Bengi"
      default_role = "EXPLORATION_USER"
      roles = [
        "AE_CRM_USER",
        "EXPLORATION_USER"
      ]
    }
    "ETARANENKO" = {
      email        = "elena.taranenko.sme@sonymusic-pde.com"
      first_name   = "Elena "
      last_name    = "Taranenko"
      default_role = "ENGINEER"
      roles = [
        "AE_CRM_USER",
        "AE_REPORTING_USER",
        "CHARTMETRIC_TIKTOK_USER",
        "ENGINEER",
        "EXPLORATION_ADV_USER",
        "EXPLORATION_AD_PLUS",
        "EXPLORATION_USER",
        "QA_AE_CRM_USER",
        "QA_AE_REPORTING_USER",
        "QA_CHARTMETRIC_TIKTOK_USER",
        "QA_CHARTMETRIC_USER",
        "QA_EXPLORATION_ADV_USER",
        "QA_EXPLORATION_AD_PLUS",
        "QA_EXPLORATION_SYS_USER",
        "QA_EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "SPURISIC" = {
      email        = "sead.purisic@sonymusic-pde.com"
      first_name   = "Sead"
      last_name    = "Purisic"
      default_role = "AE_CRM_USER"
      roles = [
        "AE_CRM_USER"
      ]
    }
    "VSVIRSKIY" = {
      email        = "viktor.svirskiy.sme@sonymusic-pde.com"
      first_name   = "Svirskiy"
      last_name    = "Viktor"
      default_role = "EXPLORATION_USER"
      roles = [
        "APOLLO_TEAM_ROLE",
        "EXPLORATION_USER"
      ]
    }
    "MPALAZZOLO" = {
      email        = "matt.palazzolo@sonyatv.com"
      first_name   = "Matt."
      last_name    = "Palazzolo"
      default_role = "CHARTMETRIC_TIKTOK_USER"
      roles = [
        "CHARTMETRIC_TIKTOK_USER"
      ]
    }
    "SCARESS" = {
      email        = "stephanie.caress@sonyatv.com"
      first_name   = "Stephanie"
      last_name    = "Caress"
      default_role = "CHARTMETRIC_TIKTOK_USER"
      roles = [
        "CHARTMETRIC_TIKTOK_USER"
      ]
    }
    "ACIKAJ" = {
      email        = "aiola.cikaj@sonymusic-pde.com"
      first_name   = "Aiola"
      last_name    = "Cikaj"
      comment      = "aiola.cikaj@sonymusic.com"
      default_role = "FIVETRAN_QA_ROLE"
      roles = [
        "CRM_ADMIN_USER",
        "EXPLORATION_USER",
        "FIVETRAN_PRIME",
        "FIVETRAN_QA_ROLE"
      ]
    }
    "BFLEISCHER" = {
      email        = "bill.fleischer@sonymusic-pde.com"
      first_name   = "Bill"
      last_name    = "Fleischer"
      default_role = "FIVETRAN_QA_ROLE"
      roles = [
        "CRM_ADMIN_USER",
        "CRM_ECOMMERCE_ROLE",
        "EXPLORATION_USER",
        "FIVETRAN_PRIME",
        "FIVETRAN_QA_ROLE"
      ]
    }
    "VINICIUSTORRES" = {
      email        = "vinicius.torres.sme@sonymusic-pde.com"
      first_name   = "Vinicius"
      last_name    = "Torres"
      default_role = "CRM_ECOMMERCE_ROLE"
      username     = "VINICIUSTORRES"
      roles = [
        "CRM_ECOMMERCE_ROLE",
        "FIVETRAN_PRIME"
      ]
    }
    "JLESLIE" = {
      email        = "joel.leslie@sonymusic.com"
      first_name   = "Joel"
      last_name    = "Leslie"
      default_role = "DS_READER"
      roles = [
        "DS_READER",
        "QA_WHITELIST_USER",
        "STAGE_DNA"
      ]
    }
    "CVALLECILLA" = {
      email        = "carlos.vallecilla@sonymusic-pde.com"
      first_name   = "Carlos"
      last_name    = "Vallecilla"
      default_role = "SYSADMIN"
      roles = [
        "ENGINEER",
        "SYSADMIN"
      ]
    }
    "DBLAIR" = {
      email        = "darren.blair.ext@sonymusic-pde.com"
      first_name   = "Darren"
      last_name    = "Blair"
      comment      = "https://theorchard.atlassian.net/browse/SYS-26524"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "OSHAINOHA" = {
      email        = "oleksandr.shainoha.sme@sonymusic-pde.com"
      first_name   = "Oleksandr"
      last_name    = "Shainoha"
      default_role = "SYSADMIN"
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "JONATHANCRAWLEY" = {
      email        = "jonathan.crawley@sonymusic.com"
      first_name   = "Jonathan"
      last_name    = "Crawley"
      default_role = "EXPLORATION_USER"
      username     = "JONATHANCRAWLEY"
      roles = [
        "EXPLORATION_AD_PLUS",
        "EXPLORATION_USER"
      ]
    }
    "LOGANKANT" = {
      email        = "logan.kant@sonymusic.com"
      first_name   = "Logan"
      last_name    = "Kant"
      default_role = "EXPLORATION_USER"
      username     = "LOGANKANT"
      roles = [
        "EXPLORATION_AD_PLUS",
        "EXPLORATION_USER"
      ]
    }
    "OZHOVNUVATYI" = {
      email        = "oleh.zhovnuvatyi.sme@sonymusic-pde.com"
      first_name   = "Oleh"
      last_name    = "Zhovnuvatyi"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_AD_PLUS",
        "EXPLORATION_USER"
      ]
    }
    "TMATHAIDAVIS" = {
      email        = "tara.mathai-davis@sonymusic.com"
      first_name   = "Tara"
      last_name    = "Mathai-Davis"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_AD_PLUS",
        "EXPLORATION_USER"
      ]
    }
    "TILLRENTSCHLER" = {
      email        = "till.rentschler@sonymusic.com"
      first_name   = "Till"
      last_name    = "Rentschler"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_AD_PLUS",
        "EXPLORATION_USER"
      ]
    }
    "DIAKUNCHYKO" = {
      email        = "dmitry.iakunchokov.sme@sonymusic-pde.com"
      first_name   = "Dmytro"
      last_name    = "Iakunchykov"
      default_role = "SYSADMIN"
      default_wh   = "TEAM_QA_WH"
      roles = [
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "JCOMTE" = {
      email        = "julien.comte@sonymusic.com"
      first_name   = "Julien"
      last_name    = "Comte"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "JGOVCIYAN" = {
      email        = "jeremy.govciyan@sonymusic.com"
      first_name   = "Jeremy"
      last_name    = "Govciyan"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "LNIELSEN" = {
      email        = "lasse.nielsen@sonymusic.com"
      first_name   = "Nielsen,"
      last_name    = "Lasse Christian"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "MDODINET" = {
      email        = "maxime.dodinet@sonymusic.com"
      first_name   = "Maxime"
      last_name    = "Dodinet"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "NMOHTADI" = {
      email        = "nouha.mohtadi@sonymusic.com"
      first_name   = "Nouha"
      last_name    = "Mohtadi"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "NVAZQUEZ" = {
      email        = "nidia.vazquez@sonymusic.com"
      first_name   = "Nidia"
      last_name    = "Vazquez"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "PTRITANT" = {
      email        = "pierre.tritant@sonymusic.com"
      first_name   = "Pierre"
      last_name    = "Tritant"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "ROBGODWIN" = {
      email        = "rgodwin@sonymusic-pde.com"
      first_name   = "Rob"
      last_name    = "Godwin"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "SLEYH" = {
      email        = "simon.leyh@sonymusic.com"
      first_name   = "Simon"
      last_name    = "Leyh"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "SMUELLER" = {
      email        = "simon.mueller@sonymusic.com"
      first_name   = "Simon"
      last_name    = "Mueller"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "ACHIMMATTHES" = {
      email        = "achim.matthes@sonymusic.com"
      first_name   = "Achim"
      last_name    = "Matthes"
      default_role = "PARTNERIZE_USER"
      username     = "ACHIMMATTHES"
      roles = [
        "PARTNERIZE_USER"
      ]
    }
    "CHRISDEVRIES" = {
      email        = "chris.devries@sonymusic.com"
      first_name   = "Chris"
      last_name    = "Devries"
      default_role = "PARTNERIZE_USER"
      username     = "CHRISDEVRIES"
      roles = [
        "PARTNERIZE_USER"
      ]
    }
    "ERINVANARSDALE" = {
      email        = "erin.vanarsdale@sonymusic.com"
      first_name   = "Erin"
      last_name    = "VanArsdale"
      default_role = "PARTNERIZE_USER"
      username     = "ERINVANARSDALE"
      roles = [
        "PARTNERIZE_USER"
      ]
    }
    "MARTINSCHOENBERGER" = {
      email        = "martin.schoenberger@sonymusic.com"
      first_name   = "Martin"
      last_name    = "Schoenberger"
      default_role = "PARTNERIZE_USER"
      username     = "MARTINSCHOENBERGER"
      roles = [
        "PARTNERIZE_USER"
      ]
    }
    "PETERMCSTRAVICK" = {
      email        = "peter.mcstravick@sonymusic.com"
      first_name   = "Peter"
      last_name    = "McStravick"
      default_role = "PARTNERIZE_USER"
      username     = "PETERMCSTRAVICK"
      roles = [
        "PARTNERIZE_USER"
      ]
    }
    "SOPHIAJOSEPH" = {
      email        = "sophia.joseph@sonymusic.com"
      first_name   = "Sophia"
      last_name    = "Joseph"
      default_role = "PARTNERIZE_USER"
      username     = "SOPHIAJOSEPH"
      roles = [
        "PARTNERIZE_USER"
      ]
    }
    "DKARNAUKH" = {
      email        = "karnaukh.dmitry.sme@sonymusic-pde.com"
      first_name   = "Dmitry"
      last_name    = "Karnaukh"
      default_role = "SYSADMIN"
      roles = [
        "SYSADMIN"
      ]
    }
    "SLAPOSHKO" = {
      email        = "serhii.laposhko.sme@sonymusic-pde.com"
      first_name   = "Serhii"
      last_name    = "Laposhko"
      default_role = "SYSADMIN"
      roles = [
        "SYSADMIN"
      ]
    }
    "WCHEONG" = {
      email        = "wilson.cheong@sonymusic-pde.com"
      first_name   = "Wilson"
      last_name    = "Cheong"
      default_role = "BILLING_ROLE"
      default_wh   = "TEAM_DEV_BA_WH"
      roles = [
        "BILLING_ROLE"
      ]
    }
    "lnunez" = {
      email        = "leandro.nunez.sme@sonymusic-pde.com"
      first_name   = "Leandro"
      last_name    = "Nuñez"
      default_role = "FIVETRAN_PRIME"
      roles = [
        "CRM_ADMIN_USER",
        "CRM_ECOMMERCE_ROLE",
        "FIVETRAN_PRIME"
      ]
    }
    "jtraversa" = {
      email        = "juan.traversa.sme@sonymusic-pde.com"
      first_name   = "Juan"
      last_name    = "Traversa"
      default_role = "FIVETRAN_PRIME"
      roles = [
        "CRM_ADMIN_USER",
        "CRM_ECOMMERCE_ROLE",
        "FIVETRAN_PRIME"
      ]
    }
    "MARIANANOVOSTAVSKA" = {
      email        = "mariana.novostavska.sme@sonymusic-pde.com"
      first_name   = "Mariana"
      last_name    = "Novostavska"
      default_role = "APOLLO_TEAM_ROLE"
      roles = [
        "APOLLO_TEAM_ROLE"
      ]
    }
    "RAINBOMBERG" = {
      email        = "rbomberg@sonymusic-pde.com"
      first_name   = "Rain"
      last_name    = "Bomberg"
      default_role = "CRM_FAN_SEGMENTATION_MODEL"
      roles = [
        "CRM_ADMIN_USER",
        "EXPLORATION_AD_PLUS"
      ]
    }
    "ARMANASRYAN" = {
      email        = "aasryan@sonymusic-pde.com"
      first_name   = "Arman"
      last_name    = "Asryan"
      default_role = "EXPLORATION_USER"
      disabled     = true
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "EGORFEDOROV" = {
      email        = "efedorov@sonymusic-pde.com"
      first_name   = "Egor"
      last_name    = "Fedorov"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "ADEBOLAOSHOMOJI" = {
      email        = "aoshomoji@sonymusic-pde.com"
      first_name   = "Adebola"
      last_name    = "Oshomoji"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "BORISUVAROV" = {
      email        = "buvarov@sonymusic-pde.com"
      first_name   = "Boris"
      last_name    = "Uvarov"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "MICHAELSTEAD" = {
      email        = "mstead@sonymusic-pde.com"
      first_name   = "Michael"
      last_name    = "Stead"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "CARRIEBEESLEY" = {
      email        = "cbeesley@sonymusic-pde.com"
      first_name   = "Carrie"
      last_name    = "Beesley"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "OKSANAEFANOVA" = {
      email        = "oefanova@sonymusic-pde.com"
      first_name   = "Oksana"
      last_name    = "Efanova"
      default_role = "DEV_ENGINEERING"
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
    "MARGARITATIMASHOVA" = {
      email        = "margarita.timashova@sonymusic-pde.com"
      first_name   = "Margarita"
      last_name    = "Timashova"
      default_role = "L1SUPPORT"
      roles = [
        "EXPLORATION_USER",
        "L1SUPPORT"
      ]
    }
    "MKHIMKA" = {
      email        = "mkhimka@sonymusic-pde.com"
      first_name   = "Maria"
      last_name    = "Khimka"
      default_role = "L1SUPPORT"
      roles = [
        "EXPLORATION_USER",
        "L1SUPPORT"
      ]
    }
    "NPATEL" = {
      email        = "npatel@sonymusic-pde.com"
      first_name   = "Namrata"
      last_name    = "Patel"
      default_role = "KAFKA_DATA_HIGHWAY_TEAM"
      roles = [
        "KAFKA_DATA_HIGHWAY_TEAM",
        "CICD_WH_WAREHOUSE_ACCESS"
      ]
    }
    "SSAVVA" = {
      email        = "ssavva@sonymusic-pde.com"
      first_name   = "Sergey"
      last_name    = "SAVVA"
      default_role = "KAFKA_DATA_HIGHWAY_TEAM"
      roles = [
        "KAFKA_DATA_HIGHWAY_TEAM"
      ]
    }
    "RTORRES" = {
      email        = "rtorres@sonymusic-pde.com"
      first_name   = "Roman"
      last_name    = "Torres"
      default_role = "KAFKA_DATA_HIGHWAY_TEAM"
      roles = [
        "KAFKA_DATA_HIGHWAY_TEAM"
      ]
    }
    "JDIAZ" = {
      email          = "juan.diaz@sonymusic-pde.com"
      first_name     = "Juan"
      last_name      = "Diaz"
      default_role   = "KAFKA_DATA_HIGHWAY_TEAM"
      rsa_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApVlTwsD8xb5JTHFI+kv9ahfqJ1gBloG8LOMCTsvXgD/HP9XL2SMLmlGSlLfECHqj365Q5GrIm7li5LiU+nk0fnJuEwJ/5VOOHMzKSPRmAIbG9BYahilUNqk61oWEGUEMjK+x/aEvvnYBNwjvisB7b9UIpZ1Dpyr4lVqIWJNtz1SN0H88DXm8Xmliltxa+Il2Di5k3DalrRjPBe+wO/SxnlKIWlxY3ciB7R95bM/n2b/AZY8MIL96pJ29i6EBonigWfbNp3otGRA2QbG4cRWfb8d2BxubI0qgqqk/bNCn+9ACSD4kzlH8bWa15LHFFOV+rsrtO9UypiN7SsKtBZgGWQIDAQAB"
      roles = [
        "KAFKA_DATA_HIGHWAY_TEAM"
      ]
    }
    "APRYSCHEPA" = {
      email        = "alex.pryschepa.ext@sonymusic-pde.com"
      first_name   = "Alex"
      last_name    = "Pryschepa"
      comment      = "https://theorchard.atlassian.net/browse/SYS-23001"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "RPAPAT" = {
      email        = "rpapat@sonymusic-pde.com"
      first_name   = "Reshma"
      last_name    = "Papat"
      comment      = "https://theorchard.atlassian.net/browse/SYS-24096"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "MDADHANIA" = {
      email        = "mdadhania@sonymusic-pde.com"
      first_name   = "Mital"
      last_name    = "Dadhania"
      comment      = "https://theorchard.atlassian.net/browse/SYS-24096"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "RLIEBERMAN" = {
      email        = "rhea.lieberman@sonymusic-pde.com"
      first_name   = "Rhea"
      last_name    = "Lieberman"
      comment      = "https://theorchard.atlassian.net/browse/SYS-24102"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_USER"
      ]
    }
    "DGALE" = {
      email        = "David.Gale@sonymusic.com"
      first_name   = "David"
      last_name    = "Gale"
      rsa_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0OIQ/5P9fIYHuOmnY5K0CzsJV1Ro4kqT/TqQCRc7iFtu/oh1OS6OmCvYYRFfUUr8PILW5mH9wPswjM4DohxI8m+InZNm5apHGC4atZg74wxsGoaLN1w8hqSN2CluymA4OnNB84AyHZsd9k2MhxeCzvfjlm0LP4wA+7HW4XNkb+SmRWkjInBwh/7XfUNG0L6J6iR86NxXzZPIlv7XmiUYuB9O5dlTZOTqhtRTFTzNB0MPDvLjrW1OWT0CLqaf95cnNaflB5wsIRazIgYU7qWj3Sez2QZJynrAtgYnez4rqu7pB5C7+gwzhACViyga1EN4gtkyYBwLYkyHETG0pfbCewIDAQAB"
      default_role = "EXPLORATION_USER"
      roles = [
        "EXPLORATION_ADV_USER",
        "EXPLORATION_USER",
        "SYSADMIN"
      ]
    }
  }
}
