@@ -103,7 +103,16 @@ public function create(Request $request, PolicyDecisionPoint $pdp, ResourceType
103103 {
104104 $ resourceObject = $ this ->createObject ($ request , $ pdp , $ resourceType , $ isMe );
105105
106- return $ this ->respondWithResource ($ request , $ resourceType , $ resourceObject , 201 );
106+ return $ this ->respondWithResource ($ request , $ resourceType , $ resourceObject , 201 )->header (
107+ 'Location ' ,
108+ route (
109+ 'scim.resource ' ,
110+ [
111+ 'resourceType ' => $ resourceType ->getName (),
112+ 'resourceObject ' => $ resourceObject ->getKey (),
113+ ]
114+ )
115+ );
107116 }
108117
109118 public function show (Request $ request , PolicyDecisionPoint $ pdp , ResourceType $ resourceType , Model $ resourceObject )
@@ -260,33 +269,33 @@ function (Builder $query) use ($filter, $resourceType) {
260269 if (!$ cursorPaginationEnabled ) {
261270 throw (new SCIMException ('Cursor pagination is disabled. ' ))->setCode (400 )->setScimType ('invalidCursor ' );
262271 }
263- if ($ sortBy == null ){
272+ if ($ sortBy == null ) {
264273 $ resourceObjects = $ resourceObjects ->orderBy ('id ' );
265274 }
266275
267- if ($ request ->input ('cursor ' )){
276+ if ($ request ->input ('cursor ' )) {
268277 $ cursor = @Cursor::fromEncoded ($ request ->input ('cursor ' ));
269278
270- if ($ cursor == null ){
279+ if ($ cursor == null ) {
271280 throw (new SCIMException ('Invalid Cursor ' ))->setCode (400 )->setScimType ('invalidCursor ' );
272281 }
273282 }
274283
275284 $ countRaw = $ request ->input ('count ' );
276285
277- if ($ countRaw < 1 || $ countRaw > config ('scim.pagination.maxPageSize ' )){
286+ if ($ countRaw < 1 || $ countRaw > config ('scim.pagination.maxPageSize ' )) {
278287 throw (new SCIMException (
279288 sprintf ('Count value is invalid. Count value must be between 1 - and maxPageSize (%s) (when using cursor pagination) ' , config ('scim.pagination.maxPageSize ' ))
280289 ))->setCode (400 )->setScimType ('invalidCount ' );
281290 }
282-
291+
283292 $ resourceObjects = $ resourceObjects ->cursorPaginate (
284293 $ count ,
285294 cursor: $ request ->input ('cursor ' )
286295 );
287296 $ resources = collect ($ resourceObjects ->items ());
288297
289-
298+
290299 } else {
291300 // The 1-based index of the first query result. A value less than 1 SHALL be interpreted as 1.
292301 $ startIndex = max (1 , intVal ($ request ->input ('startIndex ' , 0 )));
@@ -327,7 +336,8 @@ public function crossResourceIndex(Request $request, PolicyDecisionPoint $pdp, S
327336 return $ this ->runCrossResourceQuery ($ request , $ config );
328337 }
329338
330- public function search (Request $ request , PolicyDecisionPoint $ pdp , ResourceType $ resourceType ){
339+ public function search (Request $ request , PolicyDecisionPoint $ pdp , ResourceType $ resourceType )
340+ {
331341
332342 $ input = $ request ->json ()->all ();
333343
@@ -466,8 +476,12 @@ protected function respondWithResource(Request $request, ResourceType $resourceT
466476 {
467477 [$ attributes , $ excludedAttributes ] = $ this ->resolveAttributeParameters ($ request );
468478
469- return Helper::objectToSCIMResponse ($ resourceObject , $ resourceType , $ attributes , $ excludedAttributes )
470- ->setStatusCode ($ status );
479+ return Helper::objectToSCIMResponse (
480+ $ resourceObject ,
481+ $ resourceType ,
482+ $ attributes ,
483+ $ excludedAttributes
484+ )->setStatusCode ($ status );
471485 }
472486
473487 protected function resolveAttributeParameters (Request $ request ): array
@@ -520,7 +534,7 @@ private function normalizeAttributeList($value): array
520534 if (is_string ($ value )) {
521535 $ parts = preg_split ('/\s*,\s*/ ' , $ value );
522536
523- $ normalized = array_filter (array_map ('trim ' , $ parts ), fn ($ item ) => $ item !== '' );
537+ $ normalized = array_filter (array_map ('trim ' , $ parts ), fn ($ item ) => $ item !== '' );
524538
525539 return array_values (array_unique ($ normalized ));
526540 }
0 commit comments