# M2M_AUTH0_CLIENT_CREDENTIALS
module "m2m_auth0_client_credentials" {
  source = "../../"

  environment        = var.environment
  service_name       = var.service_name
  application_family = var.application_family
  additional_tags    = var.additional_tags
  secret_name        = "M2M_AUTH0_CLIENT_CREDENTIALS"
}


# M2M_JWT_ACCESS_TOKEN
data "aws_lambda_function" "secret_rotation_lambda" {
  function_name = "${var.environment}-lambda-auth0-m2m-token-secret-rotation"
}

resource "random_integer" "rotation_hour" {
  min = 0
  max = 7
}

locals {
  secret_rotation_schedule_expression = var.secret_rotation_schedule_expression == null ? (
    "cron(0 ${random_integer.rotation_hour.result}/8 * * ? *)"
    ) : (
    var.secret_rotation_schedule_expression
  )
}

module "m2m_jwt_access_token" {
  source = "../../"

  environment        = var.environment
  service_name       = var.service_name
  application_family = var.application_family
  additional_tags    = var.additional_tags
  secret_name        = "M2M_JWT_ACCESS_TOKEN"

  secret_rotation_enabled             = true
  secret_rotation_rotate_immediately  = false
  secret_rotation_lambda_arn          = data.aws_lambda_function.secret_rotation_lambda.arn
  secret_rotation_schedule_expression = local.secret_rotation_schedule_expression
  secret_rotation_window_duration     = var.secret_rotation_window_duration
  secret_string                       = jsonencode(local.initial_jwt_access_token)
  secret_rotation_lambda_permission   = false
}
