﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
35971	RemoteUserMiddleware needs a get_username method	Adrien Kunysz		"As currently implemented, the only way to customise how RemoteUserMiddleware gets the username is through the ""header"" variable. This is then used in __call__ and __acall__ methods like this:

{{{
            username = request.META[self.header]
}}}

It would be convenient to move that logic into a separate method that could be overridden. For example:
{{{
get_username(self):
    return request.META[self.header]    
}}}

Specific use case: the proxy I have in front of Django always sets two specific headers (say ""X-Username"" and ""X-Authenticated""). The value of ""X-Username"" is only valid if ""X-Authenticated"" is ""true"", otherwise it should be ignored (typically it ends up being a single space character). I use PersistentRemoteMiddleware to use X-Username but the only way I found to ignore it when X-Authenticated is not true is to override __call__ / __acall__ or clean_username. Both seem rather fragile while a small change to RemoteUserMiddleware would make for a much more robust, flexible and maintainable solution.

With the proposed change, in my child class I could just say
{{{
def get_username(self):
    if request.META[""X-Authenticated""].lower() != ""true"":
        raise KeyError
    else:
        return request.META[self.header]
}}}

I am happy to propose a patch if we can agree this change is desirable."	Uncategorized	new	contrib.auth	dev	Normal			Adrien Kunysz	Unreviewed	0	0	0	0	0	0
