|
@@ -41,7 +41,7 @@ from backend.app.services.email_service import (
|
|
|
save_smtp_settings,
|
|
save_smtp_settings,
|
|
|
send_email,
|
|
send_email,
|
|
|
)
|
|
)
|
|
|
-from backend.app.api.routes.settings import get_setting
|
|
|
|
|
|
|
+from backend.app.api.routes.settings import get_external_login_url
|
|
|
|
|
|
|
|
|
|
|
|
|
def _user_to_response(user: User) -> UserResponse:
|
|
def _user_to_response(user: User) -> UserResponse:
|
|
@@ -525,7 +525,6 @@ async def get_advanced_auth_status(db: AsyncSession = Depends(get_db)):
|
|
|
async def forgot_password(request: ForgotPasswordRequest, db: AsyncSession = Depends(get_db)):
|
|
async def forgot_password(request: ForgotPasswordRequest, db: AsyncSession = Depends(get_db)):
|
|
|
"""Request password reset via email (advanced auth only)."""
|
|
"""Request password reset via email (advanced auth only)."""
|
|
|
import logging
|
|
import logging
|
|
|
- import os
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
@@ -557,13 +556,7 @@ async def forgot_password(request: ForgotPasswordRequest, db: AsyncSession = Dep
|
|
|
user.password_hash = get_password_hash(new_password)
|
|
user.password_hash = get_password_hash(new_password)
|
|
|
await db.commit()
|
|
await db.commit()
|
|
|
|
|
|
|
|
- # Use external_url from settings if available, otherwise fall back to APP_URL env var
|
|
|
|
|
- external_url = await get_setting(db, "external_url")
|
|
|
|
|
- if external_url:
|
|
|
|
|
- external_url = external_url.rstrip("/")
|
|
|
|
|
- else:
|
|
|
|
|
- external_url = os.environ.get("APP_URL", "http://localhost:5173")
|
|
|
|
|
- login_url = external_url + "/login"
|
|
|
|
|
|
|
+ login_url = await get_external_login_url(db)
|
|
|
|
|
|
|
|
# Send password reset email
|
|
# Send password reset email
|
|
|
subject, text_body, html_body = create_password_reset_email(user.username, new_password, login_url)
|
|
subject, text_body, html_body = create_password_reset_email(user.username, new_password, login_url)
|
|
@@ -587,7 +580,6 @@ async def reset_user_password(
|
|
|
):
|
|
):
|
|
|
"""Reset a user's password and send them an email (admin only, advanced auth only)."""
|
|
"""Reset a user's password and send them an email (admin only, advanced auth only)."""
|
|
|
import logging
|
|
import logging
|
|
|
- import os
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
@@ -638,13 +630,7 @@ async def reset_user_password(
|
|
|
user.password_hash = get_password_hash(new_password)
|
|
user.password_hash = get_password_hash(new_password)
|
|
|
await db.commit()
|
|
await db.commit()
|
|
|
|
|
|
|
|
- # Use external_url from settings if available, otherwise fall back to APP_URL env var
|
|
|
|
|
- external_url = await get_setting(db, "external_url")
|
|
|
|
|
- if external_url:
|
|
|
|
|
- external_url = external_url.rstrip("/")
|
|
|
|
|
- else:
|
|
|
|
|
- external_url = os.environ.get("APP_URL", "http://localhost:5173")
|
|
|
|
|
- login_url = external_url + "/login"
|
|
|
|
|
|
|
+ login_url = await get_external_login_url(db)
|
|
|
|
|
|
|
|
# Send password reset email
|
|
# Send password reset email
|
|
|
subject, text_body, html_body = create_password_reset_email(user.username, new_password, login_url)
|
|
subject, text_body, html_body = create_password_reset_email(user.username, new_password, login_url)
|