Hey Florian,
First of all, thank you for the feedback and I'm glad you agree that the feature would be nice to have :)
I'm willing to implement whichever version people agree on since I do think the feature will be useful, but I do think that having separate methods is clearer, simpler, as well as easier to maintain and extend:
- Existing RemoteUserBackend implementations won't need to change signatures whenever backwards compatibility is removed
- RemoteUserBackend implementations won't need to do anything in order to support Django versions in which the feature doesn't exist (e.g. 3.9) and versions in which the feature exists and is not backwards-compatible (e.g. 5.1)
- The code footprint within Django, not counting documentation and tests, is like 3 LOC
- Anyone who wants to extend a RemoteUserBackend implementation can easily and cleanly extend/replace the synchronization and initial setup independently of each other, if everything is done in the same method this can get messy
That last point might lead implementors to define their configure_user like so:
def configure_user(self, request, user, created):
if created:
user = self.initial_configuration(request, user)
user = self.synchronize(request, user)
return user
Which is the same as having two separate methods for initial configuration and synchronization, but with extra steps.
Have a good weekend,
Adrian