diff --git a/src/app/models/login.py b/src/app/models/login.py
index 24efc17..868ff0f 100644
--- a/src/app/models/login.py
+++ b/src/app/models/login.py
@@ -27,7 +27,10 @@ def get_user_name_by_id(userid):
cursor = db.cursor()
query = ("SELECT username from users WHERE userid =\"" + userid + "\"")
cursor.execute(query)
- username = cursor.fetchall()[0][0]
+ try:
+ username = cursor.fetchall()[0][0]
+ except:
+ username = None
cursor.close()
return username
@@ -45,6 +48,6 @@ def match_user(username, password):
query = ("SELECT userid, username from users where username = \"" + username +
"\" and password = \"" + password + "\"")
cursor.execute(query)
- user = cursor.fetchall()
+ user = cursor.fetchall()[0]
cursor.close()
return user
diff --git a/src/app/templates/login.html b/src/app/templates/login.html
index d9c225c..c5a4240 100644
--- a/src/app/templates/login.html
+++ b/src/app/templates/login.html
@@ -1,4 +1,4 @@
-$def with (nav, login_form, friends)
+$def with (nav, login_form)
Beelance2
diff --git a/src/app/views/login.py b/src/app/views/login.py
index 6804aba..7b2423b 100644
--- a/src/app/views/login.py
+++ b/src/app/views/login.py
@@ -21,9 +21,48 @@ class Login():
:return: The login page showing other users if logged in
"""
session = web.ctx.session
+ nav = get_nav_bar(session)
+
+ # Log the user in if the rememberme cookie is set and valid
+ self.check_rememberme()
+
+ return render.login(nav, login_form)
+
+ def POST(self):
+ """
+ Log in to the web application and register the session
+ :return: The login page showing other users if logged in
+ """
+ session = web.ctx.session
+ nav = get_nav_bar(session)
+ data = web.input(username="", password="", remember=False)
+
+ # Validate login credential with database query
+ password_hash = hashlib.md5(b'TDT4237' + data.password.encode('utf-8')).hexdigest()
+ user = models.login.match_user(data.username, password_hash)
+
+ # If there is a matching user/password in the database the user is logged in
+ self.login(user[1], user[0], data.remember)
+
+ return render.login(nav, login_form)
+
+ def login(self, username, userid, remember):
+ """
+ Log in to the application
+ """
+ session = web.ctx.session
+ session.username = username
+ session.userid = userid
+ if remember:
+ rememberme = self.rememberme()
+ web.setcookie('remember', rememberme , 12000000)
+
+ def check_rememberme(self):
+ """
+ Validate the rememberme cookie and log in
+ """
username = ""
sign = ""
-
# If the user selected 'remember me' they log in automatically
try:
# Fetch the users cookies if it exists
@@ -41,40 +80,7 @@ class Login():
# If the users signed cookie matches the host signature then log in
if self.sign_username(username) == sign:
userid = models.login.get_user_id_by_name(username)
- session.username = username
- session.userid = userid
-
- # Show a list of registered users when login in
- if session.username:
- friends = models.login.get_users()
- else:
- friends = [[],[]]
- nav = get_nav_bar(session)
-
- return render.login(nav, login_form, friends)
-
- def POST(self):
- """
- Log in to the web application and register the session
- :return: The login page showing other users if logged in
- """
- session = web.ctx.session
- friends = [[],[]]
- # Validate login credential with database query
- data = web.input(username="", password="")
- password_hash = hashlib.md5(b'TDT4237' + data.password.encode('utf-8')).hexdigest()
- print("hash", password_hash)
- user = models.login.match_user(data.username, password_hash)
- # If there is a matching user/password in the database the user is logged in
- if len(user):
- friends = models.login.get_users()
- session.username = user[0][1]
- session.userid = user[0][0]
- if data.remember:
- remember = self.rememberme()
- web.setcookie('remember', remember , 12000000)
- nav = get_nav_bar(session)
- return render.login(nav, login_form, friends)
+ self.login(username, userid, False)
def rememberme(self):
"""