use auth.get_user_groups
This commit is contained in:
parent
60722acf09
commit
9d03e43a6a
2 changed files with 10 additions and 24 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue