0

I am new to flask. I want to make an webapplication with an login counter. My route.py looks like this:

#Imports
import socket, time
from datetime import datetime, timedelta
from flask import Flask, render_template, request, make_response, flash, redirect, session
from CorendonPiFi import app

#Variables
now = datetime.now()
app = Flask(__name__)
LOGIN_ATTEMPTS = 5

app.config['SECRET_KEY'] = 'Adb10C94wKJBBWJD89waABdaw1AKD01dawe112a'
current_time = now.strftime("[%d/%m/%Y %H:%M:%S]")

#Lifetime of the session
app.permanent_session_lifetime = timedelta(minutes=0.5)

#Renders the login page
@app.route('/', methods = ['GET','POST'])
@app.route('/login', methods = ['GET','POST'])
def login():
    ipaddr = socket.gethostbyname(socket.gethostname())
    session.permanent = True
    session['attempt'] = LOGIN_ATTEMPTS
    session['no_acces'] = ""
    no_acces = session['no_acces']
    username = request.cookies.get('username')
    if username:
        return render_template('login.html', username=username)
    if request.method=='POST':
        username = request.form.get('username')
        password = request.form.get('password')
        #Check if the user is blocked
        if ipaddr == no_acces:
            flash("Je bent geblokkeerd probeer het later opnieuw.",  "danger")
        elif username=='admin' and password=='admin':
            #Login message in console
            print(f"{ipaddr} - - {current_time} {username} logged in -")
            resp = make_response(redirect('/welcome'))
            resp.set_cookie('username', username)
            return resp
        else:
            #login attempts
            attempt = session.get('attempt')
            attempt -= 1
            session['attempt'] = attempt
            if attempt < 1:
                flash("Je pogingen zijn op, probeer het over 10 minuten weer.",  "danger")
                session['no_acces'] = ipaddr
            else:
                flash(f"Gegevens komen niet overeen, je hebt nog {attempt} pogingen over.", "danger")
                #Failed login message in console
                print(f"{ipaddr} - - {current_time} {username} tried to log in -")
    return render_template('login.html')

But every time a user cant login the session (obviously) resets... Is there a way I can create and call a session variable outsite the login function?

Tjips
  • 13
  • 3

0 Answers0