mirror of
https://github.com/servo/servo.git
synced 2025-06-26 01:54:33 +01:00
32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
def main(request, response):
|
|
if "logout" in request.GET:
|
|
return ((401, "Unauthorized"),
|
|
[("WWW-Authenticate", 'Basic realm="test"')],
|
|
"Logged out, hopefully")
|
|
|
|
session_user = request.auth.username
|
|
session_pass = request.auth.password
|
|
expected_user_name = request.headers.get("X-User", None)
|
|
|
|
token = expected_user_name
|
|
if session_user is None and session_pass is None:
|
|
if token is not None and request.server.stash.take(token) is not None:
|
|
return 'FAIL (did not authorize)'
|
|
else:
|
|
if token is not None:
|
|
request.server.stash.put(token, "1")
|
|
status = (401, 'Unauthorized')
|
|
headers = [('WWW-Authenticate', 'Basic realm="test"'),
|
|
('XHR-USER', expected_user_name),
|
|
('SES-USER', session_user)]
|
|
return status, headers, 'FAIL (should be transparent)'
|
|
else:
|
|
if request.server.stash.take(token) == "1":
|
|
challenge = "DID"
|
|
else:
|
|
challenge = "DID-NOT"
|
|
headers = [('XHR-USER', expected_user_name),
|
|
('SES-USER', session_user),
|
|
("X-challenge", challenge)]
|
|
return headers, session_user + "\n" + session_pass;
|
|
|