Module: Piiguard
- Defined in:
- lib/piiguard.rb,
lib/piiguard/railtie.rb,
lib/piiguard/version.rb,
lib/piiguard/masked_logger.rb
Defined Under Namespace
Classes: MaskedLogger, Railtie
Constant Summary
collapse
- EMAIL_REGEX =
/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/i
- PHONE_REGEX =
/\b\d{10}\b/
- VERSION =
"0.1.0"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.config ⇒ Object
Returns the value of attribute config.
13
14
15
|
# File 'lib/piiguard.rb', line 13
def config
@config
end
|
.custom_filters ⇒ Object
Returns the value of attribute custom_filters.
13
14
15
|
# File 'lib/piiguard.rb', line 13
def custom_filters
@custom_filters
end
|
.enabled ⇒ Object
Returns the value of attribute enabled.
13
14
15
|
# File 'lib/piiguard.rb', line 13
def enabled
@enabled
end
|
Class Method Details
22
23
24
25
26
27
28
|
# File 'lib/piiguard.rb', line 22
def self.configure
self.config ||= OpenStruct.new(
mask_email: true,
mask_phone: true
)
yield(config)
end
|
.default_filters ⇒ Object
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/piiguard.rb', line 32
def self.default_filters
[
:email,
:phone,
:mobile,
:password,
:token,
:api_key
]
end
|
.filters ⇒ Object
43
44
45
|
# File 'lib/piiguard.rb', line 43
def self.filters
(default_filters + (custom_filters || [])).uniq
end
|
.mask(data) ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/piiguard.rb', line 47
def self.mask(data)
case data
when String
mask_string(data)
when Hash
data.each_with_object({}) do |(k,v), result|
result[k] = mask(v)
end
when Array
data.map { |v| mask(v) }
else
data
end
end
|
.mask_string(text) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/piiguard.rb', line 62
def self.mask_string(text)
result = text
if config&.mask_email
result = result.gsub(EMAIL_REGEX, "[EMAIL]")
end
if config&.mask_phone
result = result.gsub(PHONE_REGEX, "[PHONE]")
end
result
end
|