diff --git a/src/gam/gapi/contactdelegation.py b/src/gam/gapi/contactdelegation.py index 912c4e8c..20c92578 100644 --- a/src/gam/gapi/contactdelegation.py +++ b/src/gam/gapi/contactdelegation.py @@ -5,6 +5,7 @@ import os.path import sys import gam +from gam.gapi.directory import users as gapi_directory_users from gam import controlflow from gam import display from gam import gapi @@ -17,7 +18,11 @@ def build(): def create(users): condel = build() delegate = gam.normalizeEmailAddressOrUID(sys.argv[5], noUid=True) + delegate = gapi_directory_users.get_primary(delegate) body = {'email': delegate} + if not delegate: + controlflow.system_error_exit(5, + f'{sys.argv[5]} is not the primary address of a user.') i = 0 count = len(users) for user in users: @@ -25,7 +30,6 @@ def create(users): print( f'Granting {delegate} contact delegate access to {user}{gam.currentCount(i, count)}' ) - body gapi.call(condel.delegates(), 'create', soft_errors=True, diff --git a/src/gam/gapi/directory/users.py b/src/gam/gapi/directory/users.py index 56f320cb..120801d1 100644 --- a/src/gam/gapi/directory/users.py +++ b/src/gam/gapi/directory/users.py @@ -2,6 +2,19 @@ import gam from gam import gapi from gam.gapi import directory as gapi_directory + +def get_primary(email): + '''returns primary email of user or empty if email is not a user primary or + alias address.''' + cd = gapi_directory.build() + result = gapi.call(cd.users(), 'get', userKey=email, + projection='basic', fields='primaryEmail', + soft_errors=True) + if not result: + return '' + return result.get('primaryEmail', '').lower() + + def signout(users): cd = gapi_directory.build() i = 0