Ejemplo n.º 1
0
    def post(self):
        """Register a new user."""
        req_body = request.get_json()

        not_found = []
        required_fields = ("email", "password")
        for field in required_fields:
            if field not in req_body.keys():
                not_found.append(field)

        if not_found:
            return (
                f"Required field(s) not found:"
                f" {', '.join(field for field in not_found)}",
                400,
            )

        # Check if email is valid
        user_email = req_body["email"]
        try:
            validate_email(user_email)
        except ValidationError:
            return "Incorrect format for field: email", 400

        # Check if password is secure enough
        user_password = req_body["password"]
        try:
            validate_password(user_password)
        except ValidationError:
            return (
                "Password is not secure enough: include at least one uppercase,"
                " one lowercase, one number and one symbol, and keep it between"
                " 12 and 255 characters long. Whitespace is not allowed.",
                400,
            )

        salt = generate_random_salt()
        hashed_password = hash_password(user_password, salt)

        # noinspection PyArgumentList
        new_user = User(
            email=user_email,
            password=hashed_password,
            salt=str(salt, encoding=ENCODING),
        )
        db.session.add(new_user)

        try:
            db.session.commit()
        except IntegrityError:
            return {}, 409

        apikey = get_or_create_api_key(new_user)

        return apikey, 201
Ejemplo n.º 2
0
    def validate_email(self, value):
        """ Validate a user's email address.

        :param value: Value of the user's email address.

        :return: `value` on success.

        :raises: ValueError if value is incorrect.
        """
        validate_email(value)
        return value
Ejemplo n.º 3
0
    def patch(self, user):
        """Edit individual fields on a user. Non-admins can only edit some fields on
        their own account.
        """

        req_data = request.get_json()
        invalid_fields = []
        modified = 0
        for key in req_data:
            if not hasattr(user, key) or key in ("id", "salt"):
                invalid_fields.append(key)
                continue

            if not invalid_fields:
                if key == "email":
                    new_email = req_data[key]
                    try:
                        validate_email(new_email)
                    except ValidationError:
                        return "Invalid format for email address.", 400
                    user.email = new_email
                    modified += 1
                elif key == "password":
                    new_password = req_data[key]
                    try:
                        validate_password(new_password)
                    except ValidationError:
                        return "New password is not secure enough or too long.", 400
                    new_salt = generate_random_salt()
                    user.password = hash_password(new_password, new_salt)
                    user.salt = new_salt
                    modified += 1
                elif key == "lemmas":
                    lemma_refs = req_data[key]
                    if isinstance(lemma_refs[0], int):
                        lemma_filter = Lemma.id.in_(lemma_refs)
                    else:
                        lemma_filter = Lemma.content.in_(lemma_refs)
                    lemmas = Lemma.query.filter(lemma_filter)
                    user.lemmas.extend(lemmas)
                    modified += 1

        if invalid_fields:
            return f"Invalid fields: {', '.join(invalid_fields)}", 400

        if not modified:
            return "No valid field specified.", 400

        db.session.commit()

        return {}, 204
Ejemplo n.º 4
0
    def sign_up_user():
        """ [서비스] 유저 회원가입
        Author: Mark Hasung Kim
        Returns:
            {
                "custom_message": "SERVICE_USER_CREATED,
                "result": "POST
                }
        """
        connection = None
        try:
            data = request.json
            if 'username' not in data:
                raise ApiException(400, INVALID_INPUT)
            if 'email' not in data:
                raise ApiException(400, INVALID_INPUT)
            if 'password' not in data:
                raise ApiException(400, INVALID_INPUT)
            if 'userTypeId' not in data:
                raise ApiException(400, INVALID_INPUT)

            if not validate_password(data['password']):
                raise ApiException(400, INVALID_PASSWORD)
            if not validate_email(data['email']):
                raise ApiException(400, INVALID_EMAIL)

            user_info = {
                'username': data['username'],
                'email': data['email'],
                'password': data['password'],
                'user_type_id': int(data['userTypeId']),
                'phone_number': '',
            }

            connection = connect_db()
            user_service = UserService()
            user_service.create_user(user_info, connection)
            connection.commit()

            return {"custom_message": "SERVICE_USER_CREATED", "result": "POST"}

        except ApiException as e:
            if connection:
                connection.rollback()
            raise e
        finally:
            if connection:
                connection.close()
Ejemplo n.º 5
0
 def test_ascii_free_email(self):
     email = self.factory.ascii_free_email()
     validate_email(email)
     assert email.split('@')[0] == 'joaosimoes'
Ejemplo n.º 6
0
 def test_ascii_safe_email(self):
     email = self.factory.ascii_safe_email()
     validate_email(email)
     assert email.split('@')[0] == 'vitoriamagalhaes'
Ejemplo n.º 7
0
 def test_ascii_free_email(self, faker):
     email = faker.ascii_free_email()
     validate_email(email)
     assert email.split('@')[0] == 'aleksandrsmirnov'
Ejemplo n.º 8
0
 def test_ascii_company_email(self, faker):
     email = faker.ascii_company_email()
     validate_email(email)
     assert email.split('@')[0] == 'andrecaua'
Ejemplo n.º 9
0
 def test_ascii_safe_email(self, faker):
     email = faker.ascii_safe_email()
     validate_email(email)
     assert email.split('@')[0] == 'vitoriamagalhaes'
Ejemplo n.º 10
0
        value = control.cmb.get_active()
        if field.required and value == -1:
            raise ValidationError(_("Este campo es requerido"))
        else:
            if control.cmb.get_active() == -1:
                return None
            elif not control.choices:
                return None
                
            return control.choices[value]

    elif isinstance(field, EmailField):
        if not field.required and value == "":
            return value
        else:
            if not validate_email(value):
                raise ValidationError(_("Debe introducir un correo valido"))
            else:
                return value

    elif isinstance(field, BooleanField):
        return control.check.get_active()

    elif isinstance(field, CharField):
        return control.entry.get_text()
        
    elif isinstance(field, MultipleChoiceField):
        selected = control.cmb_multiple.get_selected()
        if field.required and not selected:
            raise ValidationError(_("Este campo es requerido"))
        else:
Ejemplo n.º 11
0
 def test_email(self):
     email = self.fake.email()
     validate_email(email)
Ejemplo n.º 12
0
 def test_ascii_free_email(self, faker):
     email = faker.ascii_free_email()
     validate_email(email)
     assert email.split("@")[0] == "agamushviqelovsetov"
Ejemplo n.º 13
0
 def test_ascii_company_email(self, faker):
     email = faker.ascii_company_email()
     validate_email(email)
     assert email.split("@")[0] == "asyl"
Ejemplo n.º 14
0
 def test_ascii_free_email(self, faker):
     email = faker.ascii_free_email()
     validate_email(email)
     assert email.split("@")[0] == "fabienne"
Ejemplo n.º 15
0
 def test_ascii_company_email(self):
     email = self.factory.ascii_company_email()
     validate_email(email)
     assert email.split('@')[0] == 'andrecaua'
Ejemplo n.º 16
0
 def validate_value(self, value):
     super(EmailFormField, self).validate_value(value)
     if self.required:
         validators.validate_email(value)
Ejemplo n.º 17
0
 def test_ascii_free_email(self):
     email = self.fake.ascii_free_email()
     validate_email(email)
     assert email.split('@')[0] == 'fabienne'
Ejemplo n.º 18
0
 def test_email(self, faker):
     email = faker.email()
     validate_email(email)
Ejemplo n.º 19
0
 def test_ascii_company_email(self):
     email = self.fake.ascii_company_email()
     validate_email(email)
     assert email.split('@')[0] == 'asyl'
Ejemplo n.º 20
0
 def test_ascii_free_email(self, faker):
     email = faker.ascii_free_email()
     validate_email(email)
     assert email.split('@')[0] == 'joaosimoes'
Ejemplo n.º 21
0
# import time
from time import time

# import datetime
from datetime import date

# pip module
from camelcase import CamelCase

# import custom module
# go to validator to check out how to import custom modules.
import validators
from validators import validate_email

email = 'test#test.com'
if validate_email(email):
    print('Email is valid')
else:
    print('email is bad')

# today = datetime.date.today()
today = date.today()
# print(today)

# timestamp = time.time()
timestamp = time()
# print(timestamp)

c = CamelCase()
# print(c.hump('hello there world'))
# outputs Hello There World
Ejemplo n.º 22
0
 def test_ascii_safe_email(self, faker):
     email = faker.ascii_safe_email()
     validate_email(email)
     assert email.split('@')[0] == 'ivanivanov'
Ejemplo n.º 23
0
 def test_email(self):
     email = self.factory.email()
     validate_email(email)
Ejemplo n.º 24
0
 def test_ascii_company_email(self, faker):
     email = faker.ascii_company_email()
     validate_email(email)
     assert email.split('@')[0] == 'sergekuznetsov'
Ejemplo n.º 25
0
 def test_ascii_safe_email(self):
     email = self.factory.ascii_safe_email()
     validate_email(email)
     assert email.split('@')[0] == 'asyl'