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 exporting using queue, auth user and filter with relation #97

Open
ArnaudBan opened this issue Aug 3, 2023 · 7 comments
Open
Labels
bug Something isn't working

Comments

@ArnaudBan
Copy link

I have create the smallest test project to reproduce the bug :
https://github.com/ArnaudBan/filament-excel-export-reproduce-bug

There is a bug when :

  1. you set the export to use fromTable() and ->queue()
ExcelExport::make('table')
   ->fromTable()
    ->queue()
  1. In the filament ressource you have a query that depends on the auht()->user
public static function getEloquentQuery(): Builder
{
    return parent::getEloquentQuery()
       ->where('city_id', auth()->user()->city_id);
}
  1. You have a filter with a relation field
->filters([
    Tables\Filters\SelectFilter::make('place')
        ->relationship('city', 'name')
])

Then when you export you have an error because the export try to get the query of the filament resource, but when it is done asynchronously there is no auth user

ErrorException: Attempt to read property "city_id" on null in /Users/arnaudbanvillet/Sites/export-bug/app/Filament/Resources/UserResource.php:27

@pxlrbt
Copy link
Owner

pxlrbt commented Aug 3, 2023

Thanks for creating an issue and providing a reproduction repo. I am not really sure how to tackle this though, since currently we just serialize the closures and of course the user gets lost on the queue. Need to think of some workarounds.

I probably won't have time to look into this in the next weeks as I still have some client work and still haven't upgraded my plugins for Filament v3 which is a priority for me.

@pxlrbt pxlrbt added the bug Something isn't working label Aug 3, 2023
@MichaelMdp
Copy link

I have similar issues when using Auth::user() in a closure of a filter method (e.g. visible()), even without using ->fromTable().

Another related issue is global scopes using Auth::user().
As a workaround I use the ->modifyQueryUsing(...) method on the ExcelExport::make() method, to force my global scope.

Did you find any solution ?

@pxlrbt
Copy link
Owner

pxlrbt commented Aug 28, 2023

No, sorry. Didn't have the time to look into this and it wasn't my priority so far, since there were other bugs. When I think about it: A possible solution would be to store the current user with the job and authenticate as that user before running the queue.

But I think I need to overwrite the Job classes from the excel package. Sounds like it would take quite some time.

@nitinatvaluelabs
Copy link

Anybody know any work-around with this one? Seems like I have to remove queue() method till this bug gets resolved.

@sadekd
Copy link

sadekd commented Feb 16, 2024

@nitinatvaluelabs try official Export Action added in FilamentPhp V3

https://filamentphp.com/docs/3.x/actions/prebuilt-actions/export

@pxlrbt
Copy link
Owner

pxlrbt commented Feb 16, 2024

@sadekd Does the official one support columns based on the logged in user? I think this is more of a new feature than a bug.

@nitinatvaluelabs
Copy link

@sadekd Unfortunately, I am stuck with version 2 for the next two months. :(

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

5 participants