Skip to content

Conversation

bramr94
Copy link
Collaborator

@bramr94 bramr94 commented Sep 4, 2025

As discussed in #27.

This feature adds the option to override the default behavior of retrieving users from the database. For example, when using scopes that need to be removed when switching users.

@bramr94 bramr94 self-assigned this Sep 4, 2025

```php
use DutchCodingCompany\FilamentDeveloperLogins\FilamentDeveloperLoginsPlugin;
use Illuminate\Database\Eloquent\Builder;;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
use Illuminate\Database\Eloquent\Builder;;
use Illuminate\Database\Eloquent\Builder;

@@ -103,6 +103,27 @@ FilamentDeveloperLoginsPlugin::make()
->modelClass(Admin::class)
```

### Override query

Default the plugin will retrieve the user by searching the provided model using the specified column. If you want to implement your own logic to retrieve the user, you can use the `modelCallback()` method.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Default the plugin will retrieve the user by searching the provided model using the specified column. If you want to implement your own logic to retrieve the user, you can use the `modelCallback()` method.
By default the plugin will retrieve the user by searching the provided model using the specified column. If you want to implement your own logic to retrieve the user, you can use the `modelCallback()` method.

### Override query

Default the plugin will retrieve the user by searching the provided model using the specified column. If you want to implement your own logic to retrieve the user, you can use the `modelCallback()` method.
This method accepts a closure and provides the plugin and should return an instance of `Illuminate\Database\Eloquent\Builder`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This method accepts a closure and provides the plugin and should return an instance of `Illuminate\Database\Eloquent\Builder`.
This method accepts a closure. The closure should return an instance of `Illuminate\Database\Eloquent\Builder`.

* @param string $credentials
* @return Builder<\Illuminate\Database\Eloquent\Model&\Illuminate\Contracts\Auth\Authenticatable>
*/
public function getModelCallback(self $plugin, string $credentials): Builder
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't get the model callback, but the user query builder (via the model callback)

Comment on lines +117 to +119
value: $this->modelCallback
?? static fn (): Builder => (new ($plugin->getModelClass()))
->where($plugin->getColumn(), $credentials),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

            value: $this->modelCallback
                ?? static fn (self $plugin, string $credentials): Builder => (new ($plugin->getModelClass()))->where($plugin->getColumn(), $credentials),

@bramr94 bramr94 marked this pull request as draft September 4, 2025 12:51
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

Successfully merging this pull request may close these issues.

2 participants