22
33namespace Pterodactyl \Transformers \Api \Admin ;
44
5- use Illuminate \Http \Request ;
65use Pterodactyl \Models \Server ;
7- use League \Fractal \TransformerAbstract ;
6+ use Pterodactyl \Services \Acl \Api \AdminAcl ;
7+ use Pterodactyl \Transformers \Admin \PackTransformer ;
8+ use Pterodactyl \Transformers \Admin \ServerVariableTransformer ;
89
9- class ServerTransformer extends TransformerAbstract
10+ class ServerTransformer extends BaseTransformer
1011{
1112 /**
1213 * List of resources that can be included.
@@ -18,167 +19,174 @@ class ServerTransformer extends TransformerAbstract
1819 'user ' ,
1920 'subusers ' ,
2021 'pack ' ,
21- 'service ' ,
22- 'option ' ,
22+ 'nest ' ,
23+ 'egg ' ,
2324 'variables ' ,
2425 'location ' ,
2526 'node ' ,
2627 ];
2728
28- /**
29- * The Illuminate Request object if provided.
30- *
31- * @var \Illuminate\Http\Request|bool
32- */
33- protected $ request ;
34-
35- /**
36- * Setup request object for transformer.
37- *
38- * @param \Illuminate\Http\Request|bool $request
39- */
40- public function __construct ($ request = false )
41- {
42- if (! $ request instanceof Request && $ request !== false ) {
43- throw new DisplayException ('Request passed to constructor must be of type Request or false. ' );
44- }
45-
46- $ this ->request = $ request ;
47- }
48-
4929 /**
5030 * Return a generic transformed server array.
5131 *
32+ * @param \Pterodactyl\Models\Server $server
5233 * @return array
5334 */
54- public function transform (Server $ server )
35+ public function transform (Server $ server ): array
5536 {
5637 return collect ($ server ->toArray ())->only ($ server ->getTableColumns ())->toArray ();
5738 }
5839
5940 /**
6041 * Return a generic array of allocations for this server.
6142 *
62- * @return \Leauge\Fractal\Resource\Collection
43+ * @param \Pterodactyl\Models\Server $server
44+ * @return \League\Fractal\Resource\Collection|\League\Fractal\Resource\NullResource
6345 */
6446 public function includeAllocations (Server $ server )
6547 {
66- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' server-view ' )) {
67- return ;
48+ if (! $ this ->authorize (AdminAcl:: RESOURCE_ALLOCATIONS )) {
49+ return $ this -> null () ;
6850 }
6951
70- return $ this ->collection ($ server ->allocations , new AllocationTransformer ($ this ->request , 'server ' ), 'allocation ' );
52+ $ server ->loadMissing ('allocations ' );
53+
54+ return $ this ->collection ($ server ->getRelation ('allocations ' ), $ this ->makeTransformer (AllocationTransformer::class), 'allocation ' );
7155 }
7256
7357 /**
7458 * Return a generic array of data about subusers for this server.
7559 *
76- * @return \Leauge\Fractal\Resource\Collection
60+ * @param \Pterodactyl\Models\Server $server
61+ * @return \League\Fractal\Resource\Collection|\League\Fractal\Resource\NullResource
7762 */
7863 public function includeSubusers (Server $ server )
7964 {
80- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' server-view ' )) {
81- return ;
65+ if (! $ this ->authorize (AdminAcl:: RESOURCE_USERS )) {
66+ return $ this -> null () ;
8267 }
8368
84- return $ this ->collection ($ server ->subusers , new SubuserTransformer ($ this ->request ), 'subuser ' );
69+ $ server ->loadMissing ('subusers ' );
70+
71+ return $ this ->collection ($ server ->getRelation ('subusers ' ), $ this ->makeTransformer (UserTransformer::class), 'user ' );
8572 }
8673
8774 /**
8875 * Return a generic array of data about subusers for this server.
8976 *
90- * @return \Leauge\Fractal\Resource\Item
77+ * @param \Pterodactyl\Models\Server $server
78+ * @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
9179 */
9280 public function includeUser (Server $ server )
9381 {
94- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' user-view ' )) {
95- return ;
82+ if (! $ this ->authorize (AdminAcl:: RESOURCE_USERS )) {
83+ return $ this -> null () ;
9684 }
9785
98- return $ this ->item ($ server ->user , new UserTransformer ($ this ->request ), 'user ' );
86+ $ server ->loadMissing ('user ' );
87+
88+ return $ this ->item ($ server ->getRelation ('user ' ), $ this ->makeTransformer (UserTransformer::class), 'user ' );
9989 }
10090
10191 /**
10292 * Return a generic array with pack information for this server.
10393 *
104- * @return \Leauge\Fractal\Resource\Item
94+ * @param \Pterodactyl\Models\Server $server
95+ * @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
10596 */
10697 public function includePack (Server $ server )
10798 {
108- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' pack-view ' )) {
109- return ;
99+ if (! $ this ->authorize (AdminAcl:: RESOURCE_PACKS )) {
100+ return $ this -> null () ;
110101 }
111102
112- return $ this ->item ($ server ->pack , new PackTransformer ($ this ->request ), 'pack ' );
103+ $ server ->loadMissing ('pack ' );
104+
105+ return $ this ->item ($ server ->getRelation ('pack ' ), $ this ->makeTransformer (PackTransformer::class), 'pack ' );
113106 }
114107
115108 /**
116- * Return a generic array with service information for this server.
109+ * Return a generic array with nest information for this server.
117110 *
118- * @return \Leauge\Fractal\Resource\Item
111+ * @param \Pterodactyl\Models\Server $server
112+ * @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
119113 */
120- public function includeService (Server $ server )
114+ public function includeNest (Server $ server )
121115 {
122- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' service-view ' )) {
123- return ;
116+ if (! $ this ->authorize (AdminAcl:: RESOURCE_NESTS )) {
117+ return $ this -> null () ;
124118 }
125119
126- return $ this ->item ($ server ->service , new ServiceTransformer ($ this ->request ), 'service ' );
120+ $ server ->loadMissing ('nest ' );
121+
122+ return $ this ->item ($ server ->getRelation ('nest ' ), $ this ->makeTransformer (NestTransformer::class), 'nest ' );
127123 }
128124
129125 /**
130126 * Return a generic array with service option information for this server.
131127 *
132- * @return \Leauge\Fractal\Resource\Item
128+ * @param \Pterodactyl\Models\Server $server
129+ * @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
133130 */
134131 public function includeOption (Server $ server )
135132 {
136- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' option-view ' )) {
137- return ;
133+ if (! $ this ->authorize (AdminAcl:: RESOURCE_EGGS )) {
134+ return $ this -> null () ;
138135 }
139136
140- return $ this ->item ($ server ->option , new OptionTransformer ($ this ->request ), 'option ' );
137+ $ server ->loadMissing ('egg ' );
138+
139+ return $ this ->item ($ server ->getRelation ('egg ' ), $ this ->makeTransformer (EggTransformer::class), 'egg ' );
141140 }
142141
143142 /**
144143 * Return a generic array of data about subusers for this server.
145144 *
146- * @return \Leauge\Fractal\Resource\Collection
145+ * @param \Pterodactyl\Models\Server $server
146+ * @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
147147 */
148148 public function includeVariables (Server $ server )
149149 {
150- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' server-view ' )) {
151- return ;
150+ if (! $ this ->authorize (AdminAcl:: RESOURCE_SERVERS )) {
151+ return $ this -> null () ;
152152 }
153153
154- return $ this ->collection ($ server ->variables , new ServerVariableTransformer ($ this ->request ), 'server_variable ' );
154+ $ server ->loadMissing ('variables ' );
155+
156+ return $ this ->item ($ server ->getRelation ('variables ' ), $ this ->makeTransformer (ServerVariableTransformer::class), 'server_variable ' );
155157 }
156158
157159 /**
158160 * Return a generic array with pack information for this server.
159161 *
160- * @return \Leauge\Fractal\Resource\Item
162+ * @param \Pterodactyl\Models\Server $server
163+ * @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
161164 */
162165 public function includeLocation (Server $ server )
163166 {
164- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' location-list ' )) {
165- return ;
167+ if (! $ this ->authorize (AdminAcl:: RESOURCE_LOCATIONS )) {
168+ return $ this -> null () ;
166169 }
167170
168- return $ this ->item ($ server ->location , new LocationTransformer ($ this ->request ), 'location ' );
171+ $ server ->loadMissing ('location ' );
172+
173+ return $ this ->item ($ server ->getRelation ('location ' ), $ this ->makeTransformer (LocationTransformer::class), 'location ' );
169174 }
170175
171176 /**
172177 * Return a generic array with pack information for this server.
173178 *
174- * @return \Leauge\Fractal\Resource\Item|void
179+ * @param \Pterodactyl\Models\Server $server
180+ * @return \League\Fractal\Resource\Item|\League\Fractal\Resource\NullResource
175181 */
176182 public function includeNode (Server $ server )
177183 {
178- if ($ this -> request && ! $ this ->request -> apiKeyHasPermission ( ' node-view ' )) {
179- return ;
184+ if (! $ this ->authorize (AdminAcl:: RESOURCE_NODES )) {
185+ return $ this -> null () ;
180186 }
181187
182- return $ this ->item ($ server ->node , new NodeTransformer ($ this ->request ), 'node ' );
188+ $ server ->loadMissing ('node ' );
189+
190+ return $ this ->item ($ server ->getRelation ('node ' ), $ this ->makeTransformer (NodeTransformer::class), 'node ' );
183191 }
184192}
0 commit comments