Validator   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 74
Duplicated Lines 18.92 %

Coupling/Cohesion

Components 1
Dependencies 12

Importance

Changes 3
Bugs 1 Features 0
Metric Value
wmc 6
c 3
b 1
f 0
lcom 1
cbo 12
dl 14
loc 74
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
B validateRegisterForm() 7 26 2
A validateLoginForm() 0 18 2
B validatePasswordChangeForm() 7 25 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\Validation;
4
5
use Albert221\Validation\Validator as v;
6
use Albert221\Validation\Rule;
7
8
// Custom rules
9
use App\Validation\Rules\EmailAvailable as EmailAvailable;
10
use App\Validation\Rules\EmailOccupied as EmailOccupied;
11
use App\Validation\Rules\PasswordValid as PasswordValid;
12
use App\Validation\Rules\PasswordOld as PasswordOld;
13
use App\Validation\Rules\PasswordNotOld as PasswordNotOld;
14
15
class Validator extends v
16
{
17
    public function validateRegisterForm($request)
18
    {
19
        $fields = [
20
            'email',
21
            'password',
22
            'name',
23
        ];
24
25 View Code Duplication
        foreach ($fields as $field) {
26
            $this->addField($field, $request->getParam($field));
27
            $this->addRule($field, new Rule\Required())
28
                ->setMessage('To pole nie może być puste');
29
            $this->addRule($field, new Rule\MinLength(3))
30
                ->setMessage('Wartość tego pola nie może być krótsza niż 3');
31
            $this->addRule($field, new Rule\MaxLength(25))
32
                ->setMessage('Wartość tego pola nie może być dłuższa niż 25');
33
        }
34
35
        $this->addRule('email', new Rule\Email())
36
            ->setMessage('Wprowadź poprawny adres email');
37
        $this->addRule('email', new EmailAvailable());
38
        //$this->addRule('name', new Rule\Alphanumeric())
39
        //    ->setMessage('To pole przyjmuje tylko wartości alfanumeryczne');
40
41
        return $this->validate();
42
    }
43
44
    public function validateLoginForm($request)
45
    {
46
        $fields = [
47
            'email',
48
            'password',
49
        ];
50
51
        foreach ($fields as $field) {
52
            $this->addField($field, $request->getParam($field));
53
            $this->addRule($field, new Rule\Required())
54
                ->setMessage('To pole nie może być puste');
55
        }
56
57
        $this->addRule('email', new EmailOccupied());
58
        $this->addRule('password', new PasswordValid($request->getParam('email')));
59
60
        return $this->validate();
61
    }
62
63
    public function validatePasswordChangeForm($request)
64
    {
65
        $fields = [
66
            'password_old',
67
            'password1',
68
            'password2',
69
        ];
70
71 View Code Duplication
        foreach ($fields as $field) {
72
            $this->addField($field, $request->getParam($field));
73
            $this->addRule($field, new Rule\Required())
74
                ->setMessage('To pole nie może być puste');
75
            $this->addRule($field, new Rule\MinLength(3))
76
                ->setMessage('Wartość tego pola nie może być krótsza niż 3');
77
            $this->addRule($field, new Rule\MaxLength(25))
78
                ->setMessage('Wartość tego pola nie może być dłuższa niż 25');
79
        }
80
81
        $this->addRule('password_old', new PasswordOld());
82
        $this->addRule('password1', new PasswordNotOld());
83
        $this->addRule('password2', new Rule\Equal($request->getParam('password1')))
84
            ->setMessage('Błędnie powtórzono hasło');
85
86
        return $this->validate();
87
    }
88
}
89