Ejemplo n.º 1
0
def update_user():
    user_uuid = request.form.get("uuid", None)
    name = str(request.form.get("name", None))
    user_hash = Encryption.encrypt_password(
        str(request.form.get("password", None)))
    email = str(request.form.get("email", None))
    birthdate = str(request.form.get("birthdate", None))

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if user_db.get_user(uuid=user_uuid)[0] is False:
        return return_json(success=False, error="User not found")

    if not data_validation.validate_email(email):
        return return_json(success=False, error="Invalid email")

    if not data_validation.validate_birthdate(birthdate)[0]:
        return return_json(
            success=False,
            error=data_validation.validate_birthdate(birthdate)[1])

    c_user = user_db.get_user(uuid=user_uuid)[1]

    c_user.name = name
    c_user.user_hash = user_hash
    if c_user.email != email:
        c_user.email = email
        c_user.is_verified = False
    c_user.birthdate = birthdate

    user_db.update_user(c_user)

    return return_json(
        success=True, data={"message": "User {0} updated".format(c_user.uuid)})
Ejemplo n.º 2
0
def check_key():
    c_fcm_key = request.form.get("fcm_key", None)
    user_uuid = request.form.get("uuid", None)

    if c_fcm_key is None:
        return return_json(success=False, error="No fcm_key set")

    if user_uuid is None:
        return return_json(success=False, error="No uuid set'")

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid uuid format")

    res = user_db.get_user(uuid=user_uuid)

    if not res[0]:
        return return_json(success=False, error="User not found")

    c_user = res[1]

    if c_user.install_id == c_fcm_key:
        return return_json(success=True)
    c_user.install_id = c_fcm_key
    user_db.update_user(c_user)

    return return_json(success=True)
Ejemplo n.º 3
0
def toggle_notifications():
    user_uuid = request.form.get("uuid", None)
    r_notifications_enabled = request.form.get("notifications_enabled", None)
    r_alarm_enabled = request.form.get("alarm_enabled", None)

    if r_alarm_enabled is not None:
        if r_alarm_enabled.lower() == "true":
            r_alarm_enabled = True
        elif r_alarm_enabled.lower() == "false":
            r_alarm_enabled = False
        else:
            return return_json(
                success=False,
                error="Invalid alarm_enabled bool: true | false")
    else:
        return return_json(success=False, error="alarm_enabled must be set")

    if r_notifications_enabled is not None:
        if r_notifications_enabled.lower() == "true":
            r_notifications_enabled = True
        elif r_notifications_enabled.lower() == "false":
            r_notifications_enabled = False
        else:
            return return_json(
                success=False,
                error="Invalid notifications enabled bool: true | false")
    else:
        return return_json(success=False,
                           error="notifications_enabled must be set")

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if user_db.get_user(uuid=user_uuid)[0] is False:
        return return_json(success=False, error="User not found")

    c_user = user_db.get_user(uuid=user_uuid)[1]

    c_user.notifications_enabled = r_notifications_enabled
    c_user.alarm_enabled = r_alarm_enabled

    user_db.update_user(c_user)
    return return_json(success=True,
                       data={
                           'notifications_enabled':
                           c_user.notifications_enabled,
                           'alarm_enabled': c_user.alarm_enabled
                       })
Ejemplo n.º 4
0
def user_edit(uuid):
    c_user = user_db.get_user(uuid=uuid)[1]
    if request.method == "GET":
        c_arduino = arduino_db.get_arduino_by_user_uuid(uuid)
        if c_arduino:
            c_user.arduino = c_arduino.arduino_uuid
        else:
            c_user.arduino = None
        return render_template('users/user_edit.html', user_list=[c_user])
    else:
        user_uuid = uuid
        name = str(request.form.get("name", None))
        email = str(request.form.get("email", None))
        birthdate = str(request.form.get("birthdate", None))

        if not data_validation.validate_uuid(user_uuid):
            return render_template('users/user_edit.html', user_list=[c_user], error="Invalid user UUID")

        if user_db.get_user(uuid=user_uuid)[0] is False:
            return render_template('users/user_edit.html', user_list=[c_user], error="User not found")

        if not data_validation.validate_email(email):
            return render_template('users/user_edit.html', user_list=[c_user], error="Invalid email")

        if not data_validation.validate_birthdate(birthdate)[0]:
            return render_template('users/user_edit.html', user_list=[c_user], error=data_validation.validate_birthdate(birthdate)[1])

        c_user = user_db.get_user(uuid=user_uuid)[1]

        c_user.name = name
        if c_user.email != email:
            c_user.email = email
            c_user.is_verified = False
            name = c_user.name

            token = generate_confirm_token(c_user.email)

            send_mail(c_user.name, c_user.email, token)

        c_user.birthdate = birthdate

        user_db.update_user(c_user)

        return return_message("User updated", f"{c_user.name} has been updated!", 2, url_for('admin_blueprint.get_users'))
Ejemplo n.º 5
0
def confirm_email(token):
    try:
        email = token_generator.confirm_token(token)
    except Exception as e:
        return return_json(success=False,
                           error="link has expired or is invalid, " + str(e))
    res = user_db.get_user(email=email)
    if res[0] is False:
        return return_json(success=False, error="User not found")

    c_user = res[1]
    if c_user.is_verified:
        return render_template('auth/confirmation_succes.html',
                               name=c_user.name)

    c_user.is_verified = True
    c_user.verified_on = datetime.now()
    user_db.update_user(c_user)
    return render_template('auth/confirmation_succes.html', name=c_user.name)
Ejemplo n.º 6
0
def check_for_notifications():
    print("Checking for notifications")
    res = user_db.get_all_users()

    if res[0]:
        users = res[1]
    else:
        return return_json(success=False, error="No users in database")

    for l_user in users:
        c_user = user.User()
        c_user.from_mongo(l_user)
        if not c_user.install_id or not c_user.notifications_enabled:
            continue

        c_schedule = schedule_db.get_user_schedule(c_user.uuid)
        upcoming_events = c_schedule.check_for_upcoming_events()
        schedule_db.update_one({'user_uuid': c_user.uuid},
                               {"$set": c_schedule.json()})

        res = hygiene_db.get_user_hygiene(c_user.uuid)
        c_hygiene = hygiene.Hygiene()
        c_hygiene.from_mongo(res)
        not_done_jobs = c_hygiene.check_hygiene()

        user_db.update_user(c_user)

        if upcoming_events:
            for c_event in upcoming_events:
                send_notification_to_user(
                    c_user.install_id, c_event.title,
                    "Details: {0}\n Location: {1}".format(
                        c_event.content, c_event.location))

        for job in not_done_jobs:
            title, message = maker.get_notification_message(
                "hygiene", job.name)
            send_notification_to_user(c_user.install_id, title, message)