瀏覽代碼

refactor

https
jakobsn 6 年之前
父節點
當前提交
4d85f51209
共有 7 個檔案被更改,包括 80 行新增12 行删除
  1. +70
    -0
      src/app/models/user.py
  2. +0
    -2
      src/app/views/app.py
  3. +1
    -1
      src/app/views/apply.py
  4. +1
    -1
      src/app/views/forms.py
  5. +3
    -3
      src/app/views/login.py
  6. +3
    -3
      src/app/views/new_project.py
  7. +2
    -2
      src/app/views/register.py

+ 70
- 0
src/app/models/user.py 查看文件

@@ -0,0 +1,70 @@
from models.database import db

def get_users():
"""
Retreive all registrered users from the database
:return: users
"""
db.connect()
cursor = db.cursor()
query = ("SELECT userid, username from users")
cursor.execute(query)
users = cursor.fetchall()
cursor.close()
return users

def get_user_id_by_name(username):
"""
Get the id of the unique username
:param username: Name of the user
:return: The id of the user
"""
db.connect()
cursor = db.cursor()
query = ("SELECT userid from users WHERE username =\"" + username + "\"")
cursor.execute(query)
try:
userid = cursor.fetchall()[0][0]
except:
userid = None
cursor.close()
return userid

def get_user_name_by_id(userid):
"""
Get username from user id
:param userid: The id of the user
:return: The name of the user
"""
db.connect()
cursor = db.cursor()
query = ("SELECT username from users WHERE userid =\"" + userid + "\"")
cursor.execute(query)
try:
username = cursor.fetchall()[0][0]
except:
username = None
cursor.close()
return username

def match_user(username, password):
"""
Check if user credentials are correct, return if exists

:param username: The user attempting to authenticate
:param password: The corresponding password
:type username: str
:type password: str
:return: user
"""
db.connect()
cursor = db.cursor()
query = ("SELECT userid, username from users where username = \"" + username +
"\" and password = \"" + password + "\"")
cursor.execute(query)
try:
user = cursor.fetchall()[0]
except:
user = None
cursor.close()
return user

+ 0
- 2
src/app/views/app.py 查看文件

@@ -4,7 +4,6 @@ from views.utils import get_nav_bar
from views.login import Login from views.login import Login
from views.logout import Logout from views.logout import Logout
from views.register import Register from views.register import Register
from views.admin import Admin
from views.new_project import New_project from views.new_project import New_project
from views.open_projects import Open_projects from views.open_projects import Open_projects
from views.project import Project from views.project import Project
@@ -20,7 +19,6 @@ urls = (
'/new_project', 'New_project', '/new_project', 'New_project',
'/open_projects', 'Open_projects', '/open_projects', 'Open_projects',
'/project', 'Project', '/project', 'Project',
'/admin', 'Admin',
'/apply', 'Apply', '/apply', 'Apply',
) )


+ 1
- 1
src/app/views/apply.py 查看文件

@@ -1,6 +1,6 @@
import web import web
import models.project import models.project
from models.login import get_user_name_by_id
from models.user import get_user_name_by_id
from views.utils import get_nav_bar, get_element_count from views.utils import get_nav_bar, get_element_count
from views.forms import get_apply_form, get_apply_permissions_form from views.forms import get_apply_form, get_apply_permissions_form




+ 1
- 1
src/app/views/forms.py 查看文件

@@ -1,6 +1,6 @@
from web import form from web import form
from models.project import get_categories from models.project import get_categories
from models.login import get_users, get_user_id_by_name
from models.user import get_users, get_user_id_by_name




# Regex for input validation # Regex for input validation


+ 3
- 3
src/app/views/login.py 查看文件

@@ -1,6 +1,6 @@
import web import web
from views.forms import login_form from views.forms import login_form
import models.login
import models.user
from views.utils import get_nav_bar from views.utils import get_nav_bar
import os, hmac, base64, pickle import os, hmac, base64, pickle
import hashlib import hashlib
@@ -39,7 +39,7 @@ class Login():


# Validate login credential with database query # Validate login credential with database query
password_hash = hashlib.md5(b'TDT4237' + data.password.encode('utf-8')).hexdigest() password_hash = hashlib.md5(b'TDT4237' + data.password.encode('utf-8')).hexdigest()
user = models.login.match_user(data.username, password_hash)
user = models.user.match_user(data.username, password_hash)
# If there is a matching user/password in the database the user is logged in # If there is a matching user/password in the database the user is logged in
if user: if user:
@@ -81,7 +81,7 @@ class Login():


# If the users signed cookie matches the host signature then log in # If the users signed cookie matches the host signature then log in
if self.sign_username(username) == sign: if self.sign_username(username) == sign:
userid = models.login.get_user_id_by_name(username)
userid = models.user.get_user_id_by_name(username)
self.login(username, userid, False) self.login(username, userid, False)


def rememberme(self): def rememberme(self):


+ 3
- 3
src/app/views/new_project.py 查看文件

@@ -2,7 +2,7 @@ import web
from web import form from web import form
from views.forms import get_task_form_elements, get_project_form_elements, get_user_form_elements, project_buttons from views.forms import get_task_form_elements, get_project_form_elements, get_user_form_elements, project_buttons
import models.project import models.project
import models.login
import models.user
from views.utils import get_nav_bar, get_element_count from views.utils import get_nav_bar, get_element_count


# Get html templates # Get html templates
@@ -74,7 +74,7 @@ class New_project:


# Validate the input user names # Validate the input user names
for i in range(0, user_count): for i in range(0, user_count):
if len(data["user_name_"+str(i)]) and not models.login.get_user_id_by_name(data["user_name_"+str(i)]):
if len(data["user_name_"+str(i)]) and not models.user.get_user_id_by_name(data["user_name_"+str(i)]):
return render.new_project(nav, project_form, project_buttons, "Invalid user: " + data["user_name_"+str(i)]) return render.new_project(nav, project_form, project_buttons, "Invalid user: " + data["user_name_"+str(i)])


# Save the project to the database # Save the project to the database
@@ -89,7 +89,7 @@ class New_project:
# Save the users in the database given that the input field is not empty # Save the users in the database given that the input field is not empty
for i in range(0, user_count): for i in range(0, user_count):
if len(data["user_name_"+str(i)]): if len(data["user_name_"+str(i)]):
userid = models.login.get_user_id_by_name(data["user_name_"+str(i)])
userid = models.user.get_user_id_by_name(data["user_name_"+str(i)])
read, write, modify = "FALSE", "FALSE", "FALSE" read, write, modify = "FALSE", "FALSE", "FALSE"
try: try:
data["read_permission_"+str(i)] data["read_permission_"+str(i)]


+ 2
- 2
src/app/views/register.py 查看文件

@@ -1,7 +1,7 @@
import web import web
from views.forms import register_form from views.forms import register_form
import models.register import models.register
import models.login
import models.user
from views.utils import get_nav_bar from views.utils import get_nav_bar
import hashlib import hashlib
import re import re
@@ -37,7 +37,7 @@ class Register:
return render.register(nav, register, "All fields must be valid.") return render.register(nav, register, "All fields must be valid.")


# Check if user exists # Check if user exists
if models.login.get_user_id_by_name(data.username):
if models.user.get_user_id_by_name(data.username):
return render.register(nav, register, "Invalid user, already exists.") return render.register(nav, register, "Invalid user, already exists.")


models.register.set_user(data.username, models.register.set_user(data.username,


Loading…
取消
儲存