def get_users()

in server/TenantManagementService/user-management.py [0:0]


def get_users(event, context):
    tenant_id = event['requestContext']['authorizer']['tenantId']    
    user_pool_id = event['requestContext']['authorizer']['userPoolId']    
    user_role = event['requestContext']['authorizer']['userRole']  
    users = []  
    
    
    tracer.put_annotation(key="TenantId", value=tenant_id)
    
    logger.log_with_tenant_context(event, "Request received to get user")
    
    if (auth_manager.isTenantAdmin(user_role) or auth_manager.isSystemAdmin(user_role)):
        response = client.list_users(
            UserPoolId=user_pool_id
        )
        logger.log_with_tenant_context(event, response) 
        num_of_users = len(response['Users'])
        metrics_manager.record_metric(event, "Number of users", "Count", num_of_users)
        if (num_of_users > 0):
            for user in response['Users']:
                is_same_tenant_user = False
                user_info = UserInfo()
                for attr in user["Attributes"]:
                    if(attr["Name"] == "custom:tenantId" and attr["Value"] == tenant_id):
                        is_same_tenant_user = True
                        user_info.tenant_id = attr["Value"]

                    if(attr["Name"] == "custom:userRole"):
                        user_info.user_role = attr["Value"]

                    if(attr["Name"] == "email"):
                        user_info.email = attr["Value"] 
                if(is_same_tenant_user):
                    user_info.enabled = user["Enabled"]
                    user_info.created = user["UserCreateDate"]
                    user_info.modified = user["UserLastModifiedDate"]
                    user_info.status = user["UserStatus"] 
                    user_info.user_name = user["Username"]
                    users.append(user_info)                    
        
        return utils.generate_response(users)
    else:
        logger.log_with_tenant_context(event, "Request completed as unauthorized.")        
        return utils.create_unauthorized_response()