API - handle user username and email case on login/register
This commit is contained in:
@@ -4,7 +4,7 @@ from typing import Dict, Tuple, Union
|
||||
|
||||
import jwt
|
||||
from flask import Blueprint, current_app, request
|
||||
from sqlalchemy import exc, or_
|
||||
from sqlalchemy import exc, func, or_
|
||||
from werkzeug.exceptions import RequestEntityTooLarge
|
||||
from werkzeug.utils import secure_filename
|
||||
|
||||
@@ -117,7 +117,10 @@ def register_user() -> Union[Tuple[Dict, int], HttpResponse]:
|
||||
try:
|
||||
# check for existing user
|
||||
user = User.query.filter(
|
||||
or_(User.username == username, User.email == email)
|
||||
or_(
|
||||
func.lower(User.username) == func.lower(username),
|
||||
func.lower(User.email) == func.lower(email),
|
||||
)
|
||||
).first()
|
||||
if user:
|
||||
return InvalidPayloadErrorResponse(
|
||||
@@ -193,11 +196,13 @@ def login_user() -> Union[Dict, HttpResponse]:
|
||||
post_data = request.get_json()
|
||||
if not post_data:
|
||||
return InvalidPayloadErrorResponse()
|
||||
email = post_data.get('email')
|
||||
email = post_data.get('email', '')
|
||||
password = post_data.get('password')
|
||||
try:
|
||||
# check for existing user
|
||||
user = User.query.filter(User.email == email).first()
|
||||
user = User.query.filter(
|
||||
func.lower(User.email) == func.lower(email)
|
||||
).first()
|
||||
if user and bcrypt.check_password_hash(user.password, password):
|
||||
# generate auth token
|
||||
auth_token = user.encode_auth_token(user.id)
|
||||
|
Reference in New Issue
Block a user