mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-10 06:33:34 +00:00
expireTime can now be updated (#1298)
This commit is contained in:
@ -462,7 +462,7 @@ def update():
|
|||||||
|
|
||||||
def _getRoleAndUsers():
|
def _getRoleAndUsers():
|
||||||
checkSuspended = None
|
checkSuspended = None
|
||||||
role = None
|
role = ROLE_MEMBER
|
||||||
expireTime = None
|
expireTime = None
|
||||||
i = 5
|
i = 5
|
||||||
if sys.argv[i].lower() in GROUP_ROLES_MAP:
|
if sys.argv[i].lower() in GROUP_ROLES_MAP:
|
||||||
@ -472,6 +472,9 @@ def update():
|
|||||||
checkSuspended = sys.argv[i].lower() == 'suspended'
|
checkSuspended = sys.argv[i].lower() == 'suspended'
|
||||||
i += 1
|
i += 1
|
||||||
if sys.argv[i].lower() in ['expire', 'expires']:
|
if sys.argv[i].lower() in ['expire', 'expires']:
|
||||||
|
if role != ROLE_MEMBER:
|
||||||
|
controlflow.invalid_argument_exit(
|
||||||
|
sys.argv[i], f'role {role}')
|
||||||
expireTime = sys.argv[i+1]
|
expireTime = sys.argv[i+1]
|
||||||
i += 2
|
i += 2
|
||||||
if sys.argv[i].lower() in usergroup_types:
|
if sys.argv[i].lower() in usergroup_types:
|
||||||
@ -500,8 +503,6 @@ def update():
|
|||||||
return
|
return
|
||||||
if myarg == 'add':
|
if myarg == 'add':
|
||||||
role, expireTime, users_email = _getRoleAndUsers()
|
role, expireTime, users_email = _getRoleAndUsers()
|
||||||
if not role:
|
|
||||||
role = ROLE_MEMBER
|
|
||||||
if len(users_email) > 1:
|
if len(users_email) > 1:
|
||||||
sys.stderr.write(
|
sys.stderr.write(
|
||||||
f'Group: {group}, Will add {len(users_email)} {role}s.\n')
|
f'Group: {group}, Will add {len(users_email)} {role}s.\n')
|
||||||
@ -631,8 +632,6 @@ def update():
|
|||||||
)
|
)
|
||||||
elif myarg == 'update':
|
elif myarg == 'update':
|
||||||
role, expireTime, users_email = _getRoleAndUsers()
|
role, expireTime, users_email = _getRoleAndUsers()
|
||||||
if not role:
|
|
||||||
role = ROLE_MEMBER
|
|
||||||
if len(users_email) > 1:
|
if len(users_email) > 1:
|
||||||
sys.stderr.write(
|
sys.stderr.write(
|
||||||
f'Group: {group}, Will update {len(users_email)} {role}s.\n'
|
f'Group: {group}, Will update {len(users_email)} {role}s.\n'
|
||||||
@ -649,34 +648,37 @@ def update():
|
|||||||
name = membership_email_to_id(ci, parent, users_email[0])
|
name = membership_email_to_id(ci, parent, users_email[0])
|
||||||
addRoles = []
|
addRoles = []
|
||||||
removeRoles = []
|
removeRoles = []
|
||||||
|
updateRoles = []
|
||||||
current_roles = gapi.call(ci.groups().memberships(),
|
current_roles = gapi.call(ci.groups().memberships(),
|
||||||
'get',
|
'get',
|
||||||
name=name,
|
name=name,
|
||||||
fields='roles').get('roles', [])
|
fields='roles').get('roles', [])
|
||||||
current_roles = [role['name'] for role in current_roles]
|
current_roles = [crole['name'] for crole in current_roles]
|
||||||
for crole in current_roles:
|
if expireTime:
|
||||||
if crole not in {ROLE_MEMBER, role}:
|
if ROLE_MEMBER in current_roles:
|
||||||
removeRoles.append(crole)
|
updateRoles.append(
|
||||||
if role not in current_roles:
|
{'fieldMask': 'expiryDetail.expireTime',
|
||||||
new_role = {'name': role}
|
'membershipRole': {'name': role,
|
||||||
if role == ROLE_MEMBER and expireTime:
|
'expiryDetail': {'expireTime': expireTime}}})
|
||||||
new_role['expiryDetail'] = {'expireTime': expireTime}
|
else:
|
||||||
expireTime = None
|
addRoles.append(
|
||||||
addRoles.append(new_role)
|
{'name': role, 'expiryDetail': {'expireTime': expireTime}})
|
||||||
|
else:
|
||||||
|
for crole in current_roles:
|
||||||
|
if crole not in {ROLE_MEMBER, role}:
|
||||||
|
removeRoles.append(crole)
|
||||||
|
if role not in current_roles:
|
||||||
|
new_role = {'name': role}
|
||||||
|
if role == ROLE_MEMBER and expireTime:
|
||||||
|
new_role['expiryDetail'] = {'expireTime': expireTime}
|
||||||
|
addRoles.append(new_role)
|
||||||
bodys = []
|
bodys = []
|
||||||
if addRoles:
|
if addRoles:
|
||||||
bodys.append({'addRoles': addRoles})
|
bodys.append({'addRoles': addRoles})
|
||||||
if removeRoles:
|
if removeRoles:
|
||||||
bodys.append({'removeRoles': removeRoles})
|
bodys.append({'removeRoles': removeRoles})
|
||||||
if expireTime:
|
if updateRoles:
|
||||||
bodys.append({
|
bodys.append({'updateRolesParams': updateRoles})
|
||||||
'name': ROLE_MEMBER,
|
|
||||||
# Note this doesn't actually work for some reason. Only known method to change
|
|
||||||
# expire time right now is to remove/re-add member.
|
|
||||||
'expiryDetail': {
|
|
||||||
'expireTime': expireTime
|
|
||||||
}
|
|
||||||
})
|
|
||||||
for body in bodys:
|
for body in bodys:
|
||||||
try:
|
try:
|
||||||
gapi.call(ci.groups().memberships(),
|
gapi.call(ci.groups().memberships(),
|
||||||
|
Reference in New Issue
Block a user