Exemplo n.º 1
0
def gbac_registration_completion():
    logger.debug("gbac_registration_completion()")

    user_data = {
        "profile": {
            "firstName": request.form.get('firstname'),
            "lastName": request.form.get('lastname'),
            "email": request.form.get('email'),
            "login": request.form.get('email'),
            "primaryPhone": request.form.get('phone'),
            "mobilePhone": request.form.get('phone')
        }
    }
    logger.debug(user_data)
    okta_admin = OktaAdmin(session[SESSION_INSTANCE_SETTINGS_KEY])
    user_create_response = okta_admin.create_user(user=user_data,
                                                  activate_user='******')
    logger.debug(user_create_response)
    emailRegistration(recipient={"address": request.form.get('email')},
                      token=user_create_response["id"])

    return render_template("/registration-completion.html",
                           templatename=get_app_vertical(),
                           config=session[SESSION_INSTANCE_SETTINGS_KEY],
                           _scheme="https")
Exemplo n.º 2
0
def gbac_user_create():
    logger.debug("gbac_user_create")

    okta_admin = OktaAdmin(session[SESSION_INSTANCE_SETTINGS_KEY])
    first_name = request.form.get('firstname')
    last_name = request.form.get('lastname')
    email = request.form.get('email')
    login = request.form.get('email')
    mobile_phone = request.form.get('phonenumber')

    user_data = {
        "profile": {
            "firstName": first_name,
            "lastName": last_name,
            "email": email,
            "login": login,
            "mobilePhone": mobile_phone
        }
    }

    user_create_response = okta_admin.create_user(user_data)

    if user_create_response:
        message = "User {0} {1} was Created".format(first_name, last_name)
    else:
        message = "Error During Create"

    return redirect(
        url_for("gbac_manageusers_bp.gbac_users",
                _external="True",
                _scheme=session[SESSION_INSTANCE_SETTINGS_KEY]["app_scheme"],
                message=message))
Exemplo n.º 3
0
def ecommerce_registration_completion():
    logger.debug("ecommerce_registration_completion()")
    okta_admin = OktaAdmin(session[SESSION_INSTANCE_SETTINGS_KEY])
    user_create_response = None
    user_data = {"profile": {}}
    logger.debug(user_data)
    logger.debug(request.form.get('guestUserId'))
    guestUserID = request.form.get('guestUserId')
    if guestUserID:
        user_data = okta_admin.get_user(request.form.get('guestUserId'))

    user_data["profile"]["email"] = request.form.get('email')
    user_data["profile"]["login"] = request.form.get('email')
    user_data["profile"]["firstName"] = "Guest"
    user_data["profile"]["lastName"] = "User"

    if "id" in user_data:
        user_create_response = okta_admin.update_user(user_id=user_data["id"],
                                                      user=user_data)
    else:
        user_create_response = okta_admin.create_user(user=user_data,
                                                      activate_user='******')

    logger.debug(user_create_response)

    if "id" not in user_create_response:
        error_message = "Failed to get a valid response from Okta Create User: user_data:{0} user_create_response:{1}".format(
            user_data, user_create_response)
        logger.error(error_message)

        return render_template("/error.html",
                               templatename=get_app_vertical(),
                               config=session[SESSION_INSTANCE_SETTINGS_KEY],
                               error_message=error_message)

    activation_link = ""
    if request.form.get('noemail').lower() == 'true':
        logger.debug("no email will be sent")
        activation_link = url_for(
            "gbac_registration_bp.gbac_registration_state_get",
            stateToken=user_create_response["id"],
            _external=True,
            _scheme=session[SESSION_INSTANCE_SETTINGS_KEY]["app_scheme"])
    else:
        logger.debug("email sent")
        ecommerce_email_registration(
            recipient={"address": request.form.get('email')},
            token=user_create_response["id"])

    return render_template(
        "ecommerce/registration-completion.html",
        email=request.form.get('email'),
        activationlink=activation_link,
        noemail=request.form.get('noemail').lower(),
        templatename=get_app_vertical(),
        config=session[SESSION_INSTANCE_SETTINGS_KEY],
        _scheme=session[SESSION_INSTANCE_SETTINGS_KEY]["app_scheme"])
Exemplo n.º 4
0
def gbac_user_create():
    logger.debug("gbac_user_create")

    okta_admin = OktaAdmin(session[SESSION_INSTANCE_SETTINGS_KEY])
    first_name = request.form.get('firstname')
    last_name = request.form.get('lastname')
    email = request.form.get('email')
    login = request.form.get('email')
    mobile_phone = request.form.get('phonenumber')
    parent_id = request.form.get('parent_id')
    linked_name = request.form.get('linked_name')
    user_data = {
        "profile": {
            "firstName": first_name,
            "lastName": last_name,
            "email": email,
            "login": login,
            "mobilePhone": mobile_phone
        }
    }

    group_id = request.form.get('group_id')
    user_create_response = okta_admin.create_user(user_data, True)
    if "errorCode" not in user_create_response:
        logging.debug(group_id)
        if group_id == "None":
            # do nothing
            msg = "User {0} {1} was Created".format(first_name, last_name)
        else:
            user_group_response = okta_admin.assign_user_to_group(
                group_id, user_create_response['id'])
            if "errorCode" not in user_group_response:
                msg = "User {0} {1} was Created".format(first_name, last_name)
            else:
                msg = "Error During Create - " + str(
                    user_group_response["errorCauses"][0]["errorSummary"])
    else:
        msg = "Error During Create - " + str(
            user_create_response["errorCauses"][0]["errorSummary"])

    if not parent_id == "None":
        logger.debug("ParentID Found")
        okta_admin.create_linked_users(user_create_response['id'], parent_id,
                                       linked_name)
        return redirect(
            url_for(
                "gbac_lo_bp.gbac_linkedobjects",
                _external="True",
                _scheme=session[SESSION_INSTANCE_SETTINGS_KEY]["app_scheme"],
                message=msg))

    return redirect(
        url_for("gbac_manageusers_bp.gbac_users",
                _external="True",
                _scheme=session[SESSION_INSTANCE_SETTINGS_KEY]["app_scheme"],
                message=msg))
Exemplo n.º 5
0
def gbac_registration_completion():
    logger.debug("gbac_registration_completion()")

    user_data = {
        "profile": {
            "firstName": request.form.get('firstname'),
            "lastName": request.form.get('lastname'),
            "email": request.form.get('email'),
            "login": request.form.get('email'),
            "primaryPhone": request.form.get('phone'),
            "mobilePhone": request.form.get('phone')
        }
    }
    logger.debug(user_data)
    okta_admin = OktaAdmin(session[SESSION_INSTANCE_SETTINGS_KEY])
    user_create_response = okta_admin.create_user(user=user_data, activate_user='******')
    logger.debug(user_create_response)

    if "id" not in user_create_response:
        error_message = "Failed to get a valid response from Okta Create User: user_data:{0} user_create_response:{1}".format(user_data, user_create_response)
        logger.error(error_message)

        return render_template(
            "/error.html",
            templatename=get_app_vertical(),
            config=session[SESSION_INSTANCE_SETTINGS_KEY],
            error_message=error_message)

    activation_link = ""
    if request.form.get('noemail').lower() == 'true':
        logger.debug("no email will be sent")
        activation_link = url_for(
            "gbac_registration_bp.gbac_registration_state_get",
            stateToken=user_create_response["id"],
            _external=True,
            _scheme=session[SESSION_INSTANCE_SETTINGS_KEY]["app_scheme"])
    else:
        logger.debug("email sent")
        emailRegistration(
            recipient={"address": request.form.get('email')},
            token=user_create_response["id"])

    return render_template(
        "/registration-completion.html",
        email=request.form.get('email'),
        activationlink=activation_link,
        noemail=request.form.get('noemail').lower(),
        templatename=get_app_vertical(),
        config=session[SESSION_INSTANCE_SETTINGS_KEY],
        _scheme=session[SESSION_INSTANCE_SETTINGS_KEY]["app_scheme"])
Exemplo n.º 6
0
def ecommerce_create_guest_account():
    logger.debug("ecommerce_create_guest_account()")
    okta_admin = OktaAdmin(session[SESSION_INSTANCE_SETTINGS_KEY])
    guest_user_id = str(uuid.uuid4())

    user_data = {
        "profile": {
            "email": "{id}@guestuseraccount.com".format(id=guest_user_id),
            "login": guest_user_id
        }
    }

    logger.debug(user_data)
    response = okta_admin.create_user(user=user_data)
    logger.debug(response)
    return response
Exemplo n.º 7
0
def ecommerce_create_guest_account():
    logger.debug("ecommerce_create_guest_account()")
    okta_admin = OktaAdmin(session[SESSION_INSTANCE_SETTINGS_KEY])
    guest_user_id = str(uuid.uuid4()).replace('-', '')

    user_data = {
        "profile": {
            "email": "{id}@guestuseraccount.com".format(id=guest_user_id),
            "login": "******".format(id=guest_user_id),
            "firstName": "Guest",
            "lastName": "User"
        }
    }

    response = okta_admin.create_user(user=user_data)
    return response
Exemplo n.º 8
0
def signupcreateuser():
    print("Signup Create User()")

    okta_admin = OktaAdmin(default_settings)
    first_name = request.form.get('firstname')
    last_name = request.form.get('lastname')
    email = request.form.get('email')
    login = request.form.get('login')
    mobile_phone = request.form.get('phonenumber')
    password = request.form.get('password')
    group_name =  request.form.get('groupname')

    if not login:
        login = email

    user_data = {
            "profile": {
                "firstName": first_name,
                "lastName": last_name,
                "email": email,
                "login": login,
                "mobilePhone": mobile_phone,
                "travelAgencyGroup": group_name
            },
             "credentials": {
                "password" : { "value": password }
              }
        }

    user_create_response = okta_admin.create_user(user_data)
    if "errorCode" in user_create_response:
        print(user_create_response)
        message = "<p>Error During Registration</p>" + user_create_response['errorCauses'][0]['errorSummary']
        return redirect(url_for("signup", _external="True", _scheme="https",message=message))
    else:
        print(user_create_response)
        print("User " + first_name + " "+  last_name + " was Created")
        return redirect(url_for("login", _external="True", _scheme="https"))

    return redirect(url_for("signup", _external="True", _scheme="https",message=message))
Exemplo n.º 9
0
def admincreateuser():
    print("Admin Create User()")

    okta_admin = OktaAdmin(default_settings)
    first_name = request.form.get('firstname')
    last_name = request.form.get('lastname')
    email = request.form.get('email')
    login = request.form.get('login')
    mobile_phone = request.form.get('phonenumber')

    if not login:
        login = email

    #  Group and find a Travel Agency
    token = oidc.get_access_token()
    group_name = TokenUtil.get_single_claim_from_token(token,"tagrp")


    user_data = {
                "profile": {
                    "firstName": first_name,
                    "lastName": last_name,
                    "email": email,
                    "login": login,
                    "mobilePhone": mobile_phone,
                    "travelAgencyGroup": group_name
                }
            }

    user_create_response = okta_admin.create_user(user_data)
    if user_create_response:
        message = "User " + first_name + " "+  last_name+ " was Created"
    else:
        message = "Error During Create"


    return redirect(url_for("users", _external="True", _scheme="https",message=message))
Exemplo n.º 10
0
def upload_route_summary():
    if request.method == 'POST':
        user_info = get_user_info()
        okta_admin = OktaAdmin(default_settings)


        # Group Name from Claims
        token = oidc.get_access_token()
        group_name = TokenUtil.get_single_claim_from_token(token,"tagrp")
        user_group = get_travel_agency_group_by_name(group_name)

        # Create variable for uploaded file
        f = request.files['fileupload']

        #store the file contents as a string
        fstring = f.read().decode('utf-8')

        #create list of dictionaries keyed by header row
        csv_dicts = [{k: v for k, v in row.items()} for row in csv.DictReader(fstring.splitlines(), skipinitialspace=True)]
        return_list = []
        return_users = []
        for user_record in csv_dicts:
            user_data = {
                "profile": {
                    "firstName": user_record['firstName'].replace("'", ""),
                    "lastName": user_record['lastName'].replace("'", ""),
                    "email": user_record['email'].replace("'", ""),
                    "login": user_record['email'].replace("'", ""),
                    "mobilePhone": user_record['mobilePhone'].replace("'", ""),
                    "travelAgencyGroup": group_name
                }
            }
            return_users.append(user_data)
            import_users = okta_admin.create_user(user_data,True)
            return_list.append(import_users)

    return render_template("upload.html", user_info=user_info, oidc=oidc,returnlist=return_list, userlist=return_users, config=default_settings, travel_agency_group=user_group)
Exemplo n.º 11
0
def register_basic():
    print("register_basic()")
    login_form_data = request.get_json()

    register_basic_response = {"success": False}

    okta_admin = OktaAdmin(session)
    group_name_lookup = "{0}_{1}_patient".format(session["udp_subdomain"],
                                                 session["demo_app_name"])
    print("group_name_lookup: {0}".format(group_name_lookup))

    patient_groups_response = okta_admin.get_groups_by_name(group_name_lookup)
    print("patient_groups_response: {0}".format(
        json.dumps(patient_groups_response, indent=4, sort_keys=True)))

    if "errorSummary" in patient_groups_response:
        register_basic_response["errorMessage"] = patient_groups_response[
            "errorSummary"]
        if "errorCauses" in patient_groups_response:
            register_basic_response["errorMessages"] = []
            for error_cause in patient_groups_response["errorCauses"]:
                register_basic_response["errorMessages"].append(
                    {"errorMessage": error_cause["errorSummary"]})
    else:
        patient_group = patient_groups_response[
            0]  # Default to first found group by name

        user = {
            "profile": {
                "firstName": "NOT_SET",
                "lastName": "NOT_SET",
                "email": login_form_data["username"],
                "login":
                session["login_id_prefix"] + login_form_data["username"]
            },
            "credentials": {
                "password": {
                    "value": login_form_data["password"]
                }
            },
            "groupIds": [patient_group["id"]]
        }
        print("user: {0}".format(json.dumps(user, indent=4, sort_keys=True)))
        created_user = okta_admin.create_user(user)
        print("created_user: {0}".format(
            json.dumps(created_user, indent=4, sort_keys=True)))

        if "errorSummary" in created_user:
            register_basic_response["errorMessage"] = created_user[
                "errorSummary"]
            if "errorCauses" in created_user:
                register_basic_response["errorMessages"] = []
                for error_cause in created_user["errorCauses"]:
                    register_basic_response["errorMessages"].append(
                        {"errorMessage": error_cause["errorSummary"]})

        else:
            #  Send activation email
            recipients = [{
                "address": {
                    "email": created_user["profile"]["email"]
                }
            }]
            substitution = {
                "activation_email": created_user["profile"]["email"],
                "activation_key": created_user["id"],
                "udp_subdomain": session["udp_subdomain"],
                "udp_app_name": session["demo_app_name"],
                "domain": session["remaining_domain"],
                "logo_url": session["app_logo"]
            }

            send_mail(session["spark_post_activate_template_id"], recipients,
                      session["spark_post_api_key"], substitution)

            register_basic_response["success"] = True
            register_basic_response["userId"] = created_user["id"]

    return json.dumps(register_basic_response)
Exemplo n.º 12
0
def load_users():
    print("load_users()")

    response = {"status": "success", "number_of_users_created": 0}

    with open("./test_users.csv", mode='r', encoding='utf-8-sig') as csv_file:
        csv_reader = csv.DictReader(csv_file)
        okta_admin = OktaAdmin(session)
        patient_group = okta_admin.get_groups_by_name("{0}_{1}_patient".format(
            session["udp_subdomain"], session["demo_app_name"]))[
                0]  # Default to first found group by name

        for row in csv_reader:
            print(row)
            exsisting_user = okta_admin.get_user(row["email"])
            if "id" not in exsisting_user:
                print("user: '******' not found. Creating.".format(row["email"]))
                new_user = {
                    "profile": {
                        "login": row["email"],
                        "email": row["email"],
                        "firstName": row["first_name"],
                        "lastName": row["last_name"]
                    },
                    "groupIds": [patient_group["id"]]
                }
                created_user = okta_admin.create_user(new_user,
                                                      activate_user=False)
                if "id" in created_user:
                    app_user = {
                        "profile": {
                            "dob": row["dob"],
                            "requires_validation": True
                        }
                    }
                    okta_admin.update_application_user_profile(
                        created_user["id"], app_user)

                    #  Send activation email
                    recipients = [{
                        "address": {
                            "email": created_user["profile"]["email"]
                        }
                    }]
                    substitution = {
                        "activation_email": created_user["profile"]["email"],
                        "activation_key": created_user["id"],
                        "udp_subdomain": session["udp_subdomain"],
                        "udp_app_name": session["demo_app_name"],
                        "domain": session["remaining_domain"],
                        "logo_url": session["app_logo"],
                        "first_name": created_user["profile"]["firstName"],
                        "last_name": created_user["profile"]["lastName"]
                    }

                    send_mail("invite-to-app", recipients,
                              session["spark_post_api_key"], substitution)

                    response["number_of_users_created"] += 1
                else:
                    print("Failed to created user: '******' reason: {1}".format(
                        row["email"],
                        json.dumps(created_user, indent=4, sort_keys=True)))

    return json.dumps(response)
Exemplo n.º 13
0
def dealer_registration_post():
    logger.debug("dealer_registration()")
    okta_admin = OktaAdmin(session[SESSION_INSTANCE_SETTINGS_KEY])

    setup_options = {
        "type_users": [],
        "dealerships": [],
        "type_user_selected": request.form.get('role'),
        "dealership_selected": request.form.get('location')
    }

    # Prepopulate
    user_data = {
        "profile": {
            "firstName": request.form.get('firstname'),
            "lastName": request.form.get('lastname'),
            "email": request.form.get('email'),
            "login": request.form.get('email'),
            "mobilePhone": request.form.get('phonenumber'),
            get_udp_ns_fieldname("access_requests"): ['{id}'.format(id=request.form.get('location'))]
        },
        "credentials": {
            "password": {"value": request.form.get('password')}
        },
        "groupIds": []
    }

    user_data["groupIds"].append(setup_options["type_user_selected"])
    user_create_response = okta_admin.create_user(user_data, activate_user=False)

    if "errorCode" in user_create_response:

        CONFIG_GROUP_REGULAR = get_udp_ns_fieldname(CONFIG_REGULAR)
        CONFIG_GROUP_ADMIN = get_udp_ns_fieldname(CONFIG_ADMIN)
        CONFIG_GROUP_LOCATION_STARTSWITH = get_udp_ns_fieldname(CONFIG_LOCATION)

        # Prepopulate choice for setup
        # Get Group
        group_get_response = okta_admin.get_groups_by_name(CONFIG_GROUP_ADMIN)
        for i in group_get_response:
            setup_options["type_users"].append({"id": i["id"], "description": i["profile"]["description"]})

        group_get_response = okta_admin.get_groups_by_name(CONFIG_GROUP_REGULAR)
        for i in group_get_response:
            setup_options["type_users"].append({"id": i["id"], "description": i["profile"]["description"]})

        group_get_response = okta_admin.get_groups_by_name(CONFIG_GROUP_LOCATION_STARTSWITH)
        for i in group_get_response:
            setup_options["dealerships"].append({"id": i["id"], "description": i["profile"]["description"]})

        return render_template(
            "{0}/registration.html".format(get_app_vertical()),
            templatename=get_app_vertical(),
            config=session[SESSION_INSTANCE_SETTINGS_KEY],
            error=user_create_response,
            user_data=user_data,
            setup_options=setup_options)

    # Send Activation Email to the user
    EmailServices().emailRegistration(
        recipient={"address": request.form.get('email')},
        token=user_create_response["id"])

    return render_template(
        "{0}/registration-completion.html".format(get_app_vertical()),
        templatename=get_app_vertical(),
        config=session[SESSION_INSTANCE_SETTINGS_KEY],
        email=request.form.get('email'),
        _scheme=session[SESSION_INSTANCE_SETTINGS_KEY]["app_scheme"])