diff --git a/aula/Login/routes.py b/aula/Login/routes.py index 5b84eea..fcc448b 100644 --- a/aula/Login/routes.py +++ b/aula/Login/routes.py @@ -3,7 +3,7 @@ from flask_login import current_user, login_user, logout_user, login_required from aula import bcrypt from aula.forms import UserLoginForm -from aula.models import select_users_by_email, get_posts_for_user +from aula.models import select_users_by_cpr, get_posts_for_user Login = Blueprint('Login', __name__) @@ -31,7 +31,7 @@ def login(): form = UserLoginForm() # Først bekræft, at inputtet fra formen er gyldigt... (f.eks. ikke tomt) if form.validate_on_submit(): - user = select_users_by_email(form.email.data) + user = select_users_by_cpr(form.cpr_num.data) # Derefter tjek om hashet af adgangskoden passer med det fra databasen... if user != None and bcrypt.check_password_hash(user[3], form.password.data): login_user(user, remember=form.remember.data) diff --git a/aula/Threads/routes.py b/aula/Threads/routes.py index ce87591..ae25956 100644 --- a/aula/Threads/routes.py +++ b/aula/Threads/routes.py @@ -23,7 +23,7 @@ def show(thread_id): form = SendMessageForm() if form.validate_on_submit(): - insert_message(form.besked.data, thread_id, current_user.user_id) + insert_message(form.besked.data, thread_id, current_user.cpr_num) return redirect(f"/threads/{thread_id}") return render_template("thread_show.html", thread=thread, messages=thread.get_messages(), form=form) diff --git a/aula/forms.py b/aula/forms.py index dbccf69..ab85163 100644 --- a/aula/forms.py +++ b/aula/forms.py @@ -11,7 +11,7 @@ class AddUserForm(FlaskForm): submit = SubmitField('Add') class UserLoginForm(FlaskForm): - email = StringField('Email', validators=[DataRequired()]) + cpr_num = StringField('CPR Nummer', validators=[DataRequired()]) password = PasswordField('Password', validators=[DataRequired()]) remember = BooleanField('Remember Me') submit = SubmitField('Login') diff --git a/aula/models.py b/aula/models.py index 495083d..c7d3e16 100644 --- a/aula/models.py +++ b/aula/models.py @@ -5,15 +5,15 @@ from flask_login import UserMixin from aula import conn, login_manager @login_manager.user_loader -def load_user(user_id): +def load_user(cpr_num): cur = conn.cursor() user_sql = """ SELECT * FROM users - WHERE user_id = %s + WHERE cpr_num = %s """ - cur.execute(user_sql, (user_id,)) + cur.execute(user_sql, (cpr_num,)) user = User(cur.fetchone()) if cur.rowcount > 0 else None cur.close() return user @@ -31,9 +31,9 @@ class Group(tuple): def get_posts(self): cur = conn.cursor() sql_call = """ - SELECT post_id, title, content, created_date, g.group_id, g.name, g.mandatory, u.user_id, u.first_name, u.last_name, u.email, u.address, u.role FROM posts as p + SELECT post_id, title, content, created_date, g.group_id, g.name, g.mandatory, u.cpr_num, u.first_name, u.last_name, u.role FROM posts as p INNER JOIN groups g on g.group_id = p.group_id - INNER JOIN users u on u.user_id = p.author_id + INNER JOIN users u on u.cpr_num = p.author_cpr_num WHERE p.group_id = %s ORDER BY created_date DESC; """ @@ -67,7 +67,7 @@ class Message(tuple): self.thread_id = message_data[2] self._created_date = message_data[3] self.author = { - "user_id": message_data[4], + "cpr_num": message_data[4], "first_name": message_data[5], "last_name": message_data[6], "role": message_data[7], @@ -109,12 +109,10 @@ class Post(tuple): 'mandatory': post_data[6], } self.author = { - 'user_id': post_data[7], + 'cpr_num': post_data[7], 'first_name': post_data[8], 'last_name': post_data[9], - 'email': post_data[10], - 'address': post_data[11], - 'role': post_data[12], + 'role': post_data[10], } super().__init__() @@ -135,9 +133,10 @@ class Thread(tuple): def get_messages(self): cur = conn.cursor() sql_call = """ - SELECT message_id, content, thread_id, created_date ,u.user_id, u.first_name, u.last_name, u.role FROM messages - INNER JOIN users u on u.user_id = messages.author_id - WHERE messages.thread_id = %s; + SELECT message_id, content, thread_id, created_date ,u.cpr_num, u.first_name, u.last_name, u.role FROM messages + INNER JOIN users u on u.cpr_num = messages.author_cpr_num + WHERE messages.thread_id = %s + ORDER BY created_date DESC; """ cur.execute(sql_call, (self.thread_id,)) messages = cur.fetchall() @@ -150,24 +149,22 @@ class Thread(tuple): class User(tuple, UserMixin): def __init__(self, user_data): - self.user_id = user_data[0] + self.cpr_num = user_data[0] self.first_name = user_data[1] self.last_name = user_data[2] self.password = user_data[3] - self.email = user_data[4] - self.address = user_data[5] - self.role = user_data[6] + self.role = user_data[4] super().__init__() def get_id(self): - return self.user_id + return self.cpr_num def get_groups(self): cur = conn.cursor() sql_call = """ - SELECT groups.* FROM users_groups JOIN groups ON users_groups.group_id = groups.group_id WHERE users_groups.user_id = %s + SELECT groups.* FROM users_groups JOIN groups ON users_groups.group_id = groups.group_id WHERE users_groups.cpr_num = %s """ - cur.execute(sql_call, (self.user_id,)) + cur.execute(sql_call, (self.cpr_num,)) groups = cur.fetchall() result = [] for group_data in groups: @@ -178,21 +175,21 @@ class User(tuple, UserMixin): def is_member_of_group(self, group_id): cur = conn.cursor() sql_call = """ - SELECT * FROM users_groups WHERE user_id = %s AND group_id = %s + SELECT * FROM users_groups WHERE cpr_num = %s AND group_id = %s """ - cur.execute(sql_call, (self.user_id, group_id)) + cur.execute(sql_call, (self.cpr_num, group_id)) return cur.rowcount > 0 def get_groups_joinable(self): cur = conn.cursor() sql_call = """ - SELECT groups.* FROM groups INNER JOIN users_groups ON groups.group_id = users_groups.group_id WHERE users_groups.user_id = %s + SELECT groups.* FROM groups INNER JOIN users_groups ON groups.group_id = users_groups.group_id WHERE users_groups.cpr_num = %s UNION SELECT groups.* FROM groups WHERE groups.mandatory = FALSE ORDER BY mandatory ASC, name DESC """ - cur.execute(sql_call, (self.user_id,)) + cur.execute(sql_call, (self.cpr_num,)) groups = cur.fetchall() result = [] for group_data in groups: @@ -204,9 +201,9 @@ class User(tuple, UserMixin): # TODO: Tjek om brugeren må forlade gruppen cur = conn.cursor() sql_call = """ - DELETE FROM users_groups WHERE user_id = %s AND group_id = %s + DELETE FROM users_groups WHERE cpr_num = %s AND group_id = %s """ - cur.execute(sql_call, (self.user_id, group_id)) + cur.execute(sql_call, (self.cpr_num, group_id)) conn.commit() cur.close() @@ -215,7 +212,7 @@ class User(tuple, UserMixin): sql_call = """ INSERT INTO users_groups VALUES (%s, %s) """ - cur.execute(sql_call, (self.user_id, group_id)) + cur.execute(sql_call, (self.cpr_num, group_id)) conn.commit() cur.close() @@ -232,11 +229,11 @@ class User(tuple, UserMixin): WHERE g.group_id IN ( SELECT group_id FROM users_groups - WHERE user_id = %s + WHERE cpr_num = %s ) ORDER BY last_message_date DESC NULLS LAST; """ - cur.execute(sql_call, (self.user_id,)) + cur.execute(sql_call, (self.cpr_num,)) threads = cur.fetchall() result = [] for thread_data in threads: @@ -248,58 +245,47 @@ class User(tuple, UserMixin): cur = conn.cursor() sql_call = """ SELECT * FROM users_threads WHERE - user_id = %s AND + cpr_num = %s AND thread_id = %s """ - cur.execute(sql_call, (self.user_id, thread_id)) + cur.execute(sql_call, (self.cpr_num, thread_id)) return cur.rowcount > 0 -def insert_users(user_id, first_name, last_name, password, email, adresse, role): +def insert_users(cpr_num, first_name, last_name, password, email, adresse, role): cur = conn.cursor() sql_call = """ - INSERT INTO users(user_id, first_name, last_name, password, email, adresse, role) + INSERT INTO users(cpr_num, first_name, last_name, password, email, adresse, role) VALUES (%s, %s, %s, %s, %s, %s, %s) """ - cur.execute(sql_call, (user_id, first_name, last_name, password, email, adresse, role)) + cur.execute(sql_call, (cpr_num, first_name, last_name, password, email, adresse, role)) # Husk commit() for INSERT og UPDATE, men ikke til SELECT! conn.commit() cur.close() -def select_users_by_id(user_id): +def select_users_by_cpr(cpr_num): cur = conn.cursor() sql_call = """ SELECT * FROM users - WHERE user_id = %s + WHERE cpr_num = %s """ - cur.execute(sql_call, (user_id,)) + cur.execute(sql_call, (cpr_num,)) user = User(cur.fetchone()) if cur.rowcount > 0 else None cur.close() return user -def select_users_by_email(email): +def get_posts_for_user(cpr_num): cur = conn.cursor() sql_call = """ - SELECT * FROM users - WHERE email = %s - """ - cur.execute(sql_call, (email,)) - user = User(cur.fetchone()) if cur.rowcount > 0 else None - cur.close() - return user - -def get_posts_for_user(user_id): - cur = conn.cursor() - sql_call = """ - SELECT post_id, title, content, created_date, g.group_id, g.name, g.mandatory, u.user_id, u.first_name, u.last_name, u.email, u.address, u.role FROM posts as p + SELECT post_id, title, content, created_date, g.group_id, g.name, g.mandatory, u.cpr_num, u.first_name, u.last_name, u.role FROM posts as p INNER JOIN groups g on g.group_id = p.group_id - INNER JOIN users u on u.user_id = p.author_id + INNER JOIN users u on u.cpr_num = p.author_cpr_num WHERE g.group_id in ( SELECT g.group_id FROM users_groups - WHERE user_id = %s + WHERE cpr_num = %s ) ORDER BY created_date DESC """ - cur.execute(sql_call, (user_id,)) + cur.execute(sql_call, (cpr_num,)) user = [Post(i) for i in cur.fetchmany(50)] if cur.rowcount > 0 else [] cur.close() return user @@ -357,22 +343,22 @@ def insert_group(name, mandatory): cur.close() return result -def insert_post(group_id, author_id, title, content): +def insert_post(group_id, author_cpr_num, title, content): cur = conn.cursor() sql = """ - INSERT INTO posts(group_id, author_id, title, content) VALUES (%s, %s, %s, %s) + INSERT INTO posts(group_id, author_cpr_num, title, content) VALUES (%s, %s, %s, %s) """ - cur.execute(sql, (group_id, author_id, title, content)) + cur.execute(sql, (group_id, author_cpr_num, title, content)) conn.commit() cur.close() -def insert_message(content, thread_id, author_id): +def insert_message(content, thread_id, author_cpr_num): cur = conn.cursor() sql_call = """ - INSERT INTO messages(content, thread_id, author_id, created_date) + INSERT INTO messages(content, thread_id, author_cpr_num, created_date) VALUES (%s, %s, %s, NOW()) """ - cur.execute(sql_call, (content, thread_id, author_id)) + cur.execute(sql_call, (content, thread_id, author_cpr_num)) # Husk commit() for INSERT og UPDATE, men ikke til SELECT! conn.commit() cur.close() diff --git a/aula/templates/account.html b/aula/templates/account.html index b5ecf6a..8be0751 100644 --- a/aula/templates/account.html +++ b/aula/templates/account.html @@ -10,8 +10,8 @@
Skriv opslag