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

Error when liking anonymous posts #2

Closed
clarkwinkelmann opened this issue Aug 25, 2022 · 1 comment
Closed

Error when liking anonymous posts #2

clarkwinkelmann opened this issue Aug 25, 2022 · 1 comment

Comments

@clarkwinkelmann
Copy link
Owner

When liking a post created by an anonymous user, a 500 error is thrown.

The problem is that the workaround to make other notifications work causes $post->user to return an instance of AnonymousUser. The likes extension usually checks that relationship to decide whether to send a notification. Since it's truthy, it proceeds but fails since it's not a real user.

$post->setRelation('user', new AnonymousUser());

The intended behaviour would be for no notifications to be sent. The ideal behaviour would be to send the notification to the original anonymous author.

This issue is a WONTFIX unless someone sponsors it. I estimate 30min to 1h of work is required, as it requires re-testing all the notifications that should be supported.

[2022-08-25 07:17:47] flarum.ERROR: PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null in /home/clark/Projects/flarum-1.2/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:117
Stack trace:
#0 /home/clark/Projects/flarum-1.2/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php(117): PDOStatement->execute()
#1 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Connection.php(501): Doctrine\DBAL\Driver\PDOStatement->execute()
#2 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Connection.php(705): Illuminate\Database\Connection->Illuminate\Database\{closure}()
#3 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Connection.php(672): Illuminate\Database\Connection->runQueryCallback()
#4 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Connection.php(502): Illuminate\Database\Connection->run()
#5 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Connection.php(454): Illuminate\Database\Connection->statement()
#6 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Query/Builder.php(2980): Illuminate\Database\Connection->insert()
#7 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Eloquent/Builder.php(1657): Illuminate\Database\Query\Builder->insert()
#8 /home/clark/Projects/flarum-1.2/vendor/illuminate/support/Traits/ForwardsCalls.php(23): Illuminate\Database\Eloquent\Builder->__call()
#9 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Eloquent/Model.php(2132): Illuminate\Database\Eloquent\Model->forwardCallTo()
#10 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Database/AbstractModel.php(214): Illuminate\Database\Eloquent\Model->__call()
#11 /home/clark/Projects/flarum-1.2/vendor/illuminate/database/Eloquent/Model.php(2144): Flarum\Database\AbstractModel->__call()
#12 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Notification/Notification.php(227): Illuminate\Database\Eloquent\Model::__callStatic()
#13 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Notification/Job/SendNotificationsJob.php(37): Flarum\Notification\Notification::notify()
#14 /home/clark/Projects/flarum-1.2/vendor/illuminate/container/BoundMethod.php(36): Flarum\Notification\Job\SendNotificationsJob->handle()
#15 /home/clark/Projects/flarum-1.2/vendor/illuminate/container/Util.php(40): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#16 /home/clark/Projects/flarum-1.2/vendor/illuminate/container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#17 /home/clark/Projects/flarum-1.2/vendor/illuminate/container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#18 /home/clark/Projects/flarum-1.2/vendor/illuminate/container/Container.php(653): Illuminate\Container\BoundMethod::call()
#19 /home/clark/Projects/flarum-1.2/vendor/illuminate/bus/Dispatcher.php(128): Illuminate\Container\Container->call()
#20 /home/clark/Projects/flarum-1.2/vendor/illuminate/pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
#21 /home/clark/Projects/flarum-1.2/vendor/illuminate/pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#22 /home/clark/Projects/flarum-1.2/vendor/illuminate/bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
#23 /home/clark/Projects/flarum-1.2/vendor/illuminate/queue/CallQueuedHandler.php(120): Illuminate\Bus\Dispatcher->dispatchNow()
#24 /home/clark/Projects/flarum-1.2/vendor/illuminate/pipeline/Pipeline.php(128): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue\{closure}()
#25 /home/clark/Projects/flarum-1.2/vendor/illuminate/pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#26 /home/clark/Projects/flarum-1.2/vendor/illuminate/queue/CallQueuedHandler.php(122): Illuminate\Pipeline\Pipeline->then()
#27 /home/clark/Projects/flarum-1.2/vendor/illuminate/queue/CallQueuedHandler.php(70): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware()
#28 /home/clark/Projects/flarum-1.2/vendor/illuminate/queue/Jobs/Job.php(98): Illuminate\Queue\CallQueuedHandler->call()
#29 /home/clark/Projects/flarum-1.2/vendor/illuminate/queue/SyncQueue.php(43): Illuminate\Queue\Jobs\Job->fire()
#30 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Notification/Driver/AlertNotificationDriver.php(35): Illuminate\Queue\SyncQueue->push()
#31 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Notification/NotificationSyncer.php(110): Flarum\Notification\Driver\AlertNotificationDriver->send()
#32 /home/clark/Projects/flarum-1.2/vendor/flarum/likes/src/Listener/SendNotificationWhenPostIsLiked.php(36): Flarum\Notification\NotificationSyncer->sync()
#33 /home/clark/Projects/flarum-1.2/vendor/illuminate/events/Dispatcher.php(424): Flarum\Likes\Listener\SendNotificationWhenPostIsLiked->handle()
#34 /home/clark/Projects/flarum-1.2/vendor/illuminate/events/Dispatcher.php(249): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}()
#35 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Foundation/DispatchEventsTrait.php(33): Illuminate\Events\Dispatcher->dispatch()
#36 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Post/Command/EditPostHandler.php(86): Flarum\Post\Command\EditPostHandler->dispatchEventsFor()
#37 /home/clark/Projects/flarum-1.2/vendor/illuminate/bus/Dispatcher.php(122): Flarum\Post\Command\EditPostHandler->handle()
#38 /home/clark/Projects/flarum-1.2/vendor/illuminate/pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
#39 /home/clark/Projects/flarum-1.2/vendor/illuminate/pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#40 /home/clark/Projects/flarum-1.2/vendor/illuminate/bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
#41 /home/clark/Projects/flarum-1.2/vendor/illuminate/bus/Dispatcher.php(78): Illuminate\Bus\Dispatcher->dispatchNow()
#42 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Api/Controller/UpdatePostController.php(58): Illuminate\Bus\Dispatcher->dispatch()
#43 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Api/Controller/AbstractSerializeController.php(115): Flarum\Api\Controller\UpdatePostController->data()
#44 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): Flarum\Api\Controller\AbstractSerializeController->handle()
#45 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}()
#46 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ExecuteRoute->process()
#47 /home/clark/Projects/flarum-1.2/workbench/flarum-ext-readonly-profile/src/AbstractMiddleware.php(22): Laminas\Stratigility\Next->handle()
#48 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): ClarkWinkelmann\ReadonlyProfile\AbstractMiddleware->process()
#49 /home/clark/Projects/flarum-1.2/workbench/taxonomies/src/Middlewares/NestedArrayFilterToJSON.php(29): Laminas\Stratigility\Next->handle()
#50 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flamarkt\Taxonomies\Middlewares\NestedArrayFilterToJSON->process()
#51 /home/clark/Projects/flarum-1.2/workbench/flarum-ext-audit-free/src/Middlewares/SetLoggerActor.php(28): Laminas\Stratigility\Next->handle()
#52 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Kilowhat\Audit\Middlewares\SetLoggerActor->process()
#53 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Api/Middleware/ThrottleApi.php(33): Laminas\Stratigility\Next->handle()
#54 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Api\Middleware\ThrottleApi->process()
#55 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(44): Laminas\Stratigility\Next->handle()
#56 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\CheckCsrfToken->process()
#57 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(67): Laminas\Stratigility\Next->handle()
#58 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ResolveRoute->process()
#59 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle()
#60 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\SetLocale->process()
#61 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(58): Laminas\Stratigility\Next->handle()
#62 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithHeader->process()
#63 /home/clark/Projects/flarum-1.2/workbench/flarum-ext-jwt-cookie-login/src/Middleware/AuthenticateWithJWT.php(54): Laminas\Stratigility\Next->handle()
#64 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): ClarkWinkelmann\JWTCookieLogin\Middleware\AuthenticateWithJWT->process()
#65 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle()
#66 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithSession->process()
#67 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle()
#68 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\RememberFromCookie->process()
#69 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle()
#70 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\StartSession->process()
#71 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(29): Laminas\Stratigility\Next->handle()
#72 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Api\Middleware\FakeHttpMethods->process()
#73 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle()
#74 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ParseJsonBody->process()
#75 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle()
#76 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\HandleErrors->process()
#77 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle()
#78 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\InjectActorReference->process()
#79 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle()
#80 /home/clark/Projects/flarum-1.2/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process()
#81 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\RequestHandler->process()
#82 /home/clark/Projects/flarum-1.2/vendor/middlewares/base-path-router/src/BasePathRouter.php(101): Laminas\Stratigility\Next->handle()
#83 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePathRouter->process()
#84 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(36): Laminas\Stratigility\Next->handle()
#85 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Laminas\Stratigility\Middleware\OriginalMessages->process()
#86 /home/clark/Projects/flarum-1.2/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle()
#87 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePath->process()
#88 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle()
#89 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ProcessIp->process()
#90 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle()
#91 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(65): Laminas\Stratigility\MiddlewarePipe->process()
#92 /home/clark/Projects/flarum-1.2/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle()
#93 /home/clark/Projects/flarum-1.2/vendor/flarum/core/src/Http/Server.php(44): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
#94 /home/clark/Projects/flarum-1.2/public/index.php(26): Flarum\Http\Server->listen()
#95 {main}
@clarkwinkelmann
Copy link
Owner Author

I ended up unintentionally fixing this while improving the error handling, so here we go...

1.0.1 just makes the error go away. Anonymous authors still won't get notifications about likes to their anonymous posts. That would require additional code specially for this.

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

1 participant