Added login logic

This commit is contained in:
CHIEFSOFT\ameye
2025-07-10 19:07:08 -04:00
parent d3114d06a9
commit 9b32ed6cd5
2 changed files with 84 additions and 24 deletions
+68 -9
View File
@@ -22,15 +22,6 @@ class LoginService(BaseService):
@staticmethod
def process_request(data):
"""
Process the Login request.
Args:
data (dict): The request data.
Returns:
dict: A standardized response.
"""
try:
with db.session.begin():
@@ -98,6 +89,74 @@ class LoginService(BaseService):
db.session.rollback()
return ResponseHelper.internal_server_error()
@staticmethod
def login_user(username, password):
try:
with db.session.begin():
# validated_data = LoginService.validate_data(data, LoginSchema())
# username = validated_data.get('username')
# password = validated_data.get('password')
member = Members.get_member_by_username(username)
# pass22 = generate_password_hash(password)
# logger.info("Password generated = > {}".format(pass22) )
if not member:
invalid_data = {
"error_message": "invalid username or password",
"message_key": "invalid_username_or_password",
}
return ResponseHelper.success(data=invalid_data)
pass_check = check_password_hash(member.password, password)
logger.info("Password check: {}".format(pass_check))
if not member or not pass_check:
invalid_data = {
"error_message": "invalid username or password",
"message_key": "invalid_username_or_password",
}
return ResponseHelper.success(data=invalid_data)
user_data = {}
user_data["id"] = member.id,
user_data["member_id"]= member.id,
user_data["uid"] = str(member.uid),
user_token = jwt.encode(
{"user": user_data, 'exp' : datetime.datetime.utcnow() + datetime.timedelta(minutes=3330)},
Config.JWT_SECRET_KEY,
algorithm="HS256"
)
# Simulate processing
response_data = {
"member_id": member.id,
"uid": str(member.uid),
"username": member.username,
"account_name": member.account_name,
"firstname":member.firstname,
"lastname": member.lastname,
"room": member.uid,
"token": user_token
}
return ResponseHelper.success(data=response_data)
except ValidationError as err:
logger.error(f"Validation Error: {getattr(err, 'messages', str(err))}")
db.session.rollback()
return ResponseHelper.unprocessable_entity(result_description="Validation exception")
except ValueError as err:
logger.error(f"{getattr(err, 'messages', str(err))}")
db.session.rollback()
return ResponseHelper.error(result_description=str(err))
except Exception as e:
logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback()
return ResponseHelper.internal_server_error()
@staticmethod
def check_loan_limits(customer_id):
"""
+16 -15
View File
@@ -11,6 +11,7 @@ from app.api.schemas.register import RegisterSchema
from app.api.schemas.register_verify import RegisterVerifySchema
from app.api.schemas.register_complete import RegisterCompleteSchema
from app.api.services.login import LoginService
from flask_mail import Mail, Message
import smtplib
@@ -67,25 +68,25 @@ class RegisterService(BaseService):
lastname = user['last_name']
email = user['email']
encrypted_pass = generate_password_hash(password)
newAccount = Members.add_member(firstname, lastname, email, username,encrypted_pass, country)
return LoginService.login_user(username,password)
country = {
"last_update": datetime.datetime.utcnow(),
"list": [
{"code": "US", "description": "United States"},
{"code": "CA", "description": "Canada"},
]
}
response_data = {
"user": data["user"],
"country": country,
}
return ResponseHelper.success(data=response_data)
# country = {
# "last_update": datetime.datetime.utcnow(),
# "list": [
# {"code": "US", "description": "United States"},
# {"code": "CA", "description": "Canada"},
# ]
# }
#
# response_data = {
# "user": data["user"],
# "country": country,
# }
#
# return ResponseHelper.success(data=response_data)
except ValidationError as err: