mirror of
https://github.com/simple-login/app.git
synced 2024-11-17 01:18:29 +01:00
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
|
from flask import g
|
||
|
from flask import jsonify, request
|
||
|
from flask_cors import cross_origin
|
||
|
|
||
|
from app.api.base import api_bp, verify_api_key
|
||
|
from app.config import EMAIL_DOMAIN, MAX_NB_EMAIL_FREE_PLAN
|
||
|
from app.extensions import db
|
||
|
from app.log import LOG
|
||
|
from app.models import GenEmail, AliasUsedOn
|
||
|
from app.utils import convert_to_id
|
||
|
|
||
|
|
||
|
@api_bp.route("/alias/random/new", methods=["POST"])
|
||
|
@cross_origin()
|
||
|
@verify_api_key
|
||
|
def new_random_alias():
|
||
|
"""
|
||
|
Create a new random alias
|
||
|
Output:
|
||
|
201 if success
|
||
|
|
||
|
"""
|
||
|
user = g.user
|
||
|
if not user.can_create_new_alias():
|
||
|
LOG.d("user %s cannot create new random alias", user)
|
||
|
return (
|
||
|
jsonify(
|
||
|
error=f"You have reached the limitation of a free account with the maximum of "
|
||
|
f"{MAX_NB_EMAIL_FREE_PLAN} aliases, please upgrade your plan to create more aliases"
|
||
|
),
|
||
|
400,
|
||
|
)
|
||
|
|
||
|
scheme = user.alias_generator
|
||
|
gen_email = GenEmail.create_new_random(user_id=user.id, scheme=scheme)
|
||
|
db.session.commit()
|
||
|
|
||
|
hostname = request.args.get("hostname")
|
||
|
if hostname:
|
||
|
AliasUsedOn.create(gen_email_id=gen_email.id, hostname=hostname)
|
||
|
db.session.commit()
|
||
|
|
||
|
return jsonify(alias=gen_email.email), 201
|