From e89e5f0fef57081af231661558abc3d7c84a4285 Mon Sep 17 00:00:00 2001 From: white <122345776@umail.ucc.ie> Date: Fri, 17 Jan 2025 16:58:23 +0000 Subject: [PATCH] Improved login funtion by creating temporary HTML pages and fixing bugs in login --- core/__pycache__/app.cpython-310.pyc | Bin 2381 -> 3956 bytes core/__pycache__/database.cpython-310.pyc | Bin 0 -> 976 bytes core/app.py | 12 +++---- core/database.py | 15 --------- database/__pycache__/database.cpython-310.pyc | Bin 0 -> 1236 bytes database/app.db | Bin 0 -> 28672 bytes database/database.py | 22 +++++++++++++ database/schema.sql | 7 ++-- .../2029240f6d1128be89ddc32729463129 | Bin 0 -> 9 bytes .../841e29f4900cf96cfb8ec55c0c598d2c | Bin 0 -> 37 bytes ui/templates/index.html | 17 +--------- ui/templates/login.html | 19 +++++++++++ ui/templates/signup.html | 31 ++++++++++++++++++ 13 files changed, 84 insertions(+), 39 deletions(-) create mode 100644 core/__pycache__/database.cpython-310.pyc delete mode 100644 core/database.py create mode 100644 database/__pycache__/database.cpython-310.pyc create mode 100644 database/database.py create mode 100644 flask_session/2029240f6d1128be89ddc32729463129 create mode 100644 flask_session/841e29f4900cf96cfb8ec55c0c598d2c create mode 100644 ui/templates/login.html create mode 100644 ui/templates/signup.html diff --git a/core/__pycache__/app.cpython-310.pyc b/core/__pycache__/app.cpython-310.pyc index 3936b638b66dac19195c5dee73d82de5056f266c..95e8a461bf95014d1d42e0ad764dbb22d10f253f 100644 GIT binary patch literal 3956 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 literal 0 HcmV?d00001 diff --git a/core/app.py b/core/app.py index ddce27b..87bdfe3 100644 --- a/core/app.py +++ b/core/app.py @@ -4,13 +4,13 @@ from werkzeug.security import generate_password_hash, check_password_hash from functools import wraps from core.forms import SignupForm, LoginForm -from core.database import Database +from database.database import Database app = Flask(__name__, template_folder="../ui/templates/") app.config["SECRET_KEY"] = "" app.config["SESSION_PERMANENT"] = False app.config["SESSION_TYPE"] = "filesystem" -app.teardown_appcontext(Database.close_connection) + Session(app) @app.before_request @@ -58,7 +58,7 @@ def signup(): # Store in database and hash to avoid exposing sensitive information db = Database() - cursor = db.create_connection("../database/app.db") + cursor = db.create_connection() # Check if user already exists to avoid duplicates dup_email = cursor.execute("""SELECT * FROM users @@ -73,9 +73,9 @@ def signup(): elif password != password2: form.password.errors.append("Passwords must match.") else: - db.execute("""INSERT INTO users (username, password, email, num_followers, isPartenered, bio) + cursor.execute("""INSERT INTO users (username, password, email, num_followers, isPartenered, bio) VALUES (?, ?, ?, ?, ?, ?);""", (username, generate_password_hash(password), email, 0, 0, "This user does not have a Bio.")) - db.commit() + db.commit_data() return redirect(url_for("login")) @@ -94,7 +94,7 @@ def login(): # Compare with database db = Database() - cursor = db.create_connection("../database/app.db") + cursor = db.create_connection() # Check if user exists so only users who have signed up can login user_exists = cursor.execute("""SELECT * FROM users diff --git a/core/database.py b/core/database.py deleted file mode 100644 index d3ded0e..0000000 --- a/core/database.py +++ /dev/null @@ -1,15 +0,0 @@ -import sqlite3 - -class Database: - def __init__(self, db:str) -> None: - self._db = db - self._conn = None - - def create_connection(self) -> sqlite3.Cursor: - conn = sqlite3.connect(self._db) - self._conn = conn - cursor = conn.cursor() - return cursor - - def close_connection(self) -> None: - self._conn.close() \ No newline at end of file diff --git a/database/__pycache__/database.cpython-310.pyc b/database/__pycache__/database.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dcfaff9f001f142ea9d560a117776d9c82815896 GIT binary patch literal 1236 zcmZWo&ubGw6rMM`+1(~-OtltN#3Dt=rI%hrL<*^Rkst;w4S`{^GqD?!-E?+BY)C|C zPx?X+K=G%02wa9S%{PF$MTh7=oS}YF-7rQvK zr)VUT&}Xg17h3R!NiLmJCY=-B;u4yy=KjV!)`-Y1kE=S*F{)S#B*POW=}7m~Z8;K@ z+beXrEJzR6p7dpK%33~VtjHop0?Dy@IS=+i6L!K(<(^h%q?1MjOZSlPX zgEMZeW36inbC`pKIiE7&Nrq*4W8#Iw;kNA5{G6v*?hZq9n7h3+PI5o&WOnJxSSR5? z<$)00xUYoB9U(jCkh_`cch8w##S8y@tiNb~$du072@oOToHJnisMRKOnc>GzfXx8dq+}5F z33~hN0C#8b6}8yB@WwD^x{5_=uD*vK1eFd3vB_6ne~HwPdd&+%9Ve#77cfEHhF4k~ z5%h|8utr97aHv8BHX!)M|4!Dgq1oy-^#&-?F#)rnh_q`+)a;@~zG$%!^;6Va3A1ju zQng!4MBm3GtDOo=9$a@p1(vc98>yyITOrkv=27cKAqJ@&S>2a~I2wih#f~PBdJRqP z)vW~d21Oo`c}#}>izP#NG@)~G+Gh_~5voq$S3Da>2~jys`!=w2*w(T#3SKVyc|~Mp L9-4p!aF_oBowFNl literal 0 HcmV?d00001 diff --git a/database/app.db b/database/app.db index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..37d5a5197e4e62ca427fb381b1ab91410f6cbe63 100644 GIT binary patch literal 28672 zcmeI(&r;Js90%}3u*E9k#p!{|9ypK@nWiNvIOAw2i&jI6A*hTqcDBvdM%x6s0X#Va z>I3;6`Ut*l_9Xa{w;*6&W!q}e~+{rt9_X4~$(u>FXWZa5sUh*Xq2imED)2~iYf zT5fr{ouw&x5T83s>e<0x_S4Gpt7o%wzm(j~Z_4fOb3bO^&fdED?bgq~)Ik;mAOHaf zKmY;|fB*y_a3*l7UC$Ti=hZJ-#M*t{4g3A@SY*3g&7qb{iEFLfRDP&W@(POuBGaMZ z!_-eEM~1NWsRqmw6vYgrbFvb8Y2ZY z;?Pa%&_<2!BwY|m69F4=jWio%gW6PfxMuCttPOfeI~O~5wZ;nC{amhS&8vzZc>JR{ z=*uge7CVf>?riIey7#ap`>%~rRCI~TF!ahOX7W@_*KJw@=47Xi$(SGn?yUFsv^0&HX@yzy6~ci zqeZfwEgB_lgnIOqvd@G#4u{@(@v>oRW24~%=J(GFm@DJ?F?TxSGVmn4qtD}uZ5cHl z@FDm93EuX@B=7}IyOt|HEdFV}C*yAE$u7Q@pNZd6X62^Nxr)3YK>z{}fB*y_009U< z00Izz00ba#1%VSyow<9m_h@FO9&r)vw?BB@@&nOha<$+=*(}Ml5E&xy2l{4-y|+uo zdS{`+Os}(AF}=0Qiec)kYIdr+vC3BUmC~Bou6k`lFYD!Mn|TJWnr(fpTxH!(yK1bK zx_qsB+>@(Y@55f;u_NEBJbo81Lo9c~f!p&%vhqf}kP8xo5$Q3xj>E{hA1)W&x4>`VKZ|n! literal 0 HcmV?d00001 diff --git a/database/database.py b/database/database.py new file mode 100644 index 0000000..034a6ff --- /dev/null +++ b/database/database.py @@ -0,0 +1,22 @@ +import sqlite3 +import os + +class Database: + def __init__(self) -> None: + self._db = os.path.join(os.path.abspath(os.path.dirname(__file__)), "app.db") + + def create_connection(self) -> sqlite3.Cursor: + conn = sqlite3.connect(self._db) + conn.row_factory = sqlite3.Row + self._conn = conn + cursor = conn.cursor() + return cursor + + def commit_data(self): + try: + self._conn.commit() + except Exception as e: + print(e) + + def close_connection(self) -> None: + self._conn.close() \ No newline at end of file diff --git a/database/schema.sql b/database/schema.sql index 96f9ae8..8f8d7cd 100644 --- a/database/schema.sql +++ b/database/schema.sql @@ -5,10 +5,13 @@ CREATE TABLE users password VARCHAR(256) NOT NULL, email VARCHAR(64) NOT NULL, num_followers INTEGER NOT NULL, - isPartenered BOOLEAN NOT NULL DEFAULT 0 - bio TEXT, + isPartenered BOOLEAN NOT NULL DEFAULT 0, + bio TEXT ); +SELECT * FROM users; + + DROP TABLE IF EXISTS streams; CREATE TABLE streams ( diff --git a/flask_session/2029240f6d1128be89ddc32729463129 b/flask_session/2029240f6d1128be89ddc32729463129 new file mode 100644 index 0000000000000000000000000000000000000000..8b04914a5e6ad4858df0019a6abe09326d3863de GIT binary patch literal 9 QcmZQzU|?uq^=8xq00XW800000 literal 0 HcmV?d00001 diff --git a/flask_session/841e29f4900cf96cfb8ec55c0c598d2c b/flask_session/841e29f4900cf96cfb8ec55c0c598d2c new file mode 100644 index 0000000000000000000000000000000000000000..bc2b5121ae26f6308bad9f9e1f7cffe466348f04 GIT binary patch literal 37 ocmXrX+MM3NI#rAT0&1u9aFiCO7Ud=8rcUW$DM>9ZnNq9=0L@(t2LJ#7 literal 0 HcmV?d00001 diff --git a/ui/templates/index.html b/ui/templates/index.html index 51e5d33..7548bc5 100644 --- a/ui/templates/index.html +++ b/ui/templates/index.html @@ -1,20 +1,5 @@ {% extends "base.html" %} {% block main_content %} -

Live Stream

- - +

Welcome

{% endblock %} diff --git a/ui/templates/login.html b/ui/templates/login.html new file mode 100644 index 0000000..b654c8d --- /dev/null +++ b/ui/templates/login.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} + +{% block main_content %} +
+ {{ form.hidden_tag() }} + {{ form.username.label }} + {{ form.username() }} + {% for error in form.username.errors %} + {{ error }} + {% endfor %} +
+ {{ form.password.label }} + {{ form.password() }} +
+ {{ form.submit() }} +
+ +{% endblock %} + diff --git a/ui/templates/signup.html b/ui/templates/signup.html new file mode 100644 index 0000000..f992e30 --- /dev/null +++ b/ui/templates/signup.html @@ -0,0 +1,31 @@ +{% extends "base.html" %} + +{% block main_content %} + +
+ {{ form.hidden_tag() }} + {{ form.email.label }} + {{ form.email() }} + {% for error in form.email.errors %} + {{ error }} + {% endfor %} +
+ {{ form.username.label }} + {{ form.username() }} + {% for error in form.username.errors %} + {{ error }} + {% endfor %} +
+ {{ form.password.label }} + {{ form.password() }} + {% for error in form.password.errors %} + {{ error }} + {% endfor %} +
+ {{ form.password2.label }} + {{ form.password2() }} +
+ {{ form.submit() }} +
+ +{% endblock %} \ No newline at end of file