diff --git a/mysql/sql/init.sql b/mysql/sql/init.sql index a25a17b..b5e7fbc 100755 --- a/mysql/sql/init.sql +++ b/mysql/sql/init.sql @@ -13,6 +13,8 @@ CREATE TABLE users ( country VARCHAR(50), login_attempts INT UNSIGNED, last_login_attempt INT UNSIGNED, + verified BOOLEAN, + token VARCHAR(50), PRIMARY KEY (userid) ); diff --git a/src/app/models/register.py b/src/app/models/register.py index 2be8e1f..a01adfe 100755 --- a/src/app/models/register.py +++ b/src/app/models/register.py @@ -6,7 +6,7 @@ logger = logging.getLogger(__name__) def set_user(username, password, full_name, company, email, - street_address, city, state, postal_code, country): + street_address, city, state, postal_code, country, token): """ Register a new user in the database :param username: The users unique user name @@ -19,6 +19,7 @@ def set_user(username, password, full_name, company, email, :param state: The state where the user lives :param postal_code: The corresponding postal code :param country: The users country + :param token: The account verification token :type username: str :type password: str :type full_name: str @@ -29,13 +30,19 @@ def set_user(username, password, full_name, company, email, :type state: str :type postal_code: str :type country: str + :type token: str """ db.connect() cursor = db.cursor() - query = ("INSERT INTO users VALUES (NULL, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, 0, 0)") + query = (""" + INSERT INTO users (userid, username, password, full_name, company, + email, street_address, city, state, postal_code, + country, login_attempts, last_login_attempt, verified, token) + VALUES (NULL, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, 0, 0, 0, %s) + """) try: - cursor.execute(query, (username, password, full_name, company, email, street_address, - city, state, postal_code, country)) + cursor.execute(query, (username, password, full_name, company, email, + street_address, city, state, postal_code, country, token)) db.commit() except mysql.connector.Error as err: logger.error("Failed executing query: %s", err) diff --git a/src/app/models/user.py b/src/app/models/user.py index 24dd567..9b379c5 100755 --- a/src/app/models/user.py +++ b/src/app/models/user.py @@ -122,3 +122,83 @@ def get_user_name_by_id(userid): cursor.close() db.close() return username + + +def set_token(userid, token): + """Set the given token for the given user.""" + db.connect() + cursor = db.cursor() + query = ("UPDATE users SET token=%s WHERE userid=%s") + try: + cursor.execute(query, (token, userid)) + db.commit() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + cursor.fetchall() + exit(1) + finally: + cursor.close() + db.close() + + +def get_userid_from_token(token): + """Get the user with the given verify token.""" + db.connect() + cursor = db.cursor() + query = ("SELECT userid FROM users WHERE token=%s") + try: + cursor.execute(query, (token,)) + tokens = cursor.fetchall() + if tokens: + return tokens[0][0] + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + cursor.fetchall() + exit(1) + finally: + cursor.close() + db.close() + + return None + + +def verify_user(userid): + """ + Mark the user as verified. + """ + db.connect() + cursor = db.cursor() + query = ("UPDATE users SET verified=1 WHERE userid=%s AND verified=0") + try: + cursor.execute(query, (userid,)) + db.commit() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + cursor.fetchall() + exit(1) + finally: + cursor.close() + db.close() + + +def is_verified(userid): + """ + Check whether the user has verified + """ + db.connect() + cursor = db.cursor() + query = ("SELECT userid FROM users WHERE verified=1 AND userid=%s") + try: + cursor.execute(query, (userid,)) + users = cursor.fetchall() + if users: + return True + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + cursor.fetchall() + exit(1) + finally: + cursor.close() + db.close() + + return False diff --git a/src/app/templates/verify.html b/src/app/templates/verify.html new file mode 100644 index 0000000..6234b27 --- /dev/null +++ b/src/app/templates/verify.html @@ -0,0 +1,19 @@ +$def with (nav, message) + +
+