• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

GeoSot / Laravel-EnvEditor / 5272693049

pending completion
5272693049

Pull #37

github

web-flow
Merge 2eabf0db3 into 61e92602e
Pull Request #37: chore: update dev dependencies

14 of 14 new or added lines in 5 files covered. (100.0%)

212 of 221 relevant lines covered (95.93%)

55.16 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.56
/src/Controllers/EnvController.php
1
<?php
2

3
namespace GeoSot\EnvEditor\Controllers;
4

5
use GeoSot\EnvEditor\Facades\EnvEditor;
6
use GeoSot\EnvEditor\ServiceProvider;
7
use Illuminate\Http\JsonResponse;
8
use Illuminate\Http\Request;
9
use Illuminate\Routing\Controller as BaseController;
10
use Illuminate\Support\Facades\Artisan;
11
use Illuminate\View\View;
12
use Symfony\Component\HttpFoundation\BinaryFileResponse;
13

14
class EnvController extends BaseController
15
{
16
    /**
17
     * Display main view with the Collection of current .env values.
18
     *
19
     * @return JsonResponse|View
20
     */
21
    public function index()
22
    {
23
        $envValues = EnvEditor::getEnvFileContent();
10✔
24
        if (request()->wantsJson()) {
10✔
25
            return $this->returnGenericResponse(true, ['items' => $envValues]);
5✔
26
        }
27

28
        return view(ServiceProvider::PACKAGE.'::index', compact('envValues'));
5✔
29
    }
30

31
    /**
32
     * Add a new key on current .env file.
33
     */
34
    public function addKey(Request $request): JsonResponse
35
    {
36
        $result = EnvEditor::addKey(
15✔
37
            $request->input('key'),
15✔
38
            $request->input('value'),
15✔
39
            $request->except(['key', 'value'])
15✔
40
        );
15✔
41

42
        return $this->returnGenericResponse($result, [], 'keyWasAdded', $request->input('key'));
15✔
43
    }
44

45
    /**
46
     * Edit a key of current .env file.
47
     */
48
    public function editKey(Request $request): JsonResponse
49
    {
50
        $result = EnvEditor::editKey($request->input('key'), $request->input('value'));
5✔
51

52
        return $this->returnGenericResponse($result, [], 'keyWasEdited', $request->input('key'));
5✔
53
    }
54

55
    /**
56
     * Delete a key from current .env file.
57
     */
58
    public function deleteKey(Request $request): JsonResponse
59
    {
60
        $result = EnvEditor::deleteKey($request->input('key'));
5✔
61

62
        return $this->returnGenericResponse($result, [], 'keyWasDeleted', $request->input('key'));
5✔
63
    }
64

65
    /**
66
     * Display a listing of the resource.
67
     *
68
     * @return View|JsonResponse
69
     */
70
    public function getBackupFiles()
71
    {
72
        $backUpFiles = EnvEditor::getAllBackUps();
10✔
73
        if (request()->wantsJson()) {
10✔
74
            return $this->returnGenericResponse(true, ['items' => $backUpFiles]);
5✔
75
        }
76

77
        return view(ServiceProvider::PACKAGE.'::index', compact('backUpFiles'));
5✔
78
    }
79

80
    /**
81
     * Create BackUp of .env File.
82
     */
83
    public function createBackup(): JsonResponse
84
    {
85
        $result = EnvEditor::backUpCurrent();
5✔
86

87
        return $this->returnGenericResponse($result, [], 'backupWasCreated');
5✔
88
    }
89

90
    /**
91
     * Restore Backup file.
92
     */
93
    public function restoreBackup(string $filename): JsonResponse
94
    {
95
        $result = EnvEditor::restoreBackUp($filename);
5✔
96

97
        return $this->returnGenericResponse($result, [], 'fileWasRestored', $filename);
5✔
98
    }
99

100
    /**
101
     * Delete Backup file.
102
     */
103
    public function destroyBackup(string $filename): JsonResponse
104
    {
105
        $result = EnvEditor::deleteBackup($filename);
5✔
106

107
        return $this->returnGenericResponse($result, [], 'fileWasDeleted', $filename);
5✔
108
    }
109

110
    /**
111
     * Get Files As Download.
112
     */
113
    public function download(string $filename = ''): BinaryFileResponse
114
    {
115
        $path = EnvEditor::getFilePath($filename);
5✔
116

117
        return response()->download($path);
5✔
118
    }
119

120
    /**
121
     * Upload File As BackUp or replace Current .Env.
122
     */
123
    public function upload(Request $request): JsonResponse
124
    {
125
        $request->validate([
5✔
126
            'file' => 'required|file|mimetypes:application/octet-stream,text/plain|mimes:txt,text,',
5✔
127
        ]);
5✔
128
        $replaceCurrentEnv = filter_var($request->input('replace_current'), FILTER_VALIDATE_BOOLEAN);
5✔
129

130
        $file = EnvEditor::upload($request->file('file'), $replaceCurrentEnv);
5✔
131
        $successMsg = ($replaceCurrentEnv) ? 'currentEnvWasReplacedByTheUploadedFile' : 'uploadedFileSavedAsBackup';
5✔
132

133
        return $this->returnGenericResponse(true, [], $successMsg, $file->getFilename());
5✔
134
    }
135

136
    /**
137
     * Clears Config cache to get new values.
138
     */
139
    public function clearConfigCache(): JsonResponse
140
    {
141
        Artisan::call('config:clear');
×
142

143
        return $this->returnGenericResponse(true, ['message' => Artisan::output()]);
×
144
    }
145

146
    /**
147
     * Generic ajax response.
148
     *
149
     * @param array<string, mixed> $data
150
     */
151
    protected function returnGenericResponse(
152
        bool $success,
153
        array $data = [],
154
        string $translationWord = '',
155
        string $keyName = ''
156
    ): JsonResponse {
157
        if (!empty($translationWord) && $success) {
45✔
158
            $data = array_merge($data, [
35✔
159
                'message' => __(
35✔
160
                    ServiceProvider::TRANSLATE_PREFIX."controllerMessages.$translationWord",
35✔
161
                    ['name' => $keyName]
35✔
162
                ),
35✔
163
            ]);
35✔
164
        }
165

166
        return response()->json(array_merge($data, [
45✔
167
            'success' => $success,
45✔
168
        ]), $success ? 200 : 400);
45✔
169
    }
170
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc