예제 #1
0
def get_resource_tree_data(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        optional_params=["pageNumber", "pageSize", "datasourceId"])
    if req_error:
        return req_error
    auth_token = req_session.get_auth_token()

    payload = req_session.get_body()
    accessible_by = payload.get("accessibleBy")
    exposure_type = payload.get("exposureType")
    resource_type = payload.get("resourceType")
    page_number = payload.get("pageNumber")
    page_size = payload.get("pageSize")
    owner_email_id = payload.get("ownerEmailId")
    parent_folder = payload.get("parentFolder")
    selected_date = payload.get("selectedDate")
    search_prefix = payload.get("prefix")
    sort_column_name = payload.get("sortColumn")
    sort_type = payload.get("sortType")
    datasource_id = payload.get("datasourceId")
    source_type = payload.get("sourceType")
    resource_list = resource_controller.get_resources(
        auth_token, page_number, page_size, accessible_by, exposure_type,
        resource_type, search_prefix, owner_email_id, parent_folder,
        selected_date, sort_column_name, sort_type, datasource_id, source_type)
    return req_session.generate_sqlalchemy_response(200, resource_list)
예제 #2
0
def get_alert(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error
    alerts = alert_controller.get_alerts(req_session.get_auth_token())
    return req_session.generate_sqlalchemy_response(200, alerts)
예제 #3
0
def get_user_stats(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True)
    if req_error:
        return req_error
    stats = directory_controller.get_user_stats(req_session.get_auth_token())
    return req_session.generate_sqlalchemy_response(200, stats)
예제 #4
0
def post_user_app(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error
    apps = directory_controller.insert_apps(req_session.get_auth_token(), req_session.get_body())
    return req_session.generate_sqlalchemy_response(201, apps)  
예제 #5
0
def get_all_activities(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    activities = get_activites_for_domain(req_session.get_body())
    return req_session.generate_sqlalchemy_response(200, activities)
예제 #6
0
def get_trusted_entities(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True, ["domainId"])
    if req_error:
        return req_error

    trusted_entities = domain_controller.get_all_trusted_entities(req_session.get_req_param("domainId"))
    return req_session.generate_sqlalchemy_response(200, trusted_entities)
예제 #7
0
def post_trusted_entities(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    trusted_entities = domain_controller.create_trusted_entities_for_a_domain(req_session.get_auth_token(), req_session.get_body())
    return req_session.generate_sqlalchemy_response(200, trusted_entities)
예제 #8
0
def get_audit_log(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True)
    if req_error:
        return req_error
    auth_token = req_session.get_auth_token()
    audit_log_list = auditlog_controller.get_audit_log(auth_token)
    return req_session.generate_sqlalchemy_response(200, audit_log_list)
예제 #9
0
def get_datasource(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    datasources = domain_controller.get_datasource(
        req_session.get_auth_token(), None)
    return req_session.generate_sqlalchemy_response(200, datasources)
예제 #10
0
def execute_gsuite_actions(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True)
    if req_error:
        return req_error
    response = gsuite_action_facade.execute_action(
        req_session.get_auth_token(), req_session.get_body())
    return req_session.generate_sqlalchemy_response(
        response.get_response_code(), response.get_response_body())
예제 #11
0
def get_policies(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    policies = policy_controller.get_policies(req_session.get_auth_token())

    return req_session.generate_sqlalchemy_response(200, policies)
예제 #12
0
def get_all_actions(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    auth_token = req_session.get_auth_token()

    actions = actions_controller.get_actions()
    return req_session.generate_sqlalchemy_response(200, actions)
예제 #13
0
def post_policy(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    policy = policy_controller.create_policy(req_session.get_auth_token(),
                                             req_session.get_body())

    return req_session.generate_sqlalchemy_response(201, policy)
예제 #14
0
def receive_slack_notifications(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(False,
                                                        mandatory_params=[],
                                                        optional_params=[])
    if req_error:
        return req_error

    response = notifications_receiver.receive_notifications(
        req_session.get_body())
    return req_session.generate_sqlalchemy_response(202, response or {})
예제 #15
0
def post_datasource(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    try:
        datasource = domain_controller.create_datasource(req_session.get_auth_token(), req_session.get_body())
    except Exception as ex:
        return req_session.generate_error_response(400, ex.message)
    return req_session.generate_sqlalchemy_response(200, datasource)
예제 #16
0
def update_policy(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True, ['policyId'])
    if req_error:
        return req_error

    policy = policy_controller.update_policy(
        req_session.get_auth_token(), req_session.get_req_param('policyId'),
        req_session.get_body())

    return req_session.generate_sqlalchemy_response(201, policy)
예제 #17
0
def get_widget_data(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True)
    if req_error:
        return req_error

    body = req_session.get_body()
    data = reports_controller.get_widget_data(req_session.get_auth_token(),
                                              body.get('widget_id'), None,
                                              None, body.get('event_filters'))
    return req_session.generate_sqlalchemy_response(200, data)
예제 #18
0
def get_activities_for_user(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        mandatory_params=["user_email"])
    if req_error:
        return req_error

    auth_token = req_session.get_auth_token()

    user_email = req_session.get_req_param('user_email')
    response = activities.get_activities_for_user(auth_token, user_email, None)
    return req_session.generate_sqlalchemy_response(200, response)
예제 #19
0
def run_scheduled_report(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True, ['reportId'])
    if req_error:
        return req_error

    auth_token = req_session.get_auth_token()

    response = reports_controller.run_report(
        auth_token, req_session.get_req_param('reportId'))
    return req_session.generate_sqlalchemy_response(200,
                                                    response['response_data'])
예제 #20
0
def get_group_members(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        True, optional_params=["groupEmail", "datasourceId"])
    if req_error:
        return req_error
    auth_token = req_session.get_auth_token()
    group_email = req_session.get_req_param('groupEmail')
    datasource_id = req_session.get_req_param('datasourceId')

    group_members = directory_controller.get_group_members(
        auth_token, group_email, datasource_id)
    return req_session.generate_sqlalchemy_response(200, group_members)
예제 #21
0
def get_resources(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        optional_params=["prefix", "pageNumber", "pageSize"])
    if req_error:
        return req_error
    auth_token = req_session.get_auth_token()
    page_number = req_session.get_req_param("pageNumber")
    page_size = req_session.get_req_param("pageSize")
    resource_list = resource_controller.get_resources(
        auth_token, page_number, page_size, None, "", "",
        req_session.get_req_param("prefix"))
    return req_session.generate_sqlalchemy_response(200, resource_list)
예제 #22
0
def export_to_csv(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    response = directory_controller.export_to_csv(req_session.get_auth_token(),
                                                  req_session.get_body())
    if response:
        return req_session.generate_sqlalchemy_response(
            response.response_code, response.get_response_body())
    else:
        return req_session.generate_response(202)
예제 #23
0
def initiate_action(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    auth_token = req_session.get_auth_token()

    action_payload = req_session.get_body()

    Logger().info("Initiating action using payload: " + str(action_payload))
    response = actions_controller.initiate_action(auth_token, action_payload)
    return req_session.generate_sqlalchemy_response(
        response.response_code, response.get_response_body())
예제 #24
0
def current_user(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    user_session = auth_controller.get_user_session(
        req_session.get_auth_token())

    if not user_session:
        return req_session.generate_error_response(401,
                                                   "User session not found")
    else:
        return req_session.generate_sqlalchemy_response(200, user_session)
예제 #25
0
def modify_scheduled_report(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    update_record = reports_controller.update_report(
        req_session.get_auth_token(), req_session.get_body())

    report_id = update_record['report_id']
    frequency = update_record['frequency']
    payload = {'report_id': report_id}
    function_name = aws_utils.get_lambda_name('get',
                                              urls.EXECUTE_SCHEDULED_REPORT)
    aws_utils.create_cloudwatch_event(report_id, frequency, function_name,
                                      payload)
    return req_session.generate_sqlalchemy_response(201, update_record)
예제 #26
0
def get_users_list(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(optional_params=[
        "full_name", "email", "member_type", "datasource_id", "sort_column",
        "sort_order", "is_admin", "type", "page_number"
    ])
    if req_error:
        return req_error
    users = directory_controller.get_users_list(
        req_session.get_auth_token(), req_session.get_req_param("full_name"),
        req_session.get_req_param("email"),
        req_session.get_req_param("member_type"),
        req_session.get_req_param("datasource_id"),
        req_session.get_req_param("sort_column"),
        req_session.get_req_param("sort_order"),
        req_session.get_req_param("is_admin"),
        req_session.get_req_param("type"),
        req_session.get_req_param("page_number"))
    return req_session.generate_sqlalchemy_response(200, users)
예제 #27
0
def post_scheduled_report(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    reports = reports_controller.create_report(req_session.get_auth_token(),
                                               req_session.get_body())
    for report in reports:
        cron_expression = report.frequency
        report_id = report.report_id
        payload = {'report_id': report_id}
        function_name = aws_utils.get_lambda_name(
            'get', urls.EXECUTE_SCHEDULED_REPORT)

        aws_utils.create_cloudwatch_event(report_id, cron_expression,
                                          function_name, payload)

    return req_session.generate_sqlalchemy_response(201, reports)
예제 #28
0
def get_user_app(event,context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True,optional_params=["filterType", "appId", "domainId", "userEmail", "datasourceId", "pageNumber","pageSize","sortColumn","sortOrder","appName"])
    if req_error:
        return req_error
    auth_token = req_session.get_auth_token()
    filter_type = req_session.get_req_param('filterType')
    data = {}
    if filter_type == 'USER_APPS':
        app_id = req_session.get_req_param('appId')
        domain_id = req_session.get_req_param('domainId')
        user_email = req_session.get_req_param('userEmail')
        datasource_id = req_session.get_req_param('datasourceId')
        sort_column_name = req_session.get_req_param("sortColumn")
        sort_order = req_session.get_req_param("sortOrder")
        if app_id:
            data = directory_controller.get_users_for_app(auth_token, domain_id, app_id, sort_column_name, sort_order)
        elif user_email:
            data = directory_controller.get_apps_for_user(auth_token, datasource_id, user_email)
        else:
            data = directory_controller.get_all_apps(auth_token)
    elif filter_type == 'INSTALLED_APPS':
        app_name = req_session.get_req_param("appName")
        page_number = req_session.get_req_param("pageNumber")
        page_size = req_session.get_req_param("pageSize")
        sort_column_name = req_session.get_req_param("sortColumn")
        sort_order = req_session.get_req_param("sortOrder")
        apps, total_count = app_controller.get_installed_apps(auth_token, page_number, page_size, app_name, sort_column_name, sort_order)
        data = {'apps':apps, 'last_page':total_count}
    elif filter_type == 'INVENTORY_APPS':  
        app_name = req_session.get_req_param("appName")
        page_num =  req_session.get_req_param("pageNumber")
        page_size =  req_session.get_req_param("pageSize")
        apps, total_count = app_controller.get_inventory_apps(auth_token, page_num, page_size, app_name)
        data = {'apps':apps, 'last_page':total_count}
    return req_session.generate_sqlalchemy_response(200, data)