@@ -26,7 +26,7 @@ def login():
2626 username = request .json .get ("username" , None )
2727 password = request .json .get ("password" , None )
2828
29- user = Users .query .filter_by (email = username ).first ()
29+ user = Users .query .filter_by (username = username ).first ()
3030 if user is None or not user .check_password (password ):
3131 return json_error ("invalid username or password" )
3232
@@ -66,31 +66,38 @@ def register():
6666 user_data = request .get_json ()
6767 new_u = Users ()
6868
69- email = user_data .get ("email" , None )
69+ # required fields first
70+
71+ parent_email = user_data .get ("parentEmail" , None )
7072 username = user_data .get ("username" , None )
73+ dob = user_data .get ("DOB" , None )
74+ password = user_data .get ("password" , None )
7175
72- if email is None :
73- return json_error ("email is required" )
76+ if parent_email is None :
77+ return json_error ("parent email is required" )
7478
7579 if username is None :
7680 return json_error ("username is required" )
7781
78- password = user_data .get ("password" , None )
82+ if dob is None :
83+ return json_error ("DOB is required" )
7984
80- if password is None or len (password ) < 11 or len (password ) > 120 :
81- return json_error ("invalid password length (between 11 and 120)" )
82-
83- if Users .query .filter_by (email = email ).first ():
84- return json_error ("that email is already in use" )
85+ if password is None or len (password ) < 8 or len (password ) > 120 :
86+ return json_error ("invalid password length (between 8 and 120)" )
8587
8688 if Users .query .filter_by (username = username ).first ():
8789 return json_error ("that username has been taken" )
8890
89- new_u .email = user_data [ 'email' ]
90- new_u .username = user_data [ ' username' ]
91+ new_u .parent_email = parent_email
92+ new_u .username = username
9193 new_u .password = hash_password (password )
92- new_u .firstname = user_data ['firstname' ]
93- new_u .lastname = user_data ['lastname' ]
94+
95+ new_u .parentfirstname = user_data .get ("parentFirstName" )
96+ new_u .parentlastname = user_data .get ("parentLastName" )
97+ new_u .studentfirstname = user_data .get ("studentFirstName" )
98+ new_u .studentlastname = user_data .get ("studentLastName" )
99+ new_u .dob = dob
100+
94101 new_u .active = True
95102
96103 db .session .add (new_u )
@@ -106,11 +113,11 @@ def hello_protected():
106113 user = get_current_user ()
107114
108115 return jsonify ({"status" : "success" ,
109- "message" : f"Hello { user .firstname } ! (id { identity } )" ,
116+ "message" : f"Hello { user .studentfirstname } ! (id { identity } )" ,
110117 "username" : user .username ,
111- "email" : user .email ,
112- "firstname" : user .firstname ,
113- "lastname" : user .lastname ,
118+ "email" : user .parent_email ,
119+ "firstname" : user .studentfirstname ,
120+ "lastname" : user .studentfirstname ,
114121 "rank" : user .rank ,
115122 "timeUntilNextRank" : core .time_until_next_rank ()})
116123
@@ -124,7 +131,7 @@ def forgot_password():
124131 if email is None :
125132 return jsonify (status = "error" , reason = "email missing" ), 400
126133
127- user = Users .query .filter_by (email = email ).first ()
134+ user = Users .query .filter_by (parent_email = email ).first ()
128135
129136 if user is None :
130137 return jsonify (status = "error" ,
@@ -138,7 +145,7 @@ def forgot_password():
138145 "did not make this request, you can ignore this email. "
139146 "To reset your password, use this link within 24 hours. "
140147 f"https://www.hackcwhq.com/reset-password?token={ token } " ,
141- recipients = [user .email ])
148+ recipients = [user .parent_email ])
142149
143150 if current_app .config .get ("TESTING" , False ):
144151 msg .extra_headers = {"X-Password-Reset-Token" : token }
@@ -159,8 +166,8 @@ def reset_password():
159166 if token is None or password is None :
160167 return json_error ("missing token or password" )
161168
162- if len ( password ) < 11 and len (password ) > 120 :
163- return json_error ("invalid password length (between 11 and 120)" )
169+ if 8 > len (password ) > 120 :
170+ return json_error ("invalid password length (between 8 and 120)" )
164171
165172 try :
166173 reset_password_from_token (token , password )
0 commit comments