Skip to content
This repository was archived by the owner on Feb 20, 2025. It is now read-only.

Commit dc9ac47

Browse files
author
Andrey Helldar
committed
Added forced hiding of private data
1 parent 55f291a commit dc9ac47

File tree

7 files changed

+198
-7
lines changed

7 files changed

+198
-7
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
},
1717
"require": {
1818
"php": "^7.3|^8.0",
19-
"andrey-helldar/support": "^2.3"
19+
"andrey-helldar/support": "^2.5"
2020
},
2121
"require-dev": {
2222
"mockery/mockery": "^1.3.1",

src/Services/Compiler.php

+22-5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
final class Compiler
99
{
10+
protected $hides = ['CLIENT', 'HOOK', 'KEY', 'LOGIN', 'PASS', 'SECRET', 'TOKEN', 'USER'];
11+
1012
protected $separator = "\n";
1113

1214
protected $stringify;
@@ -45,16 +47,26 @@ public function get(): string
4547

4648
protected function replace(string $key, $value)
4749
{
48-
if ($this->isKeeping($key)) {
49-
return $value;
50-
}
50+
switch (true) {
51+
case $this->isForceHiding($key):
52+
return null;
53+
54+
case $this->isKeeping($key):
55+
return $value;
5156

52-
return $this->value($key);
57+
default:
58+
return $this->value($key);
59+
}
5360
}
5461

5562
protected function isKeeping(string $key): bool
5663
{
57-
return in_array($key, $this->config->keep());
64+
return $this->inArray($key, $this->config->keep());
65+
}
66+
67+
protected function isForceHiding(string $key): bool
68+
{
69+
return $this->inArray($key, $this->hides);
5870
}
5971

6072
protected function value(string $key)
@@ -94,4 +106,9 @@ protected function isEmptyRow($key, $value): bool
94106
{
95107
return is_numeric($key) && empty($value);
96108
}
109+
110+
protected function inArray(string $key, array $array): bool
111+
{
112+
return Str::contains($key, $array);
113+
}
97114
}

tests/fixtures/config.php

+31-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,39 @@
11
<?php
22

33
return [
4-
'keep' => ['APP_ENV', 'LOG_CHANNEL'],
4+
'keep' => [
5+
'APP_ENV',
6+
'LOG_CHANNEL',
7+
8+
'FOO_CLIENT_BAR',
9+
'FOO_HOOK_BAR',
10+
'FOO_KEY_BAR',
11+
'FOO_LOGIN_BAR',
12+
'FOO_PASS_BAR',
13+
'FOO_SECRET_BAR',
14+
'FOO_TOKEN_BAR',
15+
'FOO_USER_BAR',
16+
],
517

618
'forces' => [
719
'DB_HOST' => 'foo',
20+
21+
'CLIENT' => 'bar',
22+
'HOOK' => 'bar',
23+
'KEY' => 'bar',
24+
'LOGIN' => 'bar',
25+
'PASS' => 'bar',
26+
'SECRET' => 'bar',
27+
'TOKEN' => 'bar',
28+
'USER' => 'bar',
29+
30+
'FOO_CLIENT' => 'bar',
31+
'FOO_HOOK' => 'bar',
32+
'FOO_KEY' => 'bar',
33+
'FOO_LOGIN' => 'bar',
34+
'FOO_PASS' => 'bar',
35+
'FOO_SECRET' => 'bar',
36+
'FOO_TOKEN' => 'bar',
37+
'FOO_USER' => 'bar',
838
],
939
];

tests/fixtures/expected

+36
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,39 @@ GITHUB_CLIENT_SECRET=null
4646

4747
FOO_ONE=null
4848
FOO_TWO=null
49+
50+
CLIENT=null
51+
HOOK=null
52+
KEY=null
53+
LOGIN=null
54+
PASS=null
55+
SECRET=null
56+
TOKEN=null
57+
USER=null
58+
59+
FOO_CLIENT=null
60+
FOO_HOOK=null
61+
FOO_KEY=null
62+
FOO_LOGIN=null
63+
FOO_PASS=null
64+
FOO_SECRET=null
65+
FOO_TOKEN=null
66+
FOO_USER=null
67+
68+
CLIENT_BAR=null
69+
HOOK_BAR=null
70+
KEY_BAR=null
71+
LOGIN_BAR=null
72+
PASS_BAR=null
73+
SECRET_BAR=null
74+
TOKEN_BAR=null
75+
USER_BAR=null
76+
77+
FOO_CLIENT_BAR=null
78+
FOO_HOOK_BAR=null
79+
FOO_KEY_BAR=null
80+
FOO_LOGIN_BAR=null
81+
FOO_PASS_BAR=null
82+
FOO_SECRET_BAR=null
83+
FOO_TOKEN_BAR=null
84+
FOO_USER_BAR=null

tests/fixtures/expected-config

+36
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,39 @@ GITHUB_CLIENT_SECRET=null
4646

4747
FOO_ONE=null
4848
FOO_TWO=null
49+
50+
CLIENT=null
51+
HOOK=null
52+
KEY=null
53+
LOGIN=null
54+
PASS=null
55+
SECRET=null
56+
TOKEN=null
57+
USER=null
58+
59+
FOO_CLIENT=null
60+
FOO_HOOK=null
61+
FOO_KEY=null
62+
FOO_LOGIN=null
63+
FOO_PASS=null
64+
FOO_SECRET=null
65+
FOO_TOKEN=null
66+
FOO_USER=null
67+
68+
CLIENT_BAR=null
69+
HOOK_BAR=null
70+
KEY_BAR=null
71+
LOGIN_BAR=null
72+
PASS_BAR=null
73+
SECRET_BAR=null
74+
TOKEN_BAR=null
75+
USER_BAR=null
76+
77+
FOO_CLIENT_BAR=null
78+
FOO_HOOK_BAR=null
79+
FOO_KEY_BAR=null
80+
FOO_LOGIN_BAR=null
81+
FOO_PASS_BAR=null
82+
FOO_SECRET_BAR=null
83+
FOO_TOKEN_BAR=null
84+
FOO_USER_BAR=null

tests/fixtures/source

+36
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,39 @@ GITHUB_CLIENT_SECRET=qwerty
4646

4747
FOO_ONE=123
4848
FOO_TWO=456
49+
50+
CLIENT=foo
51+
HOOK=foo
52+
KEY=foo
53+
LOGIN=foo
54+
PASS=foo
55+
SECRET=foo
56+
TOKEN=foo
57+
USER=foo
58+
59+
FOO_CLIENT=foo
60+
FOO_HOOK=foo
61+
FOO_KEY=foo
62+
FOO_LOGIN=foo
63+
FOO_PASS=foo
64+
FOO_SECRET=foo
65+
FOO_TOKEN=foo
66+
FOO_USER=foo
67+
68+
CLIENT_BAR=foo
69+
HOOK_BAR=foo
70+
KEY_BAR=foo
71+
LOGIN_BAR=foo
72+
PASS_BAR=foo
73+
SECRET_BAR=foo
74+
TOKEN_BAR=foo
75+
USER_BAR=foo
76+
77+
FOO_CLIENT_BAR=foo
78+
FOO_HOOK_BAR=foo
79+
FOO_KEY_BAR=foo
80+
FOO_LOGIN_BAR=foo
81+
FOO_PASS_BAR=foo
82+
FOO_SECRET_BAR=foo
83+
FOO_TOKEN_BAR=foo
84+
FOO_USER_BAR=foo

tests/fixtures/source-config

+36
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,39 @@ GITHUB_CLIENT_SECRET=qwerty
4646

4747
FOO_ONE=123
4848
FOO_TWO=456
49+
50+
CLIENT=foo
51+
HOOK=foo
52+
KEY=foo
53+
LOGIN=foo
54+
PASS=foo
55+
SECRET=foo
56+
TOKEN=foo
57+
USER=foo
58+
59+
FOO_CLIENT=foo
60+
FOO_HOOK=foo
61+
FOO_KEY=foo
62+
FOO_LOGIN=foo
63+
FOO_PASS=foo
64+
FOO_SECRET=foo
65+
FOO_TOKEN=foo
66+
FOO_USER=foo
67+
68+
CLIENT_BAR=foo
69+
HOOK_BAR=foo
70+
KEY_BAR=foo
71+
LOGIN_BAR=foo
72+
PASS_BAR=foo
73+
SECRET_BAR=foo
74+
TOKEN_BAR=foo
75+
USER_BAR=foo
76+
77+
FOO_CLIENT_BAR=foo
78+
FOO_HOOK_BAR=foo
79+
FOO_KEY_BAR=foo
80+
FOO_LOGIN_BAR=foo
81+
FOO_PASS_BAR=foo
82+
FOO_SECRET_BAR=foo
83+
FOO_TOKEN_BAR=foo
84+
FOO_USER_BAR=foo

0 commit comments

Comments
 (0)