예제 #1
0
def login():
    # check whether there already is a logged in user
    # if there is, go home, else continue
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))

    # make sure we grab the log in form
    form = LoginForm()

    # check that the form is valid when the submit button is hit
    if form.validate_on_submit():
        # if the email isn't in the database the user doesn't exist
        user = User.query.filter_by(email=form.email.data).first()

        # if the user exists, the hashed passwords need to match
        # if the user doesn't exist, tell them that their account was not found
        if user and bcrypt.check_password_hash(user.password,
                                               form.password.data):
            login_user(user, remember=form.remember.data)
            next_page = request.args.get('next')
            return redirect(url_for(next_page)) if next_page else redirect(
                url_for('main.home'))
        else:
            flash('Account not found', 'danger')
    return render_template("login.html", title="Log In", form=form)
예제 #2
0
def login():

    form = LoginForm()

    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()

        if user is None:
            redirect(url_for('users.login'))

        if user is not None and user.check_password(form.password.data):
            login_user(user)
            flash('Logged In Successfully!')

            next = request.args.get('next')

            if next == None or not next[0] == '/':
                next = url_for('users.account')

            session.pop('_flashes', None)
            return redirect(next) if next else redirect(url_for('users.account'))

        else:
            flash('Login Unsuccessful. Please check username and password.')
            return redirect(url_for('users.login'))

    return render_template('login.html', form=form, title='mJubeni | Login')
예제 #3
0
def login():
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user and bcrypt.check_password_hash(user.password, form.password.data):
            login_user(user, remember=form.remember.data)
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else redirect(url_for('main.home'))
        else:
            flash('Login Unsuccessful. Please check email and password', 'danger')
    return render_template('login.html', title='Login', form=form)
예제 #4
0
def login():
    if current_user.is_authenticated:  #if user is already logged in and they click the link to the login page, they are redirected to the homepage
        return redirect(url_for('main.home'))
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user and bcrypt.check_password_hash(user.password,
                                               form.password.data):
            #the user is logged in if their password in database matches the password they entered into the login form
            login_user(user, remember=form.remember.data)
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else (url_for('main.home'))
        else:
            flash('Login Unsuccessful. Please check email and password',
                  'danger')
    return render_template('login.html', title='Login', form=form)
예제 #5
0
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user and bcrypt.check_password_hash(user.password,
                                               form.password.data):
            login_user(user, remember=form.remember.data)
            #below lines accesses query param and allows a redirect to the page a user was previously trying to access.
            next_page = request.args.get('next')
            #ternery conditional
            return redirect(next_page) if next_page else redirect(
                url_for('main.home'))
        else:
            flash('Login Unsucessful. Please check email and password.',
                  'danger')
    return render_template('login.html', title='Login', form=form)
예제 #6
0
def login():
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user and bcrypt.check_password_hash(user.password,
                                               form.password.data):
            login_user(user, remember=form.remember.data)
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else redirect(
                url_for('main.home'))
            # this statement will direct the user to pervious opened page when not loggged
            # and direct him to the home page if he just logged in
        else:
            flash('Login unsuccessfully. Please check email and password',
                  'danger')
    return render_template('login.html', title='Login', form=form)
예제 #7
0
def login():
    if(current_user.is_authenticated):
        flash('already logged in')
        return redirect(url_for('main.home'))
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if(user and bcrypt.check_password_hash(user.password, form.password.data)):
            flash(f'{form.email.data} is logged in!', 'success')
            login_user(user, remember=form.remember.data)
            next_page = request.args.get('next')
            if next_page:
                return redirect(next_page)
            else:
                return redirect(url_for('main.home'))
        else:
            flash('Login failed. Please check email and/or password', 'danger')

    return render_template('login.html', title='Login', form=form)
예제 #8
0
def login():
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    form = LoginForm()
    if form.validate_on_submit(
    ):  # validate_on_submit(): This is a shortcut for form.is_submitted() and form.validate()
        user = User.query.filter_by(email=form.email.data).first()
        if user and bcrypt.check_password_hash(user.password,
                                               form.password.data):
            # login_user() Logs a user in. form.remember.data is  a True/False value if checked(True) or unchecked(False)
            # login_user(): This will return True if the log in attempt succeeds, and False if it fails
            login_user(user, remember=form.remember.data)
            # after loggging in, access the page you were viewing before you logged in.
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else redirect(
                url_for('main.home'))
        else:
            flash(f'Login Unsuccessful. Please check email and password!',
                  'danger')
    return render_template('login.html', title='Login', form=form)
예제 #9
0
def login():

    if current_user.is_authenticated:
        return redirect(url_for('main.home_page'))

    form = LoginForm()

    if form.validate_on_submit():

        user = User.query.filter_by(email=form.email.data).first()
        if user and bcrypt.check_password_hash(user.password, form.password.data):
            login_user(user, remember=form.remember.data)

            # jump to the attempted page(if any) before logged in
            # using get method otherwise it would raise a error when a query with dict key from a dict is not exist
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else redirect(url_for('main.home_page'))

        else:  # could remove this unrelated else branch

            flash('Login Unsuccessful, Please check email and password', 'danger')

    return render_template('login.html', title='Login', form=form)
예제 #10
0
def login():
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    form = LoginForm()
    if form.validate_on_submit():
        #Take first entry where email in form matches email in database if it exists
        user = User.query.filter_by(email=form.email.data).first()

        #Check if password and password hash matches
        if user and bcrypt.check_password_hash(user.password,
                                               form.password.data):

            #Log the user in. Read the docs for flask-login
            login_user(user, remember=form.remember.data)
            #Optional, adds the capability to return to the page you were trying to visit before a login prompt
            next_page = request.args.get('next')

            flash('Logged in successfully!', 'success')
            return redirect(next_page) if next_page else redirect(
                url_for('main.home'))
        else:
            flash('Login failed. Please check email and password.', 'danger')
    return render_template('login.html', form=form, title='Login')
예제 #11
0
def login():
    if current_user.is_authenticated:
        flash(f'无效操作:{current_user.username} 你已在登陆状态', 'danger')
        return redirect(url_for('main.home'))
    form = LoginForm()
    rest_password_form = RequestResetPasswordForm()  # modal from
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user and bcrypt.check_password_hash(user.password,
                                               form.password.data):
            login_user(user, remember=form.remember.data)
            flash(f'登陆成功', 'primary')
            # print(dict(request.args)) # 转dict显示
            next_page = request.args.get('next')
            return redirect(
                url_for('users.account')) if next_page else redirect(
                    url_for('main.home'))
        else:
            flash(f'登陆失败 : 邮箱或密码错误', 'danger')
    return render_template('login.html',
                           form=form,
                           title='登陆',
                           rest_form=rest_password_form)
예제 #12
0
def login():
    #incase the user is trying to login although he has been authentcated, then route him
    #to the home page
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    form = LoginForm()
    if form.validate_on_submit():
        #check if user exists with the email address:
        user = User.query.filter_by(email=form.email.data).first()
        password_hashed = user.password
        if user and bcrypt.check_password_hash(pw_hash=password_hashed,
                                               password=form.password.data):
            login_user(user=user, remember=form.remember.data)
            nextpage = request.args.get('next')
            flash(message=f"Login Successfull for {form.email.data}",
                  category='success')
            return redirect(nextpage) if nextpage else redirect(
                url_for('main.home'))
        else:
            flash(
                message="Login Unsuccessful. Please Check Email and Password",
                category='danger')
            return (redirect(url_for("main.home")))
    return render_template('login.html', title='Login', form=form)
예제 #13
0
def request_reset_password_modal():
    # request rest passwrod from with modal
    form = LoginForm()
    rest_password_form = RequestResetPasswordForm()
    # print(rest_password_form.email.data)
    user = User.query.filter_by(email=rest_password_form.email.data).first()
    if user is None:
        flash('不存在这个邮箱', 'danger')
    if rest_password_form.validate_on_submit():
        user = User.query.filter_by(
            email=rest_password_form.email.data).first()
        token = user.generate_rest_token()
        link = url_for('users.resetpassword_by_token',
                       token=token,
                       _external=True)  # full path
        send_reset_email(user.email, token, link)
        flash(f'已发送重置链接到{rest_password_form.email.data}', 'info')
        return redirect(url_for('users.login'))
    return redirect(url_for('users.login'))