Skip to content

Commit c586157

Browse files
committed
[L6] Add support for custom model validation logic
1 parent 5b4a65a commit c586157

19 files changed

+226
-330
lines changed

app/Models/Allocation.php

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,10 @@ class Allocation extends Validable
3838
/**
3939
* @var array
4040
*/
41-
protected static $applicationRules = [
42-
'node_id' => 'required',
43-
'ip' => 'required',
44-
'port' => 'required',
45-
];
46-
47-
/**
48-
* @var array
49-
*/
50-
protected static $dataIntegrityRules = [
51-
'node_id' => 'exists:nodes,id',
52-
'ip' => 'ip',
53-
'port' => 'numeric|between:1024,65553',
41+
public static $validationRules = [
42+
'node_id' => 'required|exists:nodes,id',
43+
'ip' => 'required|ip',
44+
'port' => 'required|numeric|between:1024,65553',
5445
'ip_alias' => 'nullable|string',
5546
'server_id' => 'nullable|exists:servers,id',
5647
];

app/Models/ApiKey.php

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -74,30 +74,17 @@ class ApiKey extends Validable
7474
*/
7575
protected $hidden = ['token'];
7676

77-
/**
78-
* Rules defining what fields must be passed when making a model.
79-
*
80-
* @var array
81-
*/
82-
protected static $applicationRules = [
83-
'identifier' => 'required',
84-
'memo' => 'required',
85-
'user_id' => 'required',
86-
'token' => 'required',
87-
'key_type' => 'present',
88-
];
89-
9077
/**
9178
* Rules to protect against invalid data entry to DB.
9279
*
9380
* @var array
9481
*/
95-
protected static $dataIntegrityRules = [
96-
'user_id' => 'exists:users,id',
97-
'key_type' => 'integer|min:0|max:4',
98-
'identifier' => 'string|size:16|unique:api_keys,identifier',
99-
'token' => 'string',
100-
'memo' => 'nullable|string|max:500',
82+
public static $validationRules = [
83+
'user_id' => 'required|exists:users,id',
84+
'key_type' => 'present|integer|min:0|max:4',
85+
'identifier' => 'required|string|size:16|unique:api_keys,identifier',
86+
'token' => 'required|string',
87+
'memo' => 'required|nullable|string|max:500',
10188
'allowed_ips' => 'nullable|json',
10289
'last_used_at' => 'nullable|date',
10390
'r_' . AdminAcl::RESOURCE_USERS => 'integer|min:0|max:3',

app/Models/DaemonKey.php

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,11 @@ class DaemonKey extends Validable
3838
/**
3939
* @var array
4040
*/
41-
protected static $applicationRules = [
42-
'user_id' => 'required',
43-
'server_id' => 'required',
44-
'secret' => 'required',
45-
'expires_at' => 'required',
46-
];
47-
48-
/**
49-
* @var array
50-
*/
51-
protected static $dataIntegrityRules = [
52-
'user_id' => 'numeric|exists:users,id',
53-
'server_id' => 'numeric|exists:servers,id',
54-
'secret' => 'string|min:20',
55-
'expires_at' => 'date',
41+
public static $validationRules = [
42+
'user_id' => 'required|numeric|exists:users,id',
43+
'server_id' => 'required|numeric|exists:servers,id',
44+
'secret' => 'required|string|min:20',
45+
'expires_at' => 'required|date',
5646
];
5747

5848
/**

app/Models/Database.php

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,15 @@ class Database extends Validable
4343
'database_host_id' => 'integer',
4444
];
4545

46-
protected static $applicationRules = [
47-
'server_id' => 'required',
48-
'database_host_id' => 'required',
49-
'database' => 'required',
50-
'remote' => 'required',
51-
];
52-
53-
protected static $dataIntegrityRules = [
54-
'server_id' => 'numeric|exists:servers,id',
55-
'database_host_id' => 'exists:database_hosts,id',
56-
'database' => 'string|alpha_dash|between:3,100',
46+
/**
47+
* @var array
48+
*/
49+
public static $validationRules = [
50+
'server_id' => 'required|numeric|exists:servers,id',
51+
'database_host_id' => 'required|exists:database_hosts,id',
52+
'database' => 'required|string|alpha_dash|between:3,100',
5753
'username' => 'string|alpha_dash|between:3,100',
58-
'remote' => 'string|regex:/^[0-9%.]{1,15}$/',
54+
'remote' => 'required|string|regex:/^[0-9%.]{1,15}$/',
5955
'password' => 'string',
6056
];
6157

app/Models/DatabaseHost.php

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,31 +44,18 @@ class DatabaseHost extends Validable
4444
'node_id' => 'integer',
4545
];
4646

47-
/**
48-
* Application validation rules.
49-
*
50-
* @var array
51-
*/
52-
protected static $applicationRules = [
53-
'name' => 'required',
54-
'host' => 'required',
55-
'port' => 'required',
56-
'username' => 'required',
57-
'node_id' => 'sometimes',
58-
];
59-
6047
/**
6148
* Validation rules to assign to this model.
6249
*
6350
* @var array
6451
*/
65-
protected static $dataIntegrityRules = [
66-
'name' => 'string|max:255',
67-
'host' => 'ip|unique:database_hosts,host',
68-
'port' => 'numeric|between:1,65535',
69-
'username' => 'string|max:32',
52+
public static $validationRules = [
53+
'name' => 'required|string|max:255',
54+
'host' => 'required|ip|unique:database_hosts,host',
55+
'port' => 'required|numeric|between:1,65535',
56+
'username' => 'required|string|max:32',
7057
'password' => 'nullable|string',
71-
'node_id' => 'nullable|integer|exists:nodes,id',
58+
'node_id' => 'sometimes|nullable|integer|exists:nodes,id',
7259
];
7360

7461
/**

app/Models/Egg.php

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -54,37 +54,19 @@ class Egg extends Validable
5454
/**
5555
* @var array
5656
*/
57-
protected static $applicationRules = [
58-
'nest_id' => 'required',
59-
'uuid' => 'required',
60-
'name' => 'required',
61-
'description' => 'required',
62-
'author' => 'required',
63-
'docker_image' => 'required',
64-
'startup' => 'required',
65-
'config_from' => 'sometimes',
66-
'config_stop' => 'required_without:config_from',
67-
'config_startup' => 'required_without:config_from',
68-
'config_logs' => 'required_without:config_from',
69-
'config_files' => 'required_without:config_from',
70-
];
71-
72-
/**
73-
* @var array
74-
*/
75-
protected static $dataIntegrityRules = [
76-
'nest_id' => 'bail|numeric|exists:nests,id',
77-
'uuid' => 'string|size:36',
78-
'name' => 'string|max:255',
79-
'description' => 'string',
80-
'author' => 'string|email',
81-
'docker_image' => 'string|max:255',
82-
'startup' => 'nullable|string',
83-
'config_from' => 'bail|nullable|numeric|exists:eggs,id',
84-
'config_stop' => 'nullable|string|max:255',
85-
'config_startup' => 'nullable|json',
86-
'config_logs' => 'nullable|json',
87-
'config_files' => 'nullable|json',
57+
public static $validationRules = [
58+
'nest_id' => 'required|bail|numeric|exists:nests,id',
59+
'uuid' => 'required|string|size:36',
60+
'name' => 'required|string|max:255',
61+
'description' => 'required|string',
62+
'author' => 'required|string|email',
63+
'docker_image' => 'required|string|max:255',
64+
'startup' => 'required|nullable|string',
65+
'config_from' => 'sometimes|bail|nullable|numeric|exists:eggs,id',
66+
'config_stop' => 'required_without:config_from|nullable|string|max:255',
67+
'config_startup' => 'required_without:config_from|nullable|json',
68+
'config_logs' => 'required_without:config_from|nullable|json',
69+
'config_files' => 'required_without:config_from|nullable|json',
8870
];
8971

9072
/**

app/Models/EggVariable.php

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,15 @@ class EggVariable extends Validable
4545
/**
4646
* @var array
4747
*/
48-
protected static $applicationRules = [
49-
'name' => 'required',
50-
'env_variable' => 'required',
51-
'rules' => 'required',
52-
];
53-
54-
/**
55-
* @var array
56-
*/
57-
protected static $dataIntegrityRules = [
48+
public static $validationRules = [
5849
'egg_id' => 'exists:eggs,id',
59-
'name' => 'string|between:1,255',
50+
'name' => 'required|string|between:1,255',
6051
'description' => 'string',
61-
'env_variable' => 'regex:/^[\w]{1,255}$/|notIn:' . self::RESERVED_ENV_NAMES,
52+
'env_variable' => 'required|regex:/^[\w]{1,255}$/|notIn:' . self::RESERVED_ENV_NAMES,
6253
'default_value' => 'string',
6354
'user_viewable' => 'boolean',
6455
'user_editable' => 'boolean',
65-
'rules' => 'string',
56+
'rules' => 'required|string',
6657
];
6758

6859
/**

app/Models/Location.php

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,14 @@ class Location extends Validable
2424
*/
2525
protected $guarded = ['id', 'created_at', 'updated_at'];
2626

27-
/**
28-
* Validation rules to apply to this model.
29-
*
30-
* @var array
31-
*/
32-
protected static $applicationRules = [
33-
'short' => 'required',
34-
'long' => 'required',
35-
];
36-
3727
/**
3828
* Rules ensuring that the raw data stored in the database meets expectations.
3929
*
4030
* @var array
4131
*/
42-
protected static $dataIntegrityRules = [
43-
'short' => 'string|between:1,60|unique:locations,short',
44-
'long' => 'string|between:1,255',
32+
public static $validationRules = [
33+
'short' => 'required|string|between:1,60|unique:locations,short',
34+
'long' => 'required|string|between:1,255',
4535
];
4636

4737
/**

app/Models/Nest.php

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,10 @@ class Nest extends Validable
3030
/**
3131
* @var array
3232
*/
33-
protected static $applicationRules = [
34-
'author' => 'required',
35-
'name' => 'required',
36-
'description' => 'sometimes',
37-
];
38-
39-
/**
40-
* @var array
41-
*/
42-
protected static $dataIntegrityRules = [
43-
'author' => 'string|email',
44-
'name' => 'string|max:255',
45-
'description' => 'nullable|string',
33+
public static $validationRules = [
34+
'author' => 'required|string|email',
35+
'name' => 'required|string|max:255',
36+
'description' => 'sometimes|nullable|string',
4637
];
4738

4839
/**

app/Models/Node.php

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -77,37 +77,21 @@ class Node extends Validable
7777
/**
7878
* @var array
7979
*/
80-
protected static $applicationRules = [
81-
'name' => 'required',
82-
'location_id' => 'required',
83-
'fqdn' => 'required',
84-
'scheme' => 'required',
85-
'memory' => 'required',
86-
'memory_overallocate' => 'required',
87-
'disk' => 'required',
88-
'disk_overallocate' => 'required',
89-
'daemonBase' => 'sometimes|required',
90-
'daemonSFTP' => 'required',
91-
'daemonListen' => 'required',
92-
];
93-
94-
/**
95-
* @var array
96-
*/
97-
protected static $dataIntegrityRules = [
98-
'name' => 'regex:/^([\w .-]{1,100})$/',
80+
public static $validationRules = [
81+
'name' => 'required|regex:/^([\w .-]{1,100})$/',
9982
'description' => 'string',
100-
'location_id' => 'exists:locations,id',
83+
'location_id' => 'required|exists:locations,id',
10184
'public' => 'boolean',
102-
'fqdn' => 'string',
85+
'fqdn' => 'required|string',
86+
'scheme' => 'required',
10387
'behind_proxy' => 'boolean',
104-
'memory' => 'numeric|min:1',
105-
'memory_overallocate' => 'numeric|min:-1',
106-
'disk' => 'numeric|min:1',
107-
'disk_overallocate' => 'numeric|min:-1',
108-
'daemonBase' => 'regex:/^([\/][\d\w.\-\/]+)$/',
109-
'daemonSFTP' => 'numeric|between:1,65535',
110-
'daemonListen' => 'numeric|between:1,65535',
88+
'memory' => 'required|numeric|min:1',
89+
'memory_overallocate' => 'required|numeric|min:-1',
90+
'disk' => 'required|numeric|min:1',
91+
'disk_overallocate' => 'required|numeric|min:-1',
92+
'daemonBase' => 'sometimes|required|regex:/^([\/][\d\w.\-\/]+)$/',
93+
'daemonSFTP' => 'required|numeric|between:1,65535',
94+
'daemonListen' => 'required|numeric|between:1,65535',
11195
'maintenance_mode' => 'boolean',
11296
'upload_size' => 'int|between:1,1024',
11397
];

0 commit comments

Comments
 (0)