complete sign up

This commit is contained in:
CHIEFSOFT\ameye
2025-07-09 21:47:10 -04:00
parent 62afcb7ded
commit a243f89fc1
4 changed files with 83 additions and 22 deletions
+2 -2
View File
@@ -69,11 +69,11 @@ def merms_register_verify():
response = RegisterService.process_verify(data)
return response
@api.route("/panel/RegisterComplete", methods=["POST"])
@api.route("/panel/Register/complete", methods=["POST"])
@jwt_required()
def merms_register_complete():
data = request.get_json()
response = RegisterService.process_request(data)
response = RegisterService.process_complete(data)
return response
@api.route("/panel/account", methods=["POST"])
+16
View File
@@ -0,0 +1,16 @@
from marshmallow import Schema, fields
class RegisterCompleteSchema(Schema):
country = fields.Str(required=True)
username = fields.Str(required=True)
verify_link = fields.Str(required=True)
password = fields.Str(required=True)
# {
# "country": "US",
# "username": "testaccount",
# "password": "merms.user.panel"
# "verify_link": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImVtYWlsIjoiYW1leWVAY2hpZWZzb2Z0LmNvbSIsInBlbmRpbmdfdWlkIjoiM2YzZTJmN2EtMzhhMy00MjQ0LWE1MGItNTEzZDM1ZWM1NzA3IiwiZmlyc3RfbmFtZSI6Ik9sdXNlc2FuIiwibGFzdF9uYW1lIjoiQW1leWUiLCJwZW5kaW5nX2lkIjpudWxsfSwiZXhwIjoxNzUyMzEwMjY1fQ.etgqBztn1Wjk9mPh50NYwDI3twc94UmJ9gqbK-ktXOM"
# }
+65 -15
View File
@@ -6,8 +6,11 @@ from app.extensions import db
from app.models import Offer, MembersPending, Members
from app.api.helpers.response_helper import ResponseHelper
from werkzeug.security import generate_password_hash, check_password_hash
from app.api.schemas.register import RegisterSchema
from app.api.schemas.register_verify import RegisterVerifySchema
from app.api.schemas.register_complete import RegisterCompleteSchema
from flask_mail import Mail, Message
import smtplib
@@ -27,6 +30,68 @@ class RegisterService(BaseService):
SEND_EMAIL_FROM = Config.SEND_EMAIL_FROM
SEND_EMAIL_PASS = Config.SEND_EMAIL_PASS
@staticmethod
def process_complete(data):
try:
with db.session.begin():
validated_data = RegisterService.validate_data(data, RegisterCompleteSchema())
# Simulate processing
verify_link = validated_data.get('verify_link')
username = validated_data.get('username')
data ={}
if not verify_link:
return jsonify({'message': 'Error - missing verify link'}), 403
try:
data = jwt.decode(verify_link, RegisterService.JWT_SECRET_KEY, algorithms=["HS256"])
except:
return jsonify({'status': 'INVALID', 'message': 'Link is invalid'}), 403
previousAcc = Members.get_member_by_username(username)
if previousAcc:
response_data = {
"error_message": "try another username ",
"error_message_key": "use_another_username",
}
return ResponseHelper.error(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:
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 process_verify(data):
#"verify_link": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMThmYzg0YTQtYjQzMC00ZWFkLWE4ZjEtMTk2MTJmNzA5ZDE0IiwiZXhwIjoxNzUyMjc2NjQzfQ.UEsSpCkMq8xNTLiqzyCB572tK-9WkeYaSBF4gfvX7vk"
@@ -36,17 +101,7 @@ class RegisterService(BaseService):
validated_data = RegisterService.validate_data(data, RegisterVerifySchema())
# Simulate processing
verify_link = validated_data.get('verify_link')
# pending_member = {
# "email": signup_email,
# "uid": email_uid,
# "first_name": firstname,
# "last_name": signup_email,
# "member_id":last_row_id,
# }
data ={}
if not verify_link:
return jsonify({'message': 'Error - missing verify link'}), 403
try:
@@ -62,11 +117,6 @@ class RegisterService(BaseService):
]
}
# response_data = {
# "member_id": data['member_id'],
# "uid": data['uid'],
# "country": country,
# }
response_data = {
"user": data["user"],
"country": country,
-5
View File
@@ -41,14 +41,9 @@ class Members(db.Model):
@classmethod
def get_member_by_username(cls, username):
"""
Return an offer by its ID.
"""
member = cls.query.filter_by(username=str(username)).first()
if not member:
raise None
#ValueError(f"Username = {username} not found")
return member
@classmethod