11<?php
2- /**
3- * Pterodactyl - Panel
4- * Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
5- *
6- * This software is licensed under the terms of the MIT license.
7- * https://opensource.org/licenses/MIT
8- */
92
103namespace Pterodactyl \Models ;
114
125use Sofa \Eloquence \Eloquence ;
136use Sofa \Eloquence \Validable ;
147use Illuminate \Database \Eloquent \Model ;
8+ use Pterodactyl \Services \Acl \Api \AdminAcl ;
159use Sofa \Eloquence \Contracts \CleansAttributes ;
1610use Sofa \Eloquence \Contracts \Validable as ValidableContract ;
1711
@@ -35,14 +29,29 @@ class APIKey extends Model implements CleansAttributes, ValidableContract
3529 */
3630 protected $ casts = [
3731 'allowed_ips ' => 'json ' ,
32+ 'user_id ' => 'int ' ,
33+ 'r_ ' . AdminAcl::RESOURCE_USERS => 'int ' ,
34+ 'r_ ' . AdminAcl::RESOURCE_ALLOCATIONS => 'int ' ,
35+ 'r_ ' . AdminAcl::RESOURCE_DATABASES => 'int ' ,
36+ 'r_ ' . AdminAcl::RESOURCE_EGGS => 'int ' ,
37+ 'r_ ' . AdminAcl::RESOURCE_LOCATIONS => 'int ' ,
38+ 'r_ ' . AdminAcl::RESOURCE_NESTS => 'int ' ,
39+ 'r_ ' . AdminAcl::RESOURCE_NODES => 'int ' ,
40+ 'r_ ' . AdminAcl::RESOURCE_PACKS => 'int ' ,
41+ 'r_ ' . AdminAcl::RESOURCE_SERVERS => 'int ' ,
3842 ];
3943
4044 /**
41- * Fields that are not mass assignable.
45+ * Fields that are mass assignable.
4246 *
4347 * @var array
4448 */
45- protected $ guarded = ['id ' , 'created_at ' , 'updated_at ' ];
49+ protected $ fillable = [
50+ 'token ' ,
51+ 'allowed_ips ' ,
52+ 'memo ' ,
53+ 'expires_at ' ,
54+ ];
4655
4756 /**
4857 * Rules defining what fields must be passed when making a model.
@@ -66,6 +75,24 @@ class APIKey extends Model implements CleansAttributes, ValidableContract
6675 'memo ' => 'nullable|string|max:500 ' ,
6776 'allowed_ips ' => 'nullable|json ' ,
6877 'expires_at ' => 'nullable|datetime ' ,
78+ 'r_ ' . AdminAcl::RESOURCE_USERS => 'integer|min:0|max:3 ' ,
79+ 'r_ ' . AdminAcl::RESOURCE_ALLOCATIONS => 'integer|min:0|max:3 ' ,
80+ 'r_ ' . AdminAcl::RESOURCE_DATABASES => 'integer|min:0|max:3 ' ,
81+ 'r_ ' . AdminAcl::RESOURCE_EGGS => 'integer|min:0|max:3 ' ,
82+ 'r_ ' . AdminAcl::RESOURCE_LOCATIONS => 'integer|min:0|max:3 ' ,
83+ 'r_ ' . AdminAcl::RESOURCE_NESTS => 'integer|min:0|max:3 ' ,
84+ 'r_ ' . AdminAcl::RESOURCE_NODES => 'integer|min:0|max:3 ' ,
85+ 'r_ ' . AdminAcl::RESOURCE_PACKS => 'integer|min:0|max:3 ' ,
86+ 'r_ ' . AdminAcl::RESOURCE_SERVERS => 'integer|min:0|max:3 ' ,
87+ ];
88+
89+ /**
90+ * @var array
91+ */
92+ protected $ dates = [
93+ self ::CREATED_AT ,
94+ self ::UPDATED_AT ,
95+ 'expires_at ' ,
6996 ];
7097
7198 /**
0 commit comments