User.php
2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
namespace App\Model;
use App\Constants\AclRoles;
use App\Mvc\DateTrackingModel;
use App\User\Service;
use PhalconApi\Exception;
use PhalconApi\Constants\ErrorCodes;
class User extends DateTrackingModel
{
public $id;
public $role;
public $username;
public $password;
public $email;
public function getSource()
{
return 'user';
}
public function columnMap()
{
return parent::columnMap() + [
'id' => 'id',
'role' => 'role',
'email' => 'email',
'username' => 'username',
'password' => 'password'
];
}
public function initialize()
{
$this->hasMany('id', Project::class, 'user_id', [
'alias' => 'Projects',
]);
}
public function getUsername()
{
return $this->username;
}
public function setUsername($username)
{
/** validation: unique, non-empty, 4+ letters **/
$same_user = User::find(["username = '".$username."'"]);
if (isset($same_user[0]) && !empty($same_user[0]->username))
{
$msg = 'Post-data is invalid, trying to use non-unique value `'.$username.'` of `username`';
throw new Exception(ErrorCodes::POST_DATA_INVALID, $msg, ['username' => $username]);
}
elseif (empty($username))
{
$msg = 'Post-data is invalid, trying to use empty value of `username`';
throw new Exception(ErrorCodes::DATA_NOT_FOUND, $msg, ['username' => $username]);
}
elseif (strlen($username) < 4)
{
$msg = 'Post-data is invalid, value of `username` should be more than 4 letters';
throw new Exception(ErrorCodes::POST_DATA_INVALID, $msg, ['username' => $username]);
}
/** ---------------------------------------- **/
$this->username = $username;
}
public function getEmail()
{
return $this->email;
}
public function setEmail($email)
{
/** validation: FILTER_VALIDATE_EMAIL **/
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$msg = 'Post-data is invalid, bad email value';
throw new Exception(ErrorCodes::POST_DATA_INVALID, $msg, ['email' => $email]);
}
/** ---------- */
$this->email = $email;
}
public function getRole()
{
$service = new Service();
return $service->getRole();
}
public function setRole($role)
{
/** validation: constant value **/
if (!in_array($role, AclRoles::ALL_ROLES))
{
$msg = 'Post-data is invalid, bad `role` value';
throw new Exception(ErrorCodes::POST_DATA_INVALID, $msg, ['role' => $role]);
}
/** -------------------------- **/
$this->role = $role;
}
}