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

500 error when getting api/v2/user/panel with postgresql #13

Closed
Xadoy opened this issue Jul 11, 2023 · 2 comments
Closed

500 error when getting api/v2/user/panel with postgresql #13

Xadoy opened this issue Jul 11, 2023 · 2 comments
Assignees
Labels
bug Something isn't working

Comments

@Xadoy
Copy link

Xadoy commented Jul 11, 2023

Fresns Version
2.17

Describe the bug
When getting api/v2/user/panel get 500 error due to database now() output for postgresql contains more than expected content. Unlike mysql, now() returns more data (e.g. timezone). So carbon failed to parse the string and returned 500.

To Reproduce
Steps to reproduce the behavior:

  1. Use postgresql
  2. create user in the limited group
  3. login and call panel api
  4. See error below

Expected behavior
Should handle now() output by postgresql properly.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information): I don't think this is related

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information): I don't think this is related

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context

dump currentTime

"2023-07-11 08:39:21.790769+08" // app/Helpers/DateHelper.php:221

stacktrace

[2023-07-10 21:29:39] production.ERROR: Trailing data {"exception":"[object] (Carbon\\Exceptions\\InvalidFormatException(code: 0): Trailing data at /www/wwwroot/example.com/fresns/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php:687)
[stacktrace]
#0 /www/wwwroot/example.com/fresns/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(710): Carbon\\Carbon::rawCreateFromFormat()
#1 /www/wwwroot/example.com/fresns/app/Helpers/DateHelper.php(221): Carbon\\Carbon::createFromFormat()
#2 /www/wwwroot/example.com/fresns/app/Utilities/ConfigUtility.php(478): App\\Helpers\\DateHelper::fresnsTimeByTimezone()
#3 /www/wwwroot/example.com/fresns/app/Fresns/Api/Http/Controllers/UserController.php(663): App\\Utilities\\ConfigUtility::getPublishConfigByType()
#4 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Fresns\\Api\\Http\\Controllers\\UserController->panel()
#5 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction()
#6 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#7 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#8 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/Router.php(799): Illuminate\\Routing\\Route->run()
#9 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#10 /www/wwwroot/example.com/fresns/app/Fresns/Api/Http/Middleware/CheckReadOnly.php(32): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#11 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Fresns\\Api\\Http\\Middleware\\CheckReadOnly->handle()
#12 /www/wwwroot/example.com/fresns/app/Fresns/Api/Http/Middleware/CheckHeaderByWhitelist.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#13 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Fresns\\Api\\Http\\Middleware\\CheckHeaderByWhitelist->handle()
#14 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#15 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\\Pipeline\\Pipeline->then()
#16 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/Router.php(777): Illuminate\\Routing\\Router->runRouteWithinStack()
#17 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/Router.php(741): Illuminate\\Routing\\Router->runRoute()
#18 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Routing/Router.php(730): Illuminate\\Routing\\Router->dispatchToRoute()
#19 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch()
#20 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#21 /www/wwwroot/example.com/fresns/app/Fresns/Install/Http/Middleware/DetectionRequestProtocol.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#22 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Fresns\\Install\\Http\\Middleware\\DetectionRequestProtocol->handle()
#23 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#24 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#25 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#26 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#27 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#28 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#29 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#30 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#31 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#32 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#33 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(62): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#34 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\HandleCors->handle()
#35 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#36 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#37 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#38 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then()
#39 /www/wwwroot/example.com/fresns/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#40 /www/wwwroot/example.com/fresns/public/index.php(52): Illuminate\\Foundation\\Http\\Kernel->handle()
#41 {main}
@Xadoy
Copy link
Author

Xadoy commented Jul 11, 2023

Also while reading the code for fresnsTimeByTimezone(), I am not sure I understand what we are trying to do here. If MySql returns string without timezone in fresnsDatabaseCurrentDateTime(), is this function working as expected?

@jevantang jevantang self-assigned this Jul 11, 2023
@jevantang jevantang added the bug Something isn't working label Jul 11, 2023
@jevantang
Copy link
Member

Also while reading the code for fresnsTimeByTimezone(), I am not sure I understand what we are trying to do here. If MySql returns string without timezone in fresnsDatabaseCurrentDateTime(), is this function working as expected?

DateHelper::fresnsTimeByTimezone($time, $timezone);
https://fresns.org/supports/helpers/date.html#get-time-by-specified-timezone

For example
If $time is the time at 10:30 and the system timezone is +8, then 10:30 is the current time in the +8 timezone.
$timezone is the timezone you want to use, for example +2 timezone, then you will get 04:30 as a result.
This is so that people in different time zones will see the time value as the current time on their own clocks.

The fresnsDatabaseCurrentDateTime error affects this functionality.

Chinese Reply
比如 $time 是 10:30 时间,系统时区是 +8 时区,那么 10:30 则是当前 +8 时区的时间。
$timezone 是你想要使用的时区,比如 +2 时区,那么你将得到 04:30 这个结果。
这个功能是为了让不同时区的人,看到的时间值都是当前自己时钟的时间。

fresnsDatabaseCurrentDateTime() 报错会影响该功能。

jevantang added a commit that referenced this issue Jul 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants