Skip to content

Commit 65f4acf

Browse files
committed
Make example idp compatible with python3
Signed-off-by: Ivan Kanakarakis <[email protected]>
1 parent 4018754 commit 65f4acf

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

example/idp2/idp.py

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from mako.lookup import TemplateLookup
1212

13+
import six
1314
from six.moves.http_cookies import SimpleCookie
1415
from six.moves.urllib.parse import parse_qs
1516

@@ -578,16 +579,20 @@ def username_password_authn(
578579

579580

580581
def verify_username_and_password(dic):
581-
global PASSWD
582582
# verify username and password
583-
if PASSWD[dic["login"][0]] == dic["password"][0]:
584-
return True, dic["login"][0]
583+
username = dic["login"][0]
584+
password = dic["password"][0]
585+
if PASSWD[username] == password:
586+
return True, username
585587
else:
586-
return False, ""
588+
return False, None
587589

588590

589591
def do_verify(environ, start_response, _):
590-
query = parse_qs(get_post(environ))
592+
query_str = get_post(environ)
593+
if not isinstance(query_str, six.string_types):
594+
query_str = query_str.decode("ascii")
595+
query = parse_qs(query_str)
591596

592597
logger.debug("do_verify: %s", query)
593598

@@ -877,7 +882,10 @@ def info_from_cookie(kaka):
877882
morsel = cookie_obj.get("idpauthn", None)
878883
if morsel:
879884
try:
880-
key, ref = base64.b64decode(morsel.value).split(":")
885+
data = base64.b64decode(morsel.value)
886+
if not isinstance(data, six.string_types):
887+
data = data.decode("ascii")
888+
key, ref = data.split(":", 1)
881889
return IDP.cache.uid2user[key], ref
882890
except (KeyError, TypeError):
883891
return None, None
@@ -903,7 +911,16 @@ def delete_cookie(environ, name):
903911

904912
def set_cookie(name, _, *args):
905913
cookie = SimpleCookie()
906-
cookie[name] = base64.b64encode(":".join(args))
914+
915+
data = ":".join(args)
916+
if not isinstance(data, six.binary_type):
917+
data = data.encode("ascii")
918+
919+
data64 = base64.b64encode(data)
920+
if not isinstance(data64, six.string_types):
921+
data64 = data64.decode("ascii")
922+
923+
cookie[name] = data64
907924
cookie[name]["path"] = "/"
908925
cookie[name]["expires"] = _expiration(5) # 5 minutes from now
909926
logger.debug("Cookie expires: %s", cookie[name]["expires"])

0 commit comments

Comments
 (0)