Alex Ogier,

Is it really better to require users to create their own User model that 
behaves like an admin user, instead of just shipping with a self contained 
admin user (as a profile model) without the auth component?

If the auth app was purely a stub to connect different profiles and 
authentication systems from different apps (or the project), but doesn't 
actually define any identity or authentication or profile models itself (not 
counting base abstract classes), isn't that effectively achieving the 
separation that you want? Being able to use admin without the current cruft in 
auth or with any completely different authentication credentials, and similarly 
using any other pluggable app without any cruft needed by the admin.

In any case, I don't think it will actually be possible to use the admin or any 
other pluggable app that relies on the concept of a central user who might 
access to multiple apps (instead of every app having its own users and auth) 
without *an* auth app and a central User model.

Like Adrian, I don't actually use the User model for auth or identity (name, 
email, etc.) anymore. But unless you have authored *all* the apps in your 
project and they know how to talk to *your* User model, you still need a User 
from Django, because that is what all 3rd party pluggable apps will need.

If I want to use any 3rd party apps that use the central user, I will still 
need to create a Django User and fake or sync the that are only there for the 
admin, even if I don't use the admin. If you still require swapped in User 
models to assume a minimal interface and fields, people will still have this 
problem.

This is why I think the central User should not contain any auth or identity 
data, so there is no cruft required only for apps you may not even be using, 
and so you are not tied to any particular auth system.

Cheers.
Tai.


On 06/04/2012, at 3:44 PM, Alex Ogier <alex.og...@gmail.com> wrote:

> I think this proposal will make more sense if people stop thinking "If 
> someone wants to use contrib.auth, then why do we need another crufty 
> interface to swap out auth.User?" Instead think of someone who wants to use 
> contrib.admin but not be stuck with contrib.auth.
> 
> The point of this proposal isn't to make contrib.auth larger and better, it's 
> to make it unnecessary. A lot of people find contrib.auth's models 
> unsatisfactory. Adrian Holovaty stated that he hasn't used auth.User for 
> several years. When you have a complex site with multiple authentication 
> methods and requirements that don't fit django's idea of a user, it stops 
> being worth it to bend yourself to django's will. The problem is that 
> contrib.auth and contrib.admin are currently intimately linked. This 
> proposal's purpose is to give an official way to break these two apart.
> 
> I don't know of a single framework out there besides Django that ships with a 
> fixed model for its users. The reason is that authentication and identity are 
> radically different for every site so it's tremendously important to support 
> whatever people decide to do, and not force decisions on them.
> 
> So, stop thinking just in terms of contrib.auth.models.User. If you're 
> already using that with a profile and it's all working fine, then this change 
> isn't for you. This is for everyone who just wishes auth.User would go away 
> without totally borking admin.
> 
> Respectfully,
> Alex Ogier
> 
> On Apr 6, 2012 1:21 AM, "Donald Stufft" <donald.stu...@gmail.com> wrote:
> Nothing about this proposal prevents this.
> 
> And in that case, no those 2 apps would not be able to be used together. But 
> this is hardly the first
> time that 2 apps cannot be used together. because of choices made like that 
> on the app owner.
> On Friday, April 6, 2012 at 1:18 AM, Harris Lapiroff wrote:
> 
>> I very much share Tai's concerns about the swappable user model introducing 
>> incompatibilities. Imagine two apps, each of which requires an "age" 
>> attribute on the user model. But suppose one of those apps expects age to be 
>> the number of years since that user's birth and one of those apps expects 
>> the age to be the number of years since the user registered for the website. 
>> The user model must provide the same attribute to both apps, but it is 
>> supposed to have a different value for each app. A developer will be unable 
>> to use these two apps together without patching one of them.
>> 
>> A bit of a contrived example, maybe, but I can imagine this 
>> same-name-different-purpose issue coming up over and over again, making 
>> otherwise pluggable apps incompatible with each other.
>> 
>> I think we should go with a pared down user model and allow each app to 
>> manage whatever data it needs on each user through profiles and signals. 
>> Developers will end up with some data duplication, but I think that is 
>> preferable to confusion about the source and purpose of data. Profiles are 
>> essentially a way for each app to namespace its own data and I think that's 
>> a good thing.
>> 
>> Harris
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django developers" group.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msg/django-developers/-/p4jhylEp3x8J.
>> To post to this group, send email to django-developers@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> django-developers+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/django-developers?hl=en.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django developers" group.
> To post to this group, send email to django-developers@googlegroups.com.
> To unsubscribe from this group, send email to 
> django-developers+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/django-developers?hl=en.
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django developers" group.
> To post to this group, send email to django-developers@googlegroups.com.
> To unsubscribe from this group, send email to 
> django-developers+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/django-developers?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to