use auth.get_user_groups

This commit is contained in:
Tomas Kopecek 2023-07-14 11:33:33 +02:00
parent 60722acf09
commit 9d03e43a6a
2 changed files with 10 additions and 24 deletions

View file

@ -7787,6 +7787,14 @@ def anon_handle_userinfo(goptions, session, args):
with session.multicall() as m:
userinfos = [m.getUser(user, groups=True) for user in args]
try:
# hub < 1.34 doesn't support groups option, it also raises an exception on access,
# so later it would fail the result iteration cycle
userinfos[0].result
except koji.ParameterError:
with session.multicall() as m:
userinfos = [m.getUser(user) for user in args]
user_infos = []
for username, userinfo in zip(args, userinfos):
if userinfo.result is None:
@ -7821,7 +7829,7 @@ def anon_handle_userinfo(goptions, session, args):
print("Permissions:")
for perm in perms.result:
print(" %s" % perm)
if userinfo['groups']:
if userinfo.get('groups'):
print("Groups:")
for group in sorted(userinfo['groups']):
print(" %s" % group)

View file

@ -4224,7 +4224,7 @@ def get_user(userInfo=None, strict=False, krb_princs=True, groups=False):
if krb_princs:
user['krb_principals'] = list_user_krb_principals(user['id'])
if groups:
user['groups'] = list_user_groups(user['id'])
user['groups'] = [x['name'] for x in get_user_groups(user['id'])]
return user
@ -4313,28 +4313,6 @@ def _edit_user(userInfo, name=None, krb_principal_mappings=None):
context.session.setKrbPrincipal(user['id'], krb_principal=a)
def list_user_groups(user_info=None):
if user_info is None:
user_info = context.session.user_id
if user_info is None:
# not logged in
raise koji.GenericError("No user provided")
data = {'info': user_info}
clauses = ['active IS TRUE']
joins = ['users g on g.id = user_groups.group_id']
if isinstance(user_info, int):
clauses.append('user_id = %(info)i')
elif isinstance(user_info, str):
joins.append('users AS u ON u.id = user_groups.user_id')
clauses.append('u.name = %(info)s')
else:
raise koji.GenericError('Invalid type for user_info: %s' % type(user_info))
fields = ['g.id', 'g.name']
query = QueryProcessor(tables=['user_groups'],
columns=fields, joins=joins, clauses=clauses, values=data)
return query.execute() or []
def list_user_krb_principals(user_info=None):
"""Return kerberos principal list of a user.