mirror of
https://github.com/simple-login/app.git
synced 2024-11-16 00:48:32 +01:00
use random_word instead of random_string for alias suffix
This commit is contained in:
parent
7f96538741
commit
631900ab4f
5 changed files with 18 additions and 14 deletions
|
@ -7,7 +7,7 @@ from app.config import EMAIL_DOMAIN
|
||||||
from app.extensions import db
|
from app.extensions import db
|
||||||
from app.log import LOG
|
from app.log import LOG
|
||||||
from app.models import AliasUsedOn, GenEmail, User
|
from app.models import AliasUsedOn, GenEmail, User
|
||||||
from app.utils import random_string, convert_to_id
|
from app.utils import convert_to_id, random_word
|
||||||
|
|
||||||
|
|
||||||
@api_bp.route("/alias/options")
|
@api_bp.route("/alias/options")
|
||||||
|
@ -71,7 +71,7 @@ def options():
|
||||||
|
|
||||||
# maybe better to make sure the suffix is never used before
|
# maybe better to make sure the suffix is never used before
|
||||||
# but this is ok as there's a check when creating a new custom alias
|
# but this is ok as there's a check when creating a new custom alias
|
||||||
ret["custom"]["suffixes"] = [f".{random_string(6)}@{EMAIL_DOMAIN}"]
|
ret["custom"]["suffixes"] = [f".{random_word()}@{EMAIL_DOMAIN}"]
|
||||||
|
|
||||||
for custom_domain in user.verified_custom_domains():
|
for custom_domain in user.verified_custom_domains():
|
||||||
ret["custom"]["suffixes"].append("@" + custom_domain.domain)
|
ret["custom"]["suffixes"].append("@" + custom_domain.domain)
|
||||||
|
|
|
@ -7,7 +7,7 @@ from app.email_utils import notify_admin
|
||||||
from app.extensions import db
|
from app.extensions import db
|
||||||
from app.log import LOG
|
from app.log import LOG
|
||||||
from app.models import GenEmail, DeletedAlias, CustomDomain
|
from app.models import GenEmail, DeletedAlias, CustomDomain
|
||||||
from app.utils import convert_to_id, random_string
|
from app.utils import convert_to_id, random_word
|
||||||
|
|
||||||
|
|
||||||
@dashboard_bp.route("/custom_alias", methods=["GET", "POST"])
|
@dashboard_bp.route("/custom_alias", methods=["GET", "POST"])
|
||||||
|
@ -93,7 +93,7 @@ def custom_alias():
|
||||||
session[HIGHLIGHT_GEN_EMAIL_ID] = gen_email.id
|
session[HIGHLIGHT_GEN_EMAIL_ID] = gen_email.id
|
||||||
return redirect(url_for("dashboard.index"))
|
return redirect(url_for("dashboard.index"))
|
||||||
|
|
||||||
email_suffix = random_string(6)
|
email_suffix = random_word()
|
||||||
return render_template(
|
return render_template(
|
||||||
"dashboard/custom_alias.html",
|
"dashboard/custom_alias.html",
|
||||||
error=error,
|
error=error,
|
||||||
|
|
|
@ -13,7 +13,7 @@ from app.config import EMAIL_DOMAIN, MAX_NB_EMAIL_FREE_PLAN, URL, AVATAR_URL_EXP
|
||||||
from app.extensions import db
|
from app.extensions import db
|
||||||
from app.log import LOG
|
from app.log import LOG
|
||||||
from app.oauth_models import Scope
|
from app.oauth_models import Scope
|
||||||
from app.utils import convert_to_id, random_string, random_words
|
from app.utils import convert_to_id, random_string, random_words, random_word
|
||||||
|
|
||||||
|
|
||||||
class ModelMixin(object):
|
class ModelMixin(object):
|
||||||
|
@ -421,14 +421,13 @@ class GenEmail(db.Model, ModelMixin):
|
||||||
if not prefix:
|
if not prefix:
|
||||||
raise Exception("alias prefix cannot be empty")
|
raise Exception("alias prefix cannot be empty")
|
||||||
|
|
||||||
# find the right suffix
|
# find the right suffix - avoid infinite loop by running this at max 1000 times
|
||||||
found = False
|
for i in range(1000):
|
||||||
while not found:
|
suffix = random_word()
|
||||||
suffix = random_string(6)
|
|
||||||
email = f"{prefix}.{suffix}@{EMAIL_DOMAIN}"
|
email = f"{prefix}.{suffix}@{EMAIL_DOMAIN}"
|
||||||
|
|
||||||
if not cls.get_by(email=email):
|
if not cls.get_by(email=email):
|
||||||
found = True
|
break
|
||||||
|
|
||||||
return GenEmail.create(user_id=user_id, email=email, custom=True)
|
return GenEmail.create(user_id=user_id, email=email, custom=True)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import random
|
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
@ -27,7 +26,7 @@ from app.oauth_models import (
|
||||||
SUPPORTED_OPENID_FLOWS_STR,
|
SUPPORTED_OPENID_FLOWS_STR,
|
||||||
response_types_to_str,
|
response_types_to_str,
|
||||||
)
|
)
|
||||||
from app.utils import random_string, encode_url, convert_to_id
|
from app.utils import random_string, encode_url, convert_to_id, random_word
|
||||||
|
|
||||||
|
|
||||||
@oauth_bp.route("/authorize", methods=["GET", "POST"])
|
@oauth_bp.route("/authorize", methods=["GET", "POST"])
|
||||||
|
@ -100,9 +99,11 @@ def authorize():
|
||||||
LOG.debug("user %s has already allowed client %s", current_user, client)
|
LOG.debug("user %s has already allowed client %s", current_user, client)
|
||||||
user_info = client_user.get_user_info()
|
user_info = client_user.get_user_info()
|
||||||
else:
|
else:
|
||||||
suggested_email, other_emails = current_user.suggested_emails(client.name)
|
suggested_email, other_emails = current_user.suggested_emails(
|
||||||
|
client.name
|
||||||
|
)
|
||||||
suggested_name, other_names = current_user.suggested_names()
|
suggested_name, other_names = current_user.suggested_names()
|
||||||
email_suffix = random_string(6)
|
email_suffix = random_word()
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"oauth/authorize.html",
|
"oauth/authorize.html",
|
||||||
|
|
|
@ -12,6 +12,10 @@ with open(WORDS_FILE_PATH) as f:
|
||||||
_words = f.read().split()
|
_words = f.read().split()
|
||||||
|
|
||||||
|
|
||||||
|
def random_word():
|
||||||
|
return random.choice(_words)
|
||||||
|
|
||||||
|
|
||||||
def random_words():
|
def random_words():
|
||||||
"""Generate a random words. Used to generate user-facing string, for ex email addresses"""
|
"""Generate a random words. Used to generate user-facing string, for ex email addresses"""
|
||||||
nb_words = random.randint(2, 3)
|
nb_words = random.randint(2, 3)
|
||||||
|
|
Loading…
Reference in a new issue