changeset 4:cf786ee26a22

MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
author michalr
date Tue, 22 Feb 2011 20:38:51 +0000
parents 79fc37fe85a6
children 3ba60dfc1d64
files frontend/config.ini frontend/mfrontend/db.py frontend/mfrontend/templates/hello.html frontend/mfrontend/views/frontend.py
diffstat 4 files changed, 40 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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
--- /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 %}
+<h2>WITAJ NA NASZEJ STRONIE</h2>
+<p>Tutaj znajduje sie jakiś tekst.</p>
+{% endblock %} 
--- 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}<br />Passwd: {1}<br />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'))