ApiTokenKey   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 66
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 66
loc 66
ccs 0
cts 18
cp 0
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 14 14 2
A generateRandomKey() 4 4 1
A setKeyInEnvironmentFile() 14 14 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace App\Support\Console\Commands;
4
5
use Illuminate\Console\Command;
6
7 View Code Duplication
class ApiTokenKey extends Command
8
{
9
    /**
10
     * The name and signature of the console command.
11
     *
12
     * @var string
13
     */
14
    protected $signature = 'api:token-key {--show : Display the key instead of modifying files}';
15
16
    /**
17
     * The console command description.
18
     *
19
     * @var string
20
     */
21
    protected $description = 'Set the api token key';
22
23
    /**
24
     * Execute the console command.
25
     *
26
     * @return mixed
27
     */
28
    public function handle()
29
    {
30
        $key = $this->generateRandomKey();
31
32
        if ($this->option('show')) {
33
            return $this->comment($key);
34
        }
35
36
        $this->setKeyInEnvironmentFile($key);
37
38
        $this->laravel['config']['support.api.token.key'] = $key;
39
40
        $this->info("Api token key [$key] set successfully.");
41
    }
42
43
    /**
44
     * Generate a random key for the api token.
45
     *
46
     * @return string
47
     */
48
    protected function generateRandomKey()
49
    {
50
        return str_random(32);
51
    }
52
53
    /**
54
     * Set the api token key in the environment file.
55
     *
56
     * @param  string  $key
57
     */
58
    protected function setKeyInEnvironmentFile($key)
59
    {
60
        $content = file_get_contents($this->laravel->environmentFilePath());
61
62
        $text = 'API_TOKEN_KEY='.$key;
63
64
        $content = preg_replace('#API_TOKEN_KEY=.*#', $text, $content, -1, $replaceCount);
65
66
        if (0 === $replaceCount) {
67
            $content .= $text.PHP_EOL;
68
        }
69
70
        file_put_contents($this->laravel->environmentFilePath(), $content);
71
    }
72
}
73