1010
1111from mako .lookup import TemplateLookup
1212
13+ import six
1314from six .moves .http_cookies import SimpleCookie
1415from six .moves .urllib .parse import parse_qs
1516
@@ -578,16 +579,20 @@ def username_password_authn(
578579
579580
580581def 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
589591def 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
904912def 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