Beispiel #1
0
    def test_get_by_email_sanitized(self):
        user = dict(username="******",
                    email="*****@*****.**")
        password = "******"
        new_user = users.create(user, password)

        retrieved_user = users.get_user_by_email(
            "*****@*****.**")

        assert retrieved_user is not None
        assert new_user.user_id == retrieved_user.user_id
Beispiel #2
0
def login():
    if current_user.is_authenticated:
        return redirect(url_for("lobby.lobby"))
    form = LoginForm()
    if form.validate_on_submit():
        user = users.get_user_by_email(form.email.data)
        if user is None or not user.check_password(form.password.data):
            flash("We could not find a user with that name and password.")
            return redirect(url_for("auth.login"))
        login_user(user, remember=form.remember_me.data)
        current_app.logger.info(f"Logged in user {user}")
        return redirect(url_for("lobby.lobby"))
    return render_template("login.html", title="Sign In", form=form)
Beispiel #3
0
def request_password_reset():
    if current_user.is_authenticated:
        return redirect(url_for("lobby.lobby"))

    form = RequestPasswordResetForm()
    if form.validate_on_submit():
        user = users.get_user_by_email(form.email.data)
        if user is not None:
            send_password_reset_email(user)
        flash("We sent you an email to reset your password!")
        return redirect(url_for("auth.login"))

    return render_template(
        "request_password_reset.html", title="Reset My Password", form=form
    )
Beispiel #4
0
    def test_update_existing_user(self, test_user, mocker):
        new_offset = 999
        data = {
            "email": test_user.email,
            "eaten_offset": new_offset,
            "send_welcome_email": False,
        }
        admin.broadcast_session_update = mocker.stub()
        admin.send_email = mocker.stub()

        admin.create_or_update_user(data)

        admin.broadcast_session_update.assert_called_once()
        admin.send_email.assert_not_called()
        updated_user = users.get_user_by_email(test_user.email)
        assert updated_user.eaten_offset == new_offset
Beispiel #5
0
    def test_create_user(self, mocker):
        data = {
            "username": "******",
            "email": "*****@*****.**",
            "eaten_offset": 1,
            "send_welcome_email": False,
        }
        admin.broadcast_session_update = mocker.stub()
        admin.send_email = mocker.stub()

        admin.create_or_update_user(data)

        admin.broadcast_session_update.assert_called_once()
        admin.send_email.assert_not_called()
        new_user = users.get_user_by_email(data["email"])
        assert new_user.username == data["username"]
Beispiel #6
0
def create_or_update_user(data):
    temp_password = username_generator.get_uname(10, 64, False)
    temp_password += str(random.randint(1111, 9999))
    existing_user = users_module.get_user_by_email(data["email"])

    if not existing_user:
        user_data = {
            "username": data["username"],
            "email": data["email"],
            "eaten_offset": int(data.get("eaten_offset", 0)),
            "baked_offset": int(data.get("baked_offset", 0)),
        }
        try:
            new_user = users_module.create(user_data, temp_password)
        except SQLAlchemyError:
            raise DatabaseError
    else:
        new_user = existing_user
        if "eaten_offset" in data:
            new_user.eaten_offset = int(data["eaten_offset"])
        if "baked_offset" in data:
            new_user.baked_offset = int(data["baked_offset"])

    if data.get("future"):
        clubsessions.join_all_future_sessions(new_user)

    if data.get("send_welcome_email") is not False:
        new_user.set_password(temp_password)
        send_email(
            "Your Cakeclub Account",
            current_app.config["ADMIN_EMAIL"],
            recipients=[new_user.email],
            body=render_template("email/welcome.html",
                                 user=new_user,
                                 password=temp_password),
            plain=render_template("email/welcome.txt",
                                  user=new_user,
                                  password=temp_password),
        )

    db.session.commit()
    broadcast_session_update()
Beispiel #7
0
 def test_get_by_email(self, test_user):
     retrieved_user = users.get_user_by_email(test_user.email)
     assert retrieved_user.user_id == test_user.user_id