diff --git a/Dockerfile b/Dockerfile index bbb5fbb57527031bf4fdb3826b46f8638e41813f..3a33f19c679677ca9f9f92962b3d19e51a8c05f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,9 +17,6 @@ RUN apk update \ && apk add --virtual build-deps gcc python3-dev musl-dev curl \ && apk add --no-cache postgresql-dev -RUN mkdir -p /usr/share/dict -RUN curl -s https://gitlab.gwdg.de/snippets/51/raw --output /usr/share/dict/words - WORKDIR /code COPY . /code diff --git a/util/factories.py b/util/factories.py index a4161cfd62634c76c0e3480571b4f0f421455c6a..e007428f603ee8ec48fdd059ff1eed21921aa42f 100644 --- a/util/factories.py +++ b/util/factories.py @@ -1,5 +1,6 @@ import configparser import secrets +import string from core.models import UserAccount as User from core.models import Reviewer, Student, Tutor @@ -11,12 +12,10 @@ REVIEWERS = 'reviewers' PASSWORDS = '.importer_passwords' -def get_xkcd_password(k=2): - with open('/usr/share/dict/words') as words: - choose_from = list({word.strip().lower() - for word in words if 5 < len(word) < 8}) - - return ''.join(secrets.choice(choose_from) for _ in range(k)) +def get_random_password(length=32): + """ Returns a cryptographically random string of specified length """ + return ''.join(secrets.choice(string.ascii_lowercase) + for _ in range(length)) def store_password(username, groupname, password): @@ -35,7 +34,7 @@ def store_password(username, groupname, password): class GradyUserFactory: def __init__(self, - password_generator_func=get_xkcd_password, + password_generator_func=get_random_password, password_storge=store_password, *args, **kwargs): self.password_generator_func = password_generator_func @@ -43,7 +42,7 @@ class GradyUserFactory: @staticmethod def _get_random_name(prefix='', suffix='', k=1): - return ''.join((prefix, get_xkcd_password(k), suffix)) + return ''.join((prefix, get_random_password(k), suffix)) def _make_base_user(self, username, groupname, store_pw=False, **kwargs): """ This is a specific wrapper for the django update_or_create method of