mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-05 13:21:35 +00:00
asadmin flag to give admins special access to Team Drives
This commit is contained in:
46
src/gam.py
46
src/gam.py
@@ -3843,11 +3843,22 @@ def printPermission(permission):
|
|||||||
|
|
||||||
def showDriveFileACL(users):
|
def showDriveFileACL(users):
|
||||||
fileId = sys.argv[5]
|
fileId = sys.argv[5]
|
||||||
|
useDomainAdminAccess = False
|
||||||
|
i = 6
|
||||||
|
while i < len(sys.argv):
|
||||||
|
if sys.argv[i].lower().replace(u'_', u'') == u'asadmin':
|
||||||
|
useDomainAdminAccess = True
|
||||||
|
i += 1
|
||||||
|
else:
|
||||||
|
print u'ERROR: %s is not a valid argument to "gam <users> show drivefileacl".' % sys.argv[i]
|
||||||
|
sys.exit(3)
|
||||||
for user in users:
|
for user in users:
|
||||||
user, drive = buildDrive3GAPIObject(user)
|
user, drive = buildDrive3GAPIObject(user)
|
||||||
if not drive:
|
if not drive:
|
||||||
continue
|
continue
|
||||||
feed = callGAPIpages(drive.permissions(), u'list', u'permissions', fileId=fileId, fields=u'*', supportsTeamDrives=True)
|
feed = callGAPIpages(drive.permissions(), u'list', u'permissions',
|
||||||
|
fileId=fileId, fields=u'*', supportsTeamDrives=True,
|
||||||
|
useDomainAdminAccess=useDomainAdminAccess)
|
||||||
for permission in feed:
|
for permission in feed:
|
||||||
printPermission(permission)
|
printPermission(permission)
|
||||||
print u''
|
print u''
|
||||||
@@ -3870,12 +3881,23 @@ def getPermissionId(argstr):
|
|||||||
def delDriveFileACL(users):
|
def delDriveFileACL(users):
|
||||||
fileId = sys.argv[5]
|
fileId = sys.argv[5]
|
||||||
permissionId = getPermissionId(sys.argv[6])
|
permissionId = getPermissionId(sys.argv[6])
|
||||||
|
useDomainAdminAccess = False
|
||||||
|
i = 7
|
||||||
|
while i < len(sys.argv):
|
||||||
|
if sys.argv[i].lower().replace(u'_', u'') == u'asadmin':
|
||||||
|
useDomainAdminAccess = True
|
||||||
|
i += 1
|
||||||
|
else:
|
||||||
|
print u'ERROR: %s is not a valid argument to "gam <users> delete drivefileacl".' % sys.argv[i]
|
||||||
|
sys.exit(3)
|
||||||
for user in users:
|
for user in users:
|
||||||
user, drive = buildDrive3GAPIObject(user)
|
user, drive = buildDrive3GAPIObject(user)
|
||||||
if not drive:
|
if not drive:
|
||||||
continue
|
continue
|
||||||
print u'Removing permission for %s from %s' % (permissionId, fileId)
|
print u'Removing permission for %s from %s' % (permissionId, fileId)
|
||||||
callGAPI(drive.permissions(), u'delete', fileId=fileId, permissionId=permissionId, supportsTeamDrives=True)
|
callGAPI(drive.permissions(), u'delete', fileId=fileId,
|
||||||
|
permissionId=permissionId, supportsTeamDrives=True,
|
||||||
|
useDomainAdminAccess=useDomainAdminAccess)
|
||||||
|
|
||||||
def addDriveFileACL(users):
|
def addDriveFileACL(users):
|
||||||
fileId = sys.argv[5]
|
fileId = sys.argv[5]
|
||||||
@@ -3883,6 +3905,7 @@ def addDriveFileACL(users):
|
|||||||
sendNotificationEmail = False
|
sendNotificationEmail = False
|
||||||
emailMessage = None
|
emailMessage = None
|
||||||
transferOwnership = None
|
transferOwnership = None
|
||||||
|
useDomainAdminAccess = False
|
||||||
if body[u'type'] == u'anyone':
|
if body[u'type'] == u'anyone':
|
||||||
i = 7
|
i = 7
|
||||||
elif body[u'type'] in [u'user', u'group']:
|
elif body[u'type'] in [u'user', u'group']:
|
||||||
@@ -3922,6 +3945,9 @@ def addDriveFileACL(users):
|
|||||||
elif sys.argv[i].lower() == u'expires':
|
elif sys.argv[i].lower() == u'expires':
|
||||||
body[u'expirationTime'] = getTimeOrDeltaFromNow(sys.argv[i+1])
|
body[u'expirationTime'] = getTimeOrDeltaFromNow(sys.argv[i+1])
|
||||||
i += 2
|
i += 2
|
||||||
|
elif sys.argv[i].lower().replace(u'_', u'') == u'asadmin':
|
||||||
|
useDomainAdminAccess = True
|
||||||
|
i += 1
|
||||||
else:
|
else:
|
||||||
print u'ERROR: %s is not a valid argument for "gam <users> add drivefileacl"' % sys.argv[i]
|
print u'ERROR: %s is not a valid argument for "gam <users> add drivefileacl"' % sys.argv[i]
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
@@ -3932,7 +3958,8 @@ def addDriveFileACL(users):
|
|||||||
result = callGAPI(drive.permissions(), u'create', fields=u'*',
|
result = callGAPI(drive.permissions(), u'create', fields=u'*',
|
||||||
fileId=fileId, sendNotificationEmail=sendNotificationEmail,
|
fileId=fileId, sendNotificationEmail=sendNotificationEmail,
|
||||||
emailMessage=emailMessage, body=body, supportsTeamDrives=True,
|
emailMessage=emailMessage, body=body, supportsTeamDrives=True,
|
||||||
transferOwnership=transferOwnership)
|
transferOwnership=transferOwnership,
|
||||||
|
useDomainAdminAccess=useDomainAdminAccess)
|
||||||
printPermission(result)
|
printPermission(result)
|
||||||
|
|
||||||
def updateDriveFileACL(users):
|
def updateDriveFileACL(users):
|
||||||
@@ -3940,6 +3967,7 @@ def updateDriveFileACL(users):
|
|||||||
permissionId = getPermissionId(sys.argv[6])
|
permissionId = getPermissionId(sys.argv[6])
|
||||||
transferOwnership = None
|
transferOwnership = None
|
||||||
removeExpiration = None
|
removeExpiration = None
|
||||||
|
useDomainAdminAccess = False
|
||||||
body = {}
|
body = {}
|
||||||
i = 7
|
i = 7
|
||||||
while i < len(sys.argv):
|
while i < len(sys.argv):
|
||||||
@@ -3962,6 +3990,9 @@ def updateDriveFileACL(users):
|
|||||||
elif body[u'role'] == u'owner':
|
elif body[u'role'] == u'owner':
|
||||||
transferOwnership = True
|
transferOwnership = True
|
||||||
i += 2
|
i += 2
|
||||||
|
elif sys.argv[i].lower().replace(u'_', u'') == u'asadmin':
|
||||||
|
useDomainAdminAccess = True
|
||||||
|
i += 1
|
||||||
else:
|
else:
|
||||||
print u'ERROR: %s is not a valid argument for "gam <users> update drivefileacl"' % sys.argv[i]
|
print u'ERROR: %s is not a valid argument for "gam <users> update drivefileacl"' % sys.argv[i]
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
@@ -3973,7 +4004,7 @@ def updateDriveFileACL(users):
|
|||||||
result = callGAPI(drive.permissions(), u'update', fields=u'*',
|
result = callGAPI(drive.permissions(), u'update', fields=u'*',
|
||||||
fileId=fileId, permissionId=permissionId, removeExpiration=removeExpiration,
|
fileId=fileId, permissionId=permissionId, removeExpiration=removeExpiration,
|
||||||
transferOwnership=transferOwnership, body=body,
|
transferOwnership=transferOwnership, body=body,
|
||||||
supportsTeamDrives=True)
|
supportsTeamDrives=True, useDomainAdminAccess=useDomainAdminAccess)
|
||||||
printPermission(result)
|
printPermission(result)
|
||||||
|
|
||||||
def _stripMeInOwners(query):
|
def _stripMeInOwners(query):
|
||||||
@@ -7284,11 +7315,15 @@ def doUpdateTeamDrive(users):
|
|||||||
|
|
||||||
def printShowTeamDrives(users, csvFormat):
|
def printShowTeamDrives(users, csvFormat):
|
||||||
todrive = False
|
todrive = False
|
||||||
|
useDomainAdminAccess = False
|
||||||
i = 5
|
i = 5
|
||||||
while i < len(sys.argv):
|
while i < len(sys.argv):
|
||||||
if sys.argv[i].lower() == u'todrive':
|
if sys.argv[i].lower() == u'todrive':
|
||||||
todrive = True
|
todrive = True
|
||||||
i += 1
|
i += 1
|
||||||
|
elif sys.argv[i].lower().replace(u'_', u'') == u'asadmin':
|
||||||
|
useDomainAdminAccess = True
|
||||||
|
i += 1
|
||||||
else:
|
else:
|
||||||
print u'ERROR: %s is not a valid argument for "gam <users> print|show teamdrives"'
|
print u'ERROR: %s is not a valid argument for "gam <users> print|show teamdrives"'
|
||||||
sys.exit(3)
|
sys.exit(3)
|
||||||
@@ -7298,7 +7333,8 @@ def printShowTeamDrives(users, csvFormat):
|
|||||||
user, drive = buildDrive3GAPIObject(user)
|
user, drive = buildDrive3GAPIObject(user)
|
||||||
if not drive:
|
if not drive:
|
||||||
continue
|
continue
|
||||||
results = callGAPIpages(drive.teamdrives(), u'list', u'teamDrives', fields=u'*', soft_errors=True)
|
results = callGAPIpages(drive.teamdrives(), u'list', u'teamDrives',
|
||||||
|
useDomainAdminAccess=useDomainAdminAccess, fields=u'*', soft_errors=True)
|
||||||
if not results:
|
if not results:
|
||||||
continue
|
continue
|
||||||
for td in results:
|
for td in results:
|
||||||
|
|||||||
Reference in New Issue
Block a user