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")
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))
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"])
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))
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"])
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
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
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))
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))
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)
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)
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)
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"])