in server/TenantManagementService/tenant-management.py [0:0]
def update_tenant(event, context):
table_tenant_details = __getTenantManagementTable(event)
requesting_tenant_id = event['requestContext']['authorizer']['tenantId']
user_role = event['requestContext']['authorizer']['userRole']
tenant_details = json.loads(event['body'])
tenant_id = event['pathParameters']['tenantid']
tracer.put_annotation(key="TenantId", value=tenant_id)
logger.log_with_tenant_context(event, "Request received to update tenant")
if ((auth_manager.isTenantAdmin(user_role) and tenant_id == requesting_tenant_id) or auth_manager.isSystemAdmin(user_role)):
exiting_tenant_details = table_tenant_details.get_item(
Key={
'tenantId': tenant_id,
}
)
if (exiting_tenant_details['Item']['tenantTier'].upper() != tenant_details['tenantTier'].upper()):
api_key = __getApiKey(tenant_details['tenantTier'])
else:
api_key = exiting_tenant_details['Item']['apiKey']
response_update = table_tenant_details.update_item(
Key={
'tenantId': tenant_id,
},
UpdateExpression="set tenantName = :tenantName, tenantAddress = :tenantAddress, tenantEmail = :tenantEmail, tenantPhone = :tenantPhone, tenantTier=:tenantTier, apiKey=:apiKey",
ExpressionAttributeValues={
':tenantName' : tenant_details['tenantName'],
':tenantAddress': tenant_details['tenantAddress'],
':tenantEmail': tenant_details['tenantEmail'],
':tenantPhone': tenant_details['tenantPhone'],
':tenantTier': tenant_details['tenantTier'],
':apiKey': api_key,
},
ReturnValues="UPDATED_NEW"
)
logger.log_with_tenant_context(event, response_update)
logger.log_with_tenant_context(event, "Request completed to update tenant")
return utils.create_success_response("Tenant Updated")
else:
logger.log_with_tenant_context(event, "Request completed as unauthorized. Only tenant admin or system admin can update tenant!")
return utils.create_unauthorized_response()