working on verification email sending

This commit is contained in:
Jack Case
2025-11-15 14:04:03 +00:00
parent f5f8b5c873
commit cfd54eca5e
3 changed files with 42 additions and 1 deletions

View File

@@ -1,2 +1,22 @@
"""Send emails for account verification through Resend API"""
import resend
from slopserver.settings import settings
import resend
resend.api_key = settings.resend_token
def send_email(to: str, subject, content):
params: resend.Emails.SendParams = {
"from": "slopfarmer@jack-case.pro",
"to": to,
"subject": subject,
"html": content
}
email: resend.Emails.SendResponse = resend.Emails.send(params)
return email
def generate_verification_email(verification_url: str):
return f"""
<p>click here to verify your Slop Farmer account: <a href={verification_url}>{verification_url}</a></p>
"""

View File

@@ -87,6 +87,17 @@ def generate_auth_token(username):
encoded_jwt = jwt.encode(bearer_token, TOKEN_SECRET, ALGO)
return encoded_jwt
def generate_verification_token(username):
expiration = datetime.now() + timedelta(days=2)
verification_token = {
"iss": "slopserver",
"exp": int(expiration.timestamp()),
"sub": username
}
encoded_jwt = jwt.encode(verification_token, TOKEN_SECRET, ALGO)
return encoded_jwt
def get_token_user(decoded_token):
user = get_user(decoded_token["sub"], DB_ENGINE)
return user
@@ -128,6 +139,14 @@ def signup_form(form_data: Annotated[SignupForm, Form()]):
# create user
create_user(form_data.email, get_password_hash(form_data.password.get_secret_value()), DB_ENGINE)
# send verification email
# create a jwt encoding the username and a time limit to be the verification URL
@app.get("/verify")
def verify_email(token: str):
get_user()
@app.get("/altcha-challenge")
def altcha_challenge():
options = ChallengeOptions(

View File

@@ -7,4 +7,6 @@ class ServerSettings(BaseSettings):
altcha_secret: str = "0460de065912d0292df1e7422a5ed2dc362ed56d6bab64fe50b89957463061f3"
resend_token: str = "re_NXpjzbqR_KgAbu72PKjYHcquX24WvnN3i"
sender_email: str = "slopfarmer@jack-case.pro"
settings = ServerSettings()