Rebase auth.py hotfix for koji 1.17.0
Signed-off-by: Patrick Uiterwijk <patrick@puiterwijk.org>
This commit is contained in:
parent
94fa772a04
commit
1bb9476f78
1 changed files with 9 additions and 8 deletions
|
@ -28,12 +28,13 @@ try:
|
|||
import krbV
|
||||
except ImportError:
|
||||
krbV = None
|
||||
import koji
|
||||
import urlparse #for parse_qs
|
||||
from .context import context
|
||||
from six.moves import range
|
||||
from six.moves import urllib
|
||||
from six.moves import zip
|
||||
import six
|
||||
from .util import to_list
|
||||
|
||||
# 1 - load session if provided
|
||||
# - check uri for session id
|
||||
|
@ -83,7 +84,7 @@ class Session(object):
|
|||
self.message = 'no session args'
|
||||
return
|
||||
args = urlparse.parse_qs(args, strict_parsing=True)
|
||||
hostip = self.get_remote_ip(override=hostip)
|
||||
args = urllib.parse.parse_qs(args, strict_parsing=True)
|
||||
try:
|
||||
id = int(args['session-id'][0])
|
||||
key = args['session-key'][0]
|
||||
|
@ -108,7 +109,7 @@ class Session(object):
|
|||
'user_id': 'user_id',
|
||||
}
|
||||
# sort for stability (unittests)
|
||||
fields, aliases = list(zip(*list(sorted(fields.items(), key=lambda x: x[1]))))
|
||||
fields, aliases = zip(*sorted(fields.items(), key=lambda x: x[1]))
|
||||
q = """
|
||||
SELECT %s FROM sessions
|
||||
WHERE id = %%(id)i
|
||||
|
@ -120,7 +121,7 @@ class Session(object):
|
|||
row = c.fetchone()
|
||||
if not row:
|
||||
raise koji.AuthError('Invalid session or bad credentials')
|
||||
session_data = dict(list(zip(aliases, row)))
|
||||
session_data = dict(zip(aliases, row))
|
||||
#check for expiration
|
||||
if session_data['expired']:
|
||||
raise koji.AuthExpired('session "%i" has expired' % id)
|
||||
|
@ -158,7 +159,7 @@ class Session(object):
|
|||
fields = ('name', 'status', 'usertype')
|
||||
q = """SELECT %s FROM users WHERE id=%%(user_id)s""" % ','.join(fields)
|
||||
c.execute(q, session_data)
|
||||
user_data = dict(list(zip(fields, c.fetchone())))
|
||||
user_data = dict(zip(fields, c.fetchone()))
|
||||
|
||||
if user_data['status'] != koji.USER_STATUS['NORMAL']:
|
||||
raise koji.AuthError('logins by %s are not allowed' % user_data['name'])
|
||||
|
@ -322,7 +323,7 @@ class Session(object):
|
|||
ac.addrs = conninfo
|
||||
|
||||
# decode and read the authentication request
|
||||
req = base64.decodestring(krb_req)
|
||||
req = base64.b64decode(krb_req)
|
||||
ac, opts, sprinc, ccreds = ctx.rd_req(req, server=srvprinc, keytab=srvkt,
|
||||
auth_context=ac,
|
||||
options=krbV.AP_OPTS_MUTUAL_REQUIRED)
|
||||
|
@ -539,7 +540,7 @@ class Session(object):
|
|||
def getPerms(self):
|
||||
if not self.logged_in:
|
||||
return []
|
||||
return list(self.perms.keys())
|
||||
return to_list(self.perms.keys())
|
||||
|
||||
def hasPerm(self, name):
|
||||
if not self.logged_in:
|
||||
|
@ -711,7 +712,7 @@ def get_user_data(user_id):
|
|||
row = c.fetchone()
|
||||
if not row:
|
||||
return None
|
||||
return dict(list(zip(fields, row)))
|
||||
return dict(zip(fields, row))
|
||||
|
||||
def login(*args, **opts):
|
||||
return context.session.login(*args, **opts)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue