PasswordReset.request: recaptcha argument breaks the code
Описание
При попытке передать значение аргумента recaptcha в методе PasswordReset.request возникает ошибка в коде на стороне сервера.
{
    "success": false,
    "message": "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'recaptcha' in 'where clause' (SQL: select * from `users` where `email` = constantine@amazingcat.net and `recaptcha` is null and `users`.`deleted_at` is null limit 1)",
    "debug": {
        "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php",
        "line": 671,
        "code": 42,
        "class": "Illuminate\\Database\\QueryException",
        "trace": [
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php",
                "line": 631,
                "function": "runQueryCallback",
                "class": "Illuminate\\Database\\Connection",
                "type": "->",
                "args": [
                    "select * from `users` where `email` = ? and `recaptcha` is null and `users`.`deleted_at` is null limit 1",
                    [
                        "constantine@amazingcat.net"
                    ],
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php",
                "line": 339,
                "function": "run",
                "class": "Illuminate\\Database\\Connection",
                "type": "->",
                "args": [
                    "select * from `users` where `email` = ? and `recaptcha` is null and `users`.`deleted_at` is null limit 1",
                    [
                        "constantine@amazingcat.net"
                    ],
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Query\/Builder.php",
                "line": 2202,
                "function": "select",
                "class": "Illuminate\\Database\\Connection",
                "type": "->",
                "args": [
                    "select * from `users` where `email` = ? and `recaptcha` is null and `users`.`deleted_at` is null limit 1",
                    [
                        "constantine@amazingcat.net"
                    ],
                    true
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Query\/Builder.php",
                "line": 2190,
                "function": "runSelect",
                "class": "Illuminate\\Database\\Query\\Builder",
                "type": "->",
                "args": []
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Query\/Builder.php",
                "line": 2685,
                "function": "Illuminate\\Database\\Query\\{closure}",
                "class": "Illuminate\\Database\\Query\\Builder",
                "type": "->",
                "args": []
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Query\/Builder.php",
                "line": 2191,
                "function": "onceWithColumns",
                "class": "Illuminate\\Database\\Query\\Builder",
                "type": "->",
                "args": [
                    [
                        "*"
                    ],
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Eloquent\/Builder.php",
                "line": 539,
                "function": "get",
                "class": "Illuminate\\Database\\Query\\Builder",
                "type": "->",
                "args": [
                    [
                        "*"
                    ]
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Eloquent\/Builder.php",
                "line": 523,
                "function": "getModels",
                "class": "Illuminate\\Database\\Eloquent\\Builder",
                "type": "->",
                "args": [
                    [
                        "*"
                    ]
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Concerns\/BuildsQueries.php",
                "line": 143,
                "function": "get",
                "class": "Illuminate\\Database\\Eloquent\\Builder",
                "type": "->",
                "args": [
                    [
                        "*"
                    ]
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Auth\/EloquentUserProvider.php",
                "line": 131,
                "function": "first",
                "class": "Illuminate\\Database\\Eloquent\\Builder",
                "type": "->",
                "args": []
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Auth\/Passwords\/PasswordBroker.php",
                "line": 133,
                "function": "retrieveByCredentials",
                "class": "Illuminate\\Auth\\EloquentUserProvider",
                "type": "->",
                "args": [
                    {
                        "email": "constantine@amazingcat.net",
                        "recaptcha": null
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Auth\/Passwords\/PasswordBroker.php",
                "line": 52,
                "function": "getUser",
                "class": "Illuminate\\Auth\\Passwords\\PasswordBroker",
                "type": "->",
                "args": [
                    {
                        "email": "constantine@amazingcat.net",
                        "recaptcha": null
                    }
                ]
            },
            {
                "file": "\/app\/backend\/app\/Http\/Controllers\/PasswordResetController.php",
                "line": 147,
                "function": "sendResetLink",
                "class": "Illuminate\\Auth\\Passwords\\PasswordBroker",
                "type": "->",
                "args": [
                    {
                        "email": "constantine@amazingcat.net",
                        "recaptcha": null
                    }
                ]
            },
            {
                "function": "request",
                "class": "App\\Http\\Controllers\\PasswordResetController",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Controller.php",
                "line": 54,
                "function": "call_user_func_array",
                "args": [
                    [
                        {},
                        "request"
                    ],
                    [
                        {
                            "attributes": {},
                            "request": {},
                            "query": {},
                            "server": {},
                            "files": {},
                            "cookies": {},
                            "headers": {}
                        }
                    ]
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/ControllerDispatcher.php",
                "line": 45,
                "function": "callAction",
                "class": "Illuminate\\Routing\\Controller",
                "type": "->",
                "args": [
                    "request",
                    [
                        {
                            "attributes": {},
                            "request": {},
                            "query": {},
                            "server": {},
                            "files": {},
                            "cookies": {},
                            "headers": {}
                        }
                    ]
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Route.php",
                "line": 239,
                "function": "dispatch",
                "class": "Illuminate\\Routing\\ControllerDispatcher",
                "type": "->",
                "args": [
                    {
                        "uri": "v1\/auth\/password\/reset\/request",
                        "methods": [
                            "POST"
                        ],
                        "action": {
                            "middleware": [
                                "api",
                                "throttle:120,1"
                            ],
                            "uses": "App\\Http\\Controllers\\PasswordResetController@request",
                            "controller": "App\\Http\\Controllers\\PasswordResetController@request",
                            "namespace": "App\\Http\\Controllers",
                            "where": [],
                            "as": "generated::t4oRYNC0kEaSYMic",
                            "prefix": "v1\/auth"
                        },
                        "isFallback": false,
                        "controller": {},
                        "defaults": [],
                        "wheres": [],
                        "parameters": [],
                        "parameterNames": [],
                        "computedMiddleware": [
                            "api",
                            "throttle:120,1"
                        ],
                        "compiled": {}
                    },
                    {},
                    "request"
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Route.php",
                "line": 196,
                "function": "runController",
                "class": "Illuminate\\Routing\\Route",
                "type": "->",
                "args": []
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php",
                "line": 685,
                "function": "run",
                "class": "Illuminate\\Routing\\Route",
                "type": "->",
                "args": []
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 128,
                "function": "Illuminate\\Routing\\{closure}",
                "class": "Illuminate\\Routing\\Router",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Middleware\/SubstituteBindings.php",
                "line": 41,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Middleware\/ThrottleRequests.php",
                "line": 59,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {},
                    120,
                    "1"
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 103,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php",
                "line": 687,
                "function": "then",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php",
                "line": 662,
                "function": "runRouteWithinStack",
                "class": "Illuminate\\Routing\\Router",
                "type": "->",
                "args": [
                    {
                        "uri": "v1\/auth\/password\/reset\/request",
                        "methods": [
                            "POST"
                        ],
                        "action": {
                            "middleware": [
                                "api",
                                "throttle:120,1"
                            ],
                            "uses": "App\\Http\\Controllers\\PasswordResetController@request",
                            "controller": "App\\Http\\Controllers\\PasswordResetController@request",
                            "namespace": "App\\Http\\Controllers",
                            "where": [],
                            "as": "generated::t4oRYNC0kEaSYMic",
                            "prefix": "v1\/auth"
                        },
                        "isFallback": false,
                        "controller": {},
                        "defaults": [],
                        "wheres": [],
                        "parameters": [],
                        "parameterNames": [],
                        "computedMiddleware": [
                            "api",
                            "throttle:120,1"
                        ],
                        "compiled": {}
                    },
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php",
                "line": 628,
                "function": "runRoute",
                "class": "Illuminate\\Routing\\Router",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {
                        "uri": "v1\/auth\/password\/reset\/request",
                        "methods": [
                            "POST"
                        ],
                        "action": {
                            "middleware": [
                                "api",
                                "throttle:120,1"
                            ],
                            "uses": "App\\Http\\Controllers\\PasswordResetController@request",
                            "controller": "App\\Http\\Controllers\\PasswordResetController@request",
                            "namespace": "App\\Http\\Controllers",
                            "where": [],
                            "as": "generated::t4oRYNC0kEaSYMic",
                            "prefix": "v1\/auth"
                        },
                        "isFallback": false,
                        "controller": {},
                        "defaults": [],
                        "wheres": [],
                        "parameters": [],
                        "parameterNames": [],
                        "computedMiddleware": [
                            "api",
                            "throttle:120,1"
                        ],
                        "compiled": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php",
                "line": 617,
                "function": "dispatchToRoute",
                "class": "Illuminate\\Routing\\Router",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Kernel.php",
                "line": 165,
                "function": "dispatch",
                "class": "Illuminate\\Routing\\Router",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 128,
                "function": "Illuminate\\Foundation\\Http\\{closure}",
                "class": "Illuminate\\Foundation\\Http\\Kernel",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/app\/Http\/Middleware\/SentryContext.php",
                "line": 22,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "App\\Http\\Middleware\\SentryContext",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/app\/Http\/Middleware\/LockMiddleware.php",
                "line": 39,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "App\\Http\\Middleware\\LockMiddleware",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/fruitcake\/laravel-cors\/src\/HandleCors.php",
                "line": 37,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Fruitcake\\Cors\\HandleCors",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/TransformsRequest.php",
                "line": 21,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/TransformsRequest.php",
                "line": 21,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/ValidatePostSize.php",
                "line": 27,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/CheckForMaintenanceMode.php",
                "line": 63,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    },
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php",
                "line": 103,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Kernel.php",
                "line": 140,
                "function": "then",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->",
                "args": [
                    {}
                ]
            },
            {
                "file": "\/app\/backend\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Kernel.php",
                "line": 109,
                "function": "sendRequestThroughRouter",
                "class": "Illuminate\\Foundation\\Http\\Kernel",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            },
            {
                "file": "\/app\/backend\/public\/index.php",
                "line": 53,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Kernel",
                "type": "->",
                "args": [
                    {
                        "attributes": {},
                        "request": {},
                        "query": {},
                        "server": {},
                        "files": {},
                        "cookies": {},
                        "headers": {}
                    }
                ]
            }
        ]
    },
    "error_type": "query"
}
Проблема
Все дело в этой сточке. Согласно Laravel документации функция Password::sendResetLink принимает массив, ключи которого будут использованы напрямую при выборке сущности User из БД. Согласно коду, этот массив также содержит ключ и значение recaptcha, которое судя по всему не относится к сущности User в БД и передается в метод Password::sendResetLink по ошибке.
Решение
Задействовать ресурс/модель User и передавать методу Password::sendResetLink только данные доступные у этого ресурса/модели.
Edited  by Constantine Belkin