src/API.php
public function patchMap(): array
    {
        $auth = $this->auth;
        return [
            ['PATCH', '/User/[i:id]', function (int $id = null, array $request) use ($auth) {
                if (isset($id) === false) {
                    throw new \InvalidArgumentException("No user found");
                }
                if ($auth->details === false || ($auth->details->id != $id && $auth->details->role_id != 1)) {
                    return [
                        "headers" => [
                            [
                                'X-PHP-Response-Code: 401',
                                true,
                                401
                            ]
                        ],
                        "response" => "Not logged in with proper credentials"
                    ];
                }
                $user = Model\User::find($id);
                if ($user === null) {
                    throw new \DomainException("No user found");
                }
                $validator = new \Valitron\Validator($request);
                $validator->rule('optional', ['name', 'email', 'avatar', 'description', 'role_id']);
                $validator->rule(function ($field, $value, array $params, array $fields) {
                    return is_string($value);
                }, ['name', 'description'])->message("{field} must be a string");
                $validator->rule('email', 'email');
                $validator->rule(function ($field, $value, array $params, array $fields) {
                    return file_exists(rtrim(public_path(), '/') . $value) || (filter_var($value, FILTER_VALIDATE_URL) !== false);
                }, 'avatar')->message('{field} must be an external link or a local file path');
                $validator->rule(function ($field, $value, $params, $fields) {
                    $role = Model\Role::find($value);
                    if ($role === null) {
                        return false;
                    }
                    return true;
                }, "role_id")->message("{field} must be a valid role");
                if ($validator->validate() === false) {
                    return [
                        "headers" => [
                            [
                                'X-PHP-Response-Code: 422',
                                true,
                                422
                            ]
                        ],
                        "response" => $validator->errors()
                    ];
                }
                if (isset($request['name']) === true) {
                    $user->name = ucwords($request['name']);
                }
                if (isset($request['email']) === true) {
                    $user->email = $request['email'];
                }
                if (isset($request['avatar']) === true) {
                    $user->avatar = $request['avatar'];
                }
                if (isset($request['description']) === true) {
                    $user->description = $request['description'];
                }
                if (isset($request['role_id']) === true) {
                    $user->role_id = $request['role_id'];
                }
                $user->save();
                return [
                    "headers" => [
                        [
                            'X-PHP-Response-Code: 200',
                            true,
                            200
                        ]
                    ],
                    "response" => true
                ];
            }],
            ['PATCH', '/User/password/[i:id]', function (int $id = null, array $request) use ($auth) {
                if (isset($id) === false) {
                    throw new \InvalidArgumentException("No user found");
                }
                if ($auth->details === false || $auth->details->id != $id) {
                    return [
                        "headers" => [
                            [
                                'X-PHP-Response-Code: 401',
                                true,
                                401
                            ]
                        ],
                        "response" => "Not logged in with proper credentials"
                    ];
                }
                $user = Model\User::find($id);
                if ($user === null) {
                    throw new \DomainException("No user found");
                }
                $validator = new \Valitron\Validator($request);
                $validator->rule('required', ['password', 'confirm_password']);
                $validator->rule(function ($field, $value, array $params, array $fields) {
                    return is_string($value);
                }, ['password', 'confirm_password'])->message("{field} must be a string");
                $validator->rule('equals', 'confirm_password', 'password');
                $validator->rule('lengthBetween', 'password', 8, 80);
                $validator->rule('notIn', 'password', [$user->username, $user->email, $user->name, $user->description, $user->avatar]);
                if ($validator->validate() === false) {
                    return [
                        "headers" => [
                            [
                                'X-PHP-Response-Code: 422',
                                true,
                                422
                            ]
                        ],
                        "response" => $validator->errors()
                    ];
                }
                $user->pass = $request['password'];
                $user->save();
                return [
                    "headers" => [
                        [
                            'X-PHP-Response-Code: 200',
                            true,
                            200
                        ]
                    ],
                    "response" => true
                ];
            }]
        ];
    }
public function patchMap(): array
    {
        $auth = $this->auth;
        return [
            ['PATCH', '/User/[i:id]', function (int $id = null, array $request) use ($auth) {
                if (isset($id) === false) {
                    throw new \InvalidArgumentException("No user found");
                }
                if ($auth->details === false || ($auth->details->id != $id && $auth->details->role_id != 1)) {
                    return [
                        "headers" => [
                            [
                                'X-PHP-Response-Code: 401',
                                true,
                                401
                            ]
                        ],
                        "response" => "Not logged in with proper credentials"
                    ];
                }
                $user = Model\User::find($id);
                if ($user === null) {
                    throw new \DomainException("No user found");
                }
                $validator = new \Valitron\Validator($request);
                $validator->rule('optional', ['name', 'email', 'avatar', 'description', 'role_id']);
                $validator->rule(function ($field, $value, array $params, array $fields) {
                    return is_string($value);
                }, ['name', 'description'])->message("{field} must be a string");
                $validator->rule('email', 'email');
                $validator->rule(function ($field, $value, array $params, array $fields) {
                    return file_exists(rtrim(public_path(), '/') . $value) || (filter_var($value, FILTER_VALIDATE_URL) !== false);
                }, 'avatar')->message('{field} must be an external link or a local file path');
                $validator->rule(function ($field, $value, $params, $fields) {
                    $role = Model\Role::find($value);
                    if ($role === null) {
                        return false;
                    }
                    return true;
                }, "role_id")->message("{field} must be a valid role");
                if ($validator->validate() === false) {
                    return [
                        "headers" => [
                            [
                                'X-PHP-Response-Code: 422',
                                true,
                                422
                            ]
                        ],
                        "response" => $validator->errors()
                    ];
                }
                if (isset($request['name']) === true) {
                    $user->name = ucwords($request['name']);
                }
                if (isset($request['email']) === true) {
                    $user->email = $request['email'];
                }
                if (isset($request['avatar']) === true) {
                    $user->avatar = $request['avatar'];
                }
                if (isset($request['description']) === true) {
                    $user->description = $request['description'];
                }
                if (isset($request['role_id']) === true) {
                    $user->role_id = $request['role_id'];
                }
                $user->save();
                return [
                    "headers" => [
                        [
                            'X-PHP-Response-Code: 200',
                            true,
                            200
                        ]
                    ],
                    "response" => true
                ];
            }],
            ['PATCH', '/User/password/[i:id]', function (int $id = null, array $request) use ($auth) {
                if (isset($id) === false) {
                    throw new \InvalidArgumentException("No user found");
                }
                if ($auth->details === false || $auth->details->id != $id) {
                    return [
                        "headers" => [
                            [
                                'X-PHP-Response-Code: 401',
                                true,
                                401
                            ]
                        ],
                        "response" => "Not logged in with proper credentials"
                    ];
                }
                $user = Model\User::find($id);
                if ($user === null) {
                    throw new \DomainException("No user found");
                }
                $validator = new \Valitron\Validator($request);
                $validator->rule('required', ['password', 'confirm_password']);
                $validator->rule(function ($field, $value, array $params, array $fields) {
                    return is_string($value);
                }, ['password', 'confirm_password'])->message("{field} must be a string");
                $validator->rule('equals', 'confirm_password', 'password');
                $validator->rule('lengthBetween', 'password', 8, 80);
                $validator->rule('notIn', 'password', [$user->username, $user->email, $user->name, $user->description, $user->avatar]);
                if ($validator->validate() === false) {
                    return [
                        "headers" => [
                            [
                                'X-PHP-Response-Code: 422',
                                true,
                                422
                            ]
                        ],
                        "response" => $validator->errors()
                    ];
                }
                $user->pass = $request['password'];
                $user->save();
                return [
                    "headers" => [
                        [
                            'X-PHP-Response-Code: 200',
                            true,
                            200
                        ]
                    ],
                    "response" => true
                ];
            }]
        ];
    }
public function patchMap ( ) : array { $ auth = $ this -> auth ; return [ [ 'PATCH' , '/User/[i:id]' , function ( int $ id = null , array $ request ) use ( $ auth ) { if ( isset ( $ id ) === false ) { throw new \ InvalidArgumentException ( "No user found" ) ; } if ( $ auth -> details === false || ( $ auth -> details -> id != $ id && $ auth -> details -> role_id != 1 ) ) { return [ "headers" => [ [ 'X-PHP-Response-Code: 401' , true , 401 ] ] , "response" => "Not logged in with proper credentials" ] ; } $ user = Model \ User :: find ( $ id ) ; if ( $ user === null ) { throw new \ DomainException ( "No user found" ) ; } $ validator = new \ Valitron \ Validator ( $ request ) ; $ validator -> rule ( 'optional' , [ 'name' , 'email' , 'avatar' , 'description' , 'role_id' ] ) ; $ validator -> rule ( function ( $ field , $ value , array $ params , array $ fields ) { return is_string ( $ value ) ; } , [ 'name' , 'description' ] ) -> message ( "{field} must be a string" ) ; $ validator -> rule ( 'email' , 'email' ) ; $ validator -> rule ( function ( $ field , $ value , array $ params , array $ fields ) { return file_exists ( rtrim ( public_path ( ) , '/' ) . $ value ) || ( filter_var ( $ value , FILTER_VALIDATE_URL ) !== false ) ; } , 'avatar' ) -> message ( '{field} must be an external link or a local file path' ) ; $ validator -> rule ( function ( $ field , $ value , $ params , $ fields ) { $ role = Model \ Role :: find ( $ value ) ; if ( $ role === null ) { return false ; } return true ; } , "role_id" ) -> message ( "{field} must be a valid role" ) ; if ( $ validator -> validate ( ) === false ) { return [ "headers" => [ [ 'X-PHP-Response-Code: 422' , true , 422 ] ] , "response" => $ validator -> errors ( ) ] ; } if ( isset ( $ request [ 'name' ] ) === true ) { $ user -> name = ucwords ( $ request [ 'name' ] ) ; } if ( isset ( $ request [ 'email' ] ) === true ) { $ user -> email = $ request [ 'email' ] ; } if ( isset ( $ request [ 'avatar' ] ) === true ) { $ user -> avatar = $ request [ 'avatar' ] ; } if ( isset ( $ request [ 'description' ] ) === true ) { $ user -> description = $ request [ 'description' ] ; } if ( isset ( $ request [ 'role_id' ] ) === true ) { $ user -> role_id = $ request [ 'role_id' ] ; } $ user -> save ( ) ; return [ "headers" => [ [ 'X-PHP-Response-Code: 200' , true , 200 ] ] , "response" => true ] ; } ] , [ 'PATCH' , '/User/password/[i:id]' , function ( int $ id = null , array $ request ) use ( $ auth ) { if ( isset ( $ id ) === false ) { throw new \ InvalidArgumentException ( "No user found" ) ; } if ( $ auth -> details === false || $ auth -> details -> id != $ id ) { return [ "headers" => [ [ 'X-PHP-Response-Code: 401' , true , 401 ] ] , "response" => "Not logged in with proper credentials" ] ; } $ user = Model \ User :: find ( $ id ) ; if ( $ user === null ) { throw new \ DomainException ( "No user found" ) ; } $ validator = new \ Valitron \ Validator ( $ request ) ; $ validator -> rule ( 'required' , [ 'password' , 'confirm_password' ] ) ; $ validator -> rule ( function ( $ field , $ value , array $ params , array $ fields ) { return is_string ( $ value ) ; } , [ 'password' , 'confirm_password' ] ) -> message ( "{field} must be a string" ) ; $ validator -> rule ( 'equals' , 'confirm_password' , 'password' ) ; $ validator -> rule ( 'lengthBetween' , 'password' , 8 , 80 ) ; $ validator -> rule ( 'notIn' , 'password' , [ $ user -> username , $ user -> email , $ user -> name , $ user -> description , $ user -> avatar ] ) ; if ( $ validator -> validate ( ) === false ) { return [ "headers" => [ [ 'X-PHP-Response-Code: 422' , true , 422 ] ] , "response" => $ validator -> errors ( ) ] ; } $ user -> pass = $ request [ 'password' ] ; $ user -> save ( ) ; return [ "headers" => [ [ 'X-PHP-Response-Code: 200' , true , 200 ] ] , "response" => true ] ; } ] ] ; }
Returns the request map for PATCH requests

@return array
Returns the request map for PATCH requests