complete sign up
This commit is contained in:
@@ -69,11 +69,11 @@ def merms_register_verify():
|
|||||||
response = RegisterService.process_verify(data)
|
response = RegisterService.process_verify(data)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@api.route("/panel/RegisterComplete", methods=["POST"])
|
@api.route("/panel/Register/complete", methods=["POST"])
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
def merms_register_complete():
|
def merms_register_complete():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
response = RegisterService.process_request(data)
|
response = RegisterService.process_complete(data)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@api.route("/panel/account", methods=["POST"])
|
@api.route("/panel/account", methods=["POST"])
|
||||||
|
|||||||
@@ -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"
|
||||||
|
# }
|
||||||
@@ -6,8 +6,11 @@ from app.extensions import db
|
|||||||
from app.models import Offer, MembersPending, Members
|
from app.models import Offer, MembersPending, Members
|
||||||
from app.api.helpers.response_helper import ResponseHelper
|
from app.api.helpers.response_helper import ResponseHelper
|
||||||
from werkzeug.security import generate_password_hash, check_password_hash
|
from werkzeug.security import generate_password_hash, check_password_hash
|
||||||
|
|
||||||
from app.api.schemas.register import RegisterSchema
|
from app.api.schemas.register import RegisterSchema
|
||||||
from app.api.schemas.register_verify import RegisterVerifySchema
|
from app.api.schemas.register_verify import RegisterVerifySchema
|
||||||
|
from app.api.schemas.register_complete import RegisterCompleteSchema
|
||||||
|
|
||||||
|
|
||||||
from flask_mail import Mail, Message
|
from flask_mail import Mail, Message
|
||||||
import smtplib
|
import smtplib
|
||||||
@@ -27,6 +30,68 @@ class RegisterService(BaseService):
|
|||||||
SEND_EMAIL_FROM = Config.SEND_EMAIL_FROM
|
SEND_EMAIL_FROM = Config.SEND_EMAIL_FROM
|
||||||
SEND_EMAIL_PASS = Config.SEND_EMAIL_PASS
|
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
|
@staticmethod
|
||||||
def process_verify(data):
|
def process_verify(data):
|
||||||
#"verify_link": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMThmYzg0YTQtYjQzMC00ZWFkLWE4ZjEtMTk2MTJmNzA5ZDE0IiwiZXhwIjoxNzUyMjc2NjQzfQ.UEsSpCkMq8xNTLiqzyCB572tK-9WkeYaSBF4gfvX7vk"
|
#"verify_link": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMThmYzg0YTQtYjQzMC00ZWFkLWE4ZjEtMTk2MTJmNzA5ZDE0IiwiZXhwIjoxNzUyMjc2NjQzfQ.UEsSpCkMq8xNTLiqzyCB572tK-9WkeYaSBF4gfvX7vk"
|
||||||
@@ -36,17 +101,7 @@ class RegisterService(BaseService):
|
|||||||
validated_data = RegisterService.validate_data(data, RegisterVerifySchema())
|
validated_data = RegisterService.validate_data(data, RegisterVerifySchema())
|
||||||
# Simulate processing
|
# Simulate processing
|
||||||
verify_link = validated_data.get('verify_link')
|
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 ={}
|
data ={}
|
||||||
|
|
||||||
if not verify_link:
|
if not verify_link:
|
||||||
return jsonify({'message': 'Error - missing verify link'}), 403
|
return jsonify({'message': 'Error - missing verify link'}), 403
|
||||||
try:
|
try:
|
||||||
@@ -62,11 +117,6 @@ class RegisterService(BaseService):
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
# response_data = {
|
|
||||||
# "member_id": data['member_id'],
|
|
||||||
# "uid": data['uid'],
|
|
||||||
# "country": country,
|
|
||||||
# }
|
|
||||||
response_data = {
|
response_data = {
|
||||||
"user": data["user"],
|
"user": data["user"],
|
||||||
"country": country,
|
"country": country,
|
||||||
|
|||||||
@@ -41,14 +41,9 @@ class Members(db.Model):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_member_by_username(cls, username):
|
def get_member_by_username(cls, username):
|
||||||
"""
|
|
||||||
Return an offer by its ID.
|
|
||||||
"""
|
|
||||||
member = cls.query.filter_by(username=str(username)).first()
|
member = cls.query.filter_by(username=str(username)).first()
|
||||||
|
|
||||||
if not member:
|
if not member:
|
||||||
raise None
|
raise None
|
||||||
#ValueError(f"Username = {username} not found")
|
|
||||||
return member
|
return member
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
Reference in New Issue
Block a user