diff --git a/__pycache__/app.cpython-313.pyc b/__pycache__/app.cpython-313.pyc index 9f46eac..ae90487 100644 Binary files a/__pycache__/app.cpython-313.pyc and b/__pycache__/app.cpython-313.pyc differ diff --git a/routes/__pycache__/main.cpython-313.pyc b/routes/__pycache__/main.cpython-313.pyc index db51785..218c737 100644 Binary files a/routes/__pycache__/main.cpython-313.pyc and b/routes/__pycache__/main.cpython-313.pyc differ diff --git a/routes/admin_api.py b/routes/admin_api.py index 35490ea..6f0dd12 100644 --- a/routes/admin_api.py +++ b/routes/admin_api.py @@ -550,8 +550,12 @@ def generate_password_reset_token(current_user, user_id): db.session.add(reset_token) db.session.commit() + # Get the instance URL from the request data or use the current host + data = request.get_json() or {} + instance_url = data.get('instance_url', request.host_url.rstrip('/')) + # Return the token and reset URL - reset_url = f"{request.host_url.rstrip('/')}/reset-password/{token}" + reset_url = f"{instance_url}/reset-password/{token}" return jsonify({ 'message': 'Password reset token generated successfully', diff --git a/routes/launch_api.py b/routes/launch_api.py index 0717099..0658ceb 100644 --- a/routes/launch_api.py +++ b/routes/launch_api.py @@ -4,11 +4,15 @@ from models import ( Instance ) from extensions import db, csrf +from routes.admin_api import token_required +import json +import smtplib +from email.mime.text import MIMEText +from email.mime.multipart import MIMEMultipart +from email.utils import formatdate from datetime import datetime import requests import base64 -from routes.admin_api import token_required -import json launch_api = Blueprint('launch_api', __name__) @@ -1117,9 +1121,9 @@ def update_admin_credentials(): users_data = users_response.json() admin_user = None - # Find the administrator user + # Find the administrator user by role (since email was already updated) for user in users_data: - if user.get('email') == email: + if user.get('is_admin') == True: admin_user = user break @@ -1291,9 +1295,9 @@ def send_completion_email(): users_data = users_response.json() admin_user = None - # Find the administrator user by email + # Find the administrator user by role (since email was already updated) for user in users_data: - if user.get('email') == credentials_data.get('email'): + if user.get('is_admin') == True: admin_user = user break @@ -1307,8 +1311,10 @@ def send_completion_email(): f"{instance_url.rstrip('/')}/api/admin/generate-password-reset/{admin_user_id}", headers={ 'Authorization': f'Bearer {jwt_token}', - 'Accept': 'application/json' + 'Accept': 'application/json', + 'Content-Type': 'application/json' }, + json={'instance_url': instance_url}, timeout=10 ) @@ -1364,8 +1370,8 @@ def send_completion_email():
Email Address: {credentials_data.get('email', 'Not set')}
-Username: {credentials_data.get('username', 'administrator')}
+Email Address: {admin_user.get('email', 'Not set')}
+Username: {admin_user.get('username', 'administrator')}
${credentialsResult.data.password || 'Not set'}Dear ${data.company.name || 'Valued Customer'},
+Great news! Your DocuPulse instance has been successfully deployed and configured.
+ +Instance URL: https://${data.webAddresses[0]}
+Company Name: ${data.company.name || 'Not set'}
+Industry: ${data.company.industry || 'Not set'}
+Deployment Date: ${new Date().toLocaleString()}
+Email Address: ${data.company.email || 'Not set'}
+Username: administrator
+ +For your security, you need to set up your password. Click the button below to create your secure password.
+Password Reset Link Expires: 24 hours
+If you have any questions or need assistance, please don't hesitate to contact our support team.
+Thank you for choosing DocuPulse!
+