Module: CommandTower::Audit::Masking

Defined in:
lib/command_tower/audit/masking.rb

Constant Summary collapse

REDACTED =
"********"

Class Method Summary collapse

Class Method Details

.email(string) ⇒ Object



29
30
31
32
33
34
# File 'lib/command_tower/audit/masking.rb', line 29

def email(string)
  local, domain = string.split("@", 2)
  return REDACTED if local.blank? || domain.blank?

  "#{local[0]}***@#{domain}"
end

.phone(string) ⇒ Object



22
23
24
25
26
27
# File 'lib/command_tower/audit/masking.rb', line 22

def phone(string)
  digits = string.gsub(/\D/, "")
  return REDACTED if digits.length < 4

  "#{'*' * 7}#{digits[-4, 4]}"
end

.scalar?(raw) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/command_tower/audit/masking.rb', line 36

def scalar?(raw)
  raw.is_a?(String) || raw.is_a?(Numeric)
end

.value(field:, raw:) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/command_tower/audit/masking.rb', line 10

def value(field:, raw:)
  return if raw.nil?
  return REDACTED unless scalar?(raw)

  string = raw.to_s
  case field.to_s
  when "phone" then phone(string)
  when "email" then email(string)
  else REDACTED
  end
end