Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing required parameter for [Route: customer@overview] [URI: customer/overview/{cust}/{tab?}] #888

Open
rfc1036 opened this issue Mar 27, 2024 · 4 comments

Comments

@rfc1036
Copy link

rfc1036 commented Mar 27, 2024

ISSUE TYPE

Bug Report

OS

Ubuntu 22.04.4 LTS.

VERSION
define( 'APPLICATION_VERSION', '6.3.1' );
define( 'APPLICATION_VERDATE', '2023062000' );
ENVIRONMENT
PHP 8.0.30 (cli) (built: Mar  7 2024 08:52:11) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies
ii  php-common                        2:94+ubuntu22.04.1+deb.sury.org+2                                    all          Common files for PHP packages
ii  php-pear                          1:1.10.13+submodules+notgz+2022032202-2+ubuntu20.04.1+deb.sury.org+1 all          PEAR Base System
ii  php8.0                            1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              all          server-side, HTML-embedded scripting language (metapackage)
ii  php8.0-bcmath                     1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        Bcmath module for PHP
ii  php8.0-cli                        1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        command-line interpreter for the PHP scripting language
ii  php8.0-common                     1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        documentation, examples and common module for PHP
ii  php8.0-curl                       1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        CURL module for PHP
ii  php8.0-ds                         1.5.0-1+ubuntu22.04.1+deb.sury.org+1                                 amd64        PHP extension providing efficient data structures for PHP 7
ii  php8.0-fpm                        1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        server-side, HTML-embedded scripting language (FPM-CGI binary)
ii  php8.0-gd                         1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        GD module for PHP
ii  php8.0-igbinary                   3.2.15-1+ubuntu22.04.1+deb.sury.org+1                                amd64        igbinary PHP serializer
ii  php8.0-intl                       1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        Internationalisation module for PHP
ii  php8.0-mbstring                   1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        MBSTRING module for PHP
ii  php8.0-memcache                   8.2-2+ubuntu22.04.1+deb.sury.org+2                                   amd64        memcache extension module for PHP
ii  php8.0-memcached                  3.2.0++-1+ubuntu22.04.1+deb.sury.org+2                               amd64        memcached extension module for PHP, uses libmemcached
ii  php8.0-msgpack                    1:2.1.2-1+ubuntu22.04.1+deb.sury.org+1                               amd64        PHP extension for interfacing with MessagePack
ii  php8.0-mysql                      1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        MySQL module for PHP
ii  php8.0-opcache                    1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        Zend OpCache module for PHP
ii  php8.0-readline                   1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        readline module for PHP
ii  php8.0-rrd                        2.0.3++-1+ubuntu22.04.1+deb.sury.org+2                               amd64        PHP bindings to rrd tool system
ii  php8.0-snmp                       1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        SNMP module for PHP
ii  php8.0-xml                        1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        DOM, SimpleXML, XML, and XSL module for PHP
ii  php8.0-yaml                       2.2.3-2+ubuntu22.04.1+deb.sury.org+2                                 amd64        YAML-1.1 parser and emitter for PHP
ii  php8.0-zip                        1:8.0.30-3+ubuntu22.04.1+deb.sury.org+1                              amd64        Zip module for PHP
SUMMARY

/users/list fails with a 500 error.

RELEVANT LOGS
[2024-03-27 13:06:53] production.ERROR: Missing required parameter for [Route: customer@overview] [URI: customer/overview/{cust}/{tab?}] [Missing parameter: cust]. {"userId":1,"exception":"[object] (Illuminate\\Routing\\Exceptions\\UrlGenerationException(code: 0): Missing required parameter for [Route: customer@overview] [URI: customer/overview/{cust}/{tab?}] [Missing parameter: cust]. at /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Exceptions/UrlGenerationException.php:35)
[stacktrace]
#0 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/RouteUrlGenerator.php(91): Illuminate\\Routing\\Exceptions\\UrlGenerationException::forMissingParameters()
#1 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php(466): Illuminate\\Routing\\RouteUrlGenerator->to()
#2 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php(441): Illuminate\\Routing\\UrlGenerator->toRoute()
#3 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(739): Illuminate\\Routing\\UrlGenerator->route()
#4 /srv/ixpmanager/resources/views/user/index.foil.php(83): route()
#5 /srv/ixpmanager/vendor/foil/foil/src/Template/Template.php(287): require('...')
#6 /srv/ixpmanager/vendor/foil/foil/src/Template/Template.php(231): Foil\\Template\\Template->collect()
#7 /srv/ixpmanager/vendor/foil/foil/src/Engine.php(307): Foil\\Template\\Template->render()
#8 /srv/ixpmanager/vendor/foil/foil/src/Engine.php(231): Foil\\Engine->doRender()
#9 /srv/ixpmanager/vendor/foil/foil/src/Engine.php(204): Foil\\Engine->renderTemplate()
#10 /srv/ixpmanager/app/Services/FoilEngine.php(54): Foil\\Engine->render()
#11 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/View/View.php(139): IXP\\Services\\FoilEngine->get()
#12 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/View/View.php(122): Illuminate\\View\\View->getContents()
#13 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/View/View.php(91): Illuminate\\View\\View->renderContents()
#14 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Http/Response.php(69): Illuminate\\View\\View->render()
#15 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Http/Response.php(35): Illuminate\\Http\\Response->setContent()
#16 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Router.php(820): Illuminate\\Http\\Response->__construct()
#17 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Router.php(789): Illuminate\\Routing\\Router::toResponse()
#18 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Router.php(721): Illuminate\\Routing\\Router->prepareResponse()
#19 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#20 /srv/ixpmanager/app/Http/Middleware/Google2FA.php(79): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#21 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): IXP\\Http\\Middleware\\Google2FA->handle()
#22 /srv/ixpmanager/app/Http/Middleware/ControllerEnabled.php(94): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#23 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): IXP\\Http\\Middleware\\ControllerEnabled->handle()
#24 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#25 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#26 /srv/ixpmanager/app/Http/Middleware/Authenticate.php(102): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#27 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): IXP\\Http\\Middleware\\Authenticate->handle()
#28 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#29 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle()
#30 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#31 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle()
#32 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest()
#34 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle()
#35 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#36 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle()
#37 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#38 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle()
#39 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#40 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Router.php(723): Illuminate\\Pipeline\\Pipeline->then()
#41 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Router.php(698): Illuminate\\Routing\\Router->runRouteWithinStack()
#42 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\\Routing\\Router->runRoute()
#43 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Routing/Router.php(651): Illuminate\\Routing\\Router->dispatchToRoute()
#44 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch()
#45 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#46 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#47 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#48 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#49 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#50 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#51 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#52 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#53 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#54 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#55 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#56 /srv/ixpmanager/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#57 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle()
#58 /srv/ixpmanager/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#59 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fideloper\\Proxy\\TrustProxies->handle()
#60 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#61 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then()
#62 /srv/ixpmanager/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#63 /srv/ixpmanager/public/index.php(89): Illuminate\\Foundation\\Http\\Kernel->handle()
#64 {main}
"} 
@nickhilliard
Copy link
Member

/user/list is routed to the customer@list method, but this error refers to customer@overview which is the view when you click on /customer/overview/xxx and click on the Users tab.

Can you describe how to repeat the problem?

Also, can you:

@barryo
Copy link
Member

barryo commented Mar 29, 2024

Hey @rfc1036 - pending Nick's ask above for steps to reproduce - I've looked at resources/views/user/index.foil.php and don't see any issues and it works fine in production and dev.

One thing to note is that /users/list is not a valid URL but rather /user/list, which I suspect you meant anyway.

Is there a database issue here? I can't imagine how it would happen, but ensure there are no users not linked to a customer:

SELECT * FROM `user` WHERE `custid` IS NULL;

@rfc1036
Copy link
Author

rfc1036 commented Apr 3, 2024

To reproduce the issue I just had to access /user/list.

Indeed there was one user with no custid: after setting it the page works again.
I may or may not have deleted that user myself as the administrator, I cannot really remember. But I am sure that I have never tried modifying the database.

| id  | custid | username      | password | email | authorisedMobile | uid  | privs | disabled | lastupdatedby | creator         | name | peeringdb_id | extra_attributes | prefs                              | created_at          | updated_at          |
| 220 |   NULL | xxxxx.xxxxxx2 | ...      | NULL  | NULL             | NULL |     1 |     NULL |          NULL | OAuth-PeeringDB | NULL |        54698 | []               | {"mailinglist": {"minap-tech": 0}} | 2023-02-22 13:52:25 | 2023-02-22 20:32:01 |

@barryo
Copy link
Member

barryo commented Apr 3, 2024

Thanks @rfc1036 - OAuth-PeeringDB may indicate the culprit. If a user is authenticated via PeeringDB and then subsequently removed from that org's PeeringDB account then we may clear custid. Will keep this open and check + find a better way to handle this case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants