complete sign up
This commit is contained in:
@@ -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"])
|
||||
|
||||
@@ -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.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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user