# HG changeset patch # User michalr # Date 1298407131 0 # Node ID cf786ee26a2246c393a40187c724837ed93143bb # Parent 79fc37fe85a6f0241857c610f17aeb505d089f13 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały diff -r 79fc37fe85a6 -r cf786ee26a22 frontend/config.ini --- a/frontend/config.ini Tue Feb 22 19:25:10 2011 +0000 +++ b/frontend/config.ini Tue Feb 22 20:38:51 2011 +0000 @@ -1,6 +1,6 @@ [Basic] # W przypadku sqlite, ścieżka do pliku bazy -Database = ../baza.sqlite +Database = baza.sqlite # Wygenerować losowy dla każdej instalacji bazy Secret_Key = TakBardzoTajne # Dla poważnej instalacji ustawić na 0 diff -r 79fc37fe85a6 -r cf786ee26a22 frontend/mfrontend/db.py --- a/frontend/mfrontend/db.py Tue Feb 22 19:25:10 2011 +0000 +++ b/frontend/mfrontend/db.py Tue Feb 22 20:38:51 2011 +0000 @@ -4,6 +4,7 @@ import sqlite3 from flask import g import ConfigParser +from mfrontend import utils config = ConfigParser.SafeConfigParser() config.read('config.ini') @@ -24,3 +25,20 @@ rv = [dict((cur.description[idx][0], value) for idx, value in enumerate(row)) for row in cur.fetchall()] return (rv[0] if rv else None) if one else rv + +def user_can_login(username, password): + """Funkcja sprawdzająca, czy podany użytkownik może sie zalogować + po podaniu danego w argumencie hasła. + @param username Nazwa użytkownika + @param password Hasło + @return Prawda, jeśli podane dane są akceptowalne, w przeciwnym + razie fałsz. + """ + user = query_db('select * from users where username = ?', + [username], one=True) + if user is None: # Brak użytkownika o takiej nazwie + return False + if user['password'] == utils.hashPassword(password): + return True # Jeśli mamy takiego użytkownika, i hasło się zgadza + # Najwyraźniej jest taki użytkownik, ale hasło się nie zgadza + return False diff -r 79fc37fe85a6 -r cf786ee26a22 frontend/mfrontend/templates/hello.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mfrontend/templates/hello.html Tue Feb 22 20:38:51 2011 +0000 @@ -0,0 +1,5 @@ + {% extends "layout.html" %} +{% block body %} +

WITAJ NA NASZEJ STRONIE

+

Tutaj znajduje sie jakiś tekst.

+{% endblock %} diff -r 79fc37fe85a6 -r cf786ee26a22 frontend/mfrontend/views/frontend.py --- a/frontend/mfrontend/views/frontend.py Tue Feb 22 19:25:10 2011 +0000 +++ b/frontend/mfrontend/views/frontend.py Tue Feb 22 20:38:51 2011 +0000 @@ -1,21 +1,34 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -from flask import Module, render_template, request, url_for +from flask import Module, render_template, request, url_for, escape, session, redirect, flash from mfrontend import db, utils frontend = Module(__name__) @frontend.route('/') def index(): - lol = db.query_db('select id, username, password from users') - return lol[0]['username'] + return render_template('hello.html') @frontend.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': + if db.user_can_login(request.form['username'], + request.form['password']) : + session['logged_in'] = True + session['logged_user'] = request.form['username'] + flash('Zalogowano') + return redirect(url_for('index')) return "Uname: {0}
Passwd: {1}
Hashpwd: {2}".format( request.form['username'], request.form['password'], utils.hashPassword(request.form['password'])) return render_template('login.html') +@frontend.route('/logout') +def logout(): + """Funkcja powoduje wyczyszczenie sesji użytkownika, + a w efekcie wylogowanie z systemu. + """ + session.clear() + flash('Wylogowano') + return redirect(url_for('index'))