def admin(): # Vraagt het eerder gemaakte 'NieuweGebruikerForm' form aan. form = NieuweGebruikerForm() # Zodra de post op de pagina langs de vallidators van WTForm zijn gegaan kan de rest plaatsvinden. if form.validate_on_submit(): # Nodig voor de request die we hierna gaan maken. admin = NieuweGebruikerForm(request.form) # Alle velden worden binnengehaald en aan een variabele gekoppelt. username = admin.gebruikersnaam.data password = admin.password.data voornaam = admin.voornaam.data achternaam = admin.achternaam.data rang = admin.rang.data # Een laatste check of de username wel beschikbaar is (Deze moet uniek zijn): cur.execute("SELECT username FROM User WHERE username =%s", (escape(username))) beschikbaar = cur.fetchall() if beschikbaar == (): # Het wachtwoord wordt met een random salt gehashed en beide worden in één variabele gestopt. versleutelde_password = hash.encrypt(escape(password)) # De gegevens worden naar de database verstuurd: cur.execute( "INSERT INTO User (username, forename, lastname, password, rank) VALUES (%s, %s, %s, %s, %s)", (escape(username), escape(voornaam), escape(achternaam), versleutelde_password, int(rang)), ) g.db_conn.commit() # Redirect naar dezelfde pagina voor een refresh, later misschien naar de net aangemaakte user? return redirect(url_for("admin")) return render_template("admin.html", NieuweGebruikerForm=form)
def gebruikerswachtwoordaanpassen(id): cur.execute( "SELECT idUser, forename, lastname, username, idWoning, rank FROM domotica_db.User WHERE idUser=%s", (int(id)) ) gebruiker = cur.fetchall() # Vraagt het eerder gemaakte 'wachtwoordaanpassen' form aan. form = wachtwoordaanpassen() cur.execute( "SELECT idUser, forename, lastname, username, idWoning, rank FROM domotica_db.User WHERE idUser=%s", (int(id)) ) gebruiker = cur.fetchall() # Zodra de post op de pagina langs de vallidators van WTForm zijn gegaan kan de rest plaatsvinden. if form.validate_on_submit(): # Nodig voor de request die we hierna gaan maken. forminfo = wachtwoordaanpassen(request.form) # Alle velden worden binnengehaald en aan een variabele gekoppelt. wachtwoord = forminfo.password.data # Het wachtwoord wordt met een random salt gehashed en beide worden in één variabele gestopt. versleutelde_password = hash.encrypt(escape(wachtwoord)) cur.execute("UPDATE User SET password=%s WHERE idUser=%s", (versleutelde_password, int(id))) g.db_conn.commit() return redirect(url_for("admin")) return render_template("gebruiker_wachtwoord_aanpassen.html", gebruiker=gebruiker, form=form)
def escape(self, string): """ Escapes a string for use in a query This is the equivilate and MySQLdb.escape() @author: Nick Verbeck @since: 9/7/2008 """ return pymysql.escape(string)
def login(): # Vraagt het eerder gemaakte 'NieuweGebruikerForm' form aan. form = LoginForm() # Zodra de post op de pagina langs de vallidators van WTForm zijn gegaan kan de rest plaatsvinden. if form.validate_on_submit(): # Nodig voor de request die we hierna gaan maken. inloggen = LoginForm(request.form) # Alle velden worden binnengehaald en aan een variabele gekoppelt. username = inloggen.gebruikersnaam.data password = inloggen.password.data # Haal username en wachtwoord op uit de database. cur.execute( "SELECT username, password, rank, forename, lastname, idUser, idWoning FROM User WHERE username =%s", (escape(username)), ) login_info = cur.fetchall() # Bestaat deze username wel? Anders een error...: if not login_info == (): # Wachtwoord vergelijken met hash: if hash.verify(password, login_info[0][1]): session["ingelogd"] = True session["login"] = login_info if int(login_info[0][2]) == 3: return redirect(url_for("admin")) elif int(login_info[0][2]) == 2: return redirect(url_for("meldkamer")) else: return redirect(url_for("bewoner")) else: form.password.errors.append("") else: form.gebruikersnaam.errors.append("") return render_template("login.html", LoginForm=form)