Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
newr1/location_app/app/functions/auth/create_profile.py
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
110 lines (103 sloc)
3.35 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sqlite3 as sql | |
from app.functions.auth import base | |
import re | |
database_user = "app/databases/users.db" | |
def create_profile(data): | |
""" | |
Takes in data for account creation and checks if | |
the account can be made and then calls a function | |
to create the account | |
Returns 'success' or an error message on failure | |
""" | |
base.create() | |
_status = check_prof_data(data) | |
if _status == "success": | |
make_user(data) | |
return _status | |
def check_prof_data(data): | |
""" | |
Checks if the id exists if it's in use, if the | |
passwords match and if the date is valid | |
and returns 'success' or an error message | |
""" | |
_status = check_empty(data) | |
if _status == "ok": | |
if base.tid_exists(data['username']): | |
if not base.user_exists(data['username']): | |
if not (data['password'] == data['r_password']): | |
return "pass_no_match" | |
pass_status = is_pass_valid(data['password']) | |
if pass_status != "ok": | |
return pass_status | |
elif not base.check_date(data['day'], | |
data['month'], | |
data['year']): | |
return "wrong_date" | |
else: | |
return "success" | |
else: | |
return "user_exists" | |
else: | |
return "no_id" | |
return _status | |
def check_empty(data): | |
""" | |
Checks if all the fields in the dictionary are filled, | |
if not tells which one is missing | |
""" | |
if data['username'] == "": | |
return "empty_id" | |
elif data['realname'] == "": | |
return "empty_name" | |
elif data['day'] == "0": | |
return "empty_bday" | |
elif data['month'] == "0": | |
return "empty_bday" | |
elif data['year'] == "0": | |
return "empty_bday" | |
elif data['weight'] == "": | |
return "empty_weight" | |
elif data['password'] == "": | |
return "empty_pass" | |
elif data['password'] == "": | |
return "empty_rpass" | |
else: | |
return "ok" | |
def is_pass_valid(password): | |
""" | |
Checks if the user inputted password matches all | |
the criteria | |
""" | |
if len(password) < 5: | |
return "too_short" | |
elif len(password) > 15: | |
return "too_long" | |
elif not re.search("[A-Z]", password): | |
return "no_up" | |
elif not re.search("[a-z]", password): | |
return "no_low" | |
elif not re.search("[0-9]", password): | |
return "no_num" | |
elif not re.search("[^a-zA-Z0-9_]", password): | |
return "no_sym" | |
else: | |
return "ok" | |
def make_user(data): | |
""" | |
Inserts new user data into the database | |
""" | |
con = sql.connect(database_user) | |
cur = con.cursor() | |
_date = f"{data['day']}-{data['month']}-{data['year']}" | |
cur.execute(f""" | |
INSERT INTO UserDatabase | |
values('{data['username']}', | |
'{data['password']}', | |
'{data['realname']}', | |
'{_date}', | |
'{data['color']}', | |
'{data['weight']}'); | |
""") | |
con.commit() | |
cur.close() | |
con.close() |