mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-29 21:37:15 -05:00
feat: Internationalize sent emails (#3818)
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
from fastapi import APIRouter
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Header
|
||||
|
||||
from mealie.routes._base import BaseAdminController, controller
|
||||
from mealie.schema.admin.email import EmailReady, EmailSuccess, EmailTest
|
||||
@@ -15,8 +17,12 @@ class AdminEmailController(BaseAdminController):
|
||||
return EmailReady(ready=self.settings.SMTP_ENABLE)
|
||||
|
||||
@router.post("", response_model=EmailSuccess)
|
||||
async def send_test_email(self, data: EmailTest):
|
||||
service = EmailService()
|
||||
async def send_test_email(
|
||||
self,
|
||||
data: EmailTest,
|
||||
accept_language: Annotated[str | None, Header()] = None,
|
||||
):
|
||||
service = EmailService(locale=accept_language)
|
||||
status = False
|
||||
error = None
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
from fastapi import APIRouter, HTTPException, status
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Header, HTTPException, status
|
||||
|
||||
from mealie.core.security import url_safe_token
|
||||
from mealie.routes._base import BaseUserController, controller
|
||||
@@ -23,14 +25,21 @@ class GroupInvitationsController(BaseUserController):
|
||||
@router.post("", response_model=ReadInviteToken, status_code=status.HTTP_201_CREATED)
|
||||
def create_invite_token(self, uses: CreateInviteToken):
|
||||
if not self.user.can_invite:
|
||||
raise HTTPException(status.HTTP_403_FORBIDDEN, detail="User is not allowed to create invite tokens")
|
||||
raise HTTPException(
|
||||
status.HTTP_403_FORBIDDEN,
|
||||
detail="User is not allowed to create invite tokens",
|
||||
)
|
||||
|
||||
token = SaveInviteToken(uses_left=uses.uses, group_id=self.group_id, token=url_safe_token())
|
||||
return self.repos.group_invite_tokens.create(token)
|
||||
|
||||
@router.post("/email", response_model=EmailInitationResponse)
|
||||
def email_invitation(self, invite: EmailInvitation):
|
||||
email_service = EmailService()
|
||||
def email_invitation(
|
||||
self,
|
||||
invite: EmailInvitation,
|
||||
accept_language: Annotated[str | None, Header()] = None,
|
||||
):
|
||||
email_service = EmailService(locale=accept_language)
|
||||
url = f"{self.settings.BASE_URL}/register?token={invite.token}"
|
||||
|
||||
success = False
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Depends, Header
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.db.db_setup import generate_session
|
||||
@@ -9,10 +11,14 @@ router = APIRouter(prefix="")
|
||||
|
||||
|
||||
@router.post("/forgot-password")
|
||||
def forgot_password(email: ForgotPassword, session: Session = Depends(generate_session)):
|
||||
def forgot_password(
|
||||
email: ForgotPassword,
|
||||
session: Session = Depends(generate_session),
|
||||
accept_language: Annotated[str | None, Header()] = None,
|
||||
):
|
||||
"""Sends an email with a reset link to the user"""
|
||||
f_service = PasswordResetService(session)
|
||||
return f_service.send_reset_email(email.email)
|
||||
return f_service.send_reset_email(email.email, accept_language)
|
||||
|
||||
|
||||
@router.post("/reset-password")
|
||||
|
||||
Reference in New Issue
Block a user