diff --git a/CTFd/schemas/teams.py b/CTFd/schemas/teams.py index 40616fa1..68639c62 100644 --- a/CTFd/schemas/teams.py +++ b/CTFd/schemas/teams.py @@ -246,13 +246,20 @@ class TeamSchema(ma.ModelSchema): # Remove any existing set f.pop("id", None) field_id = f.get("field_id") + value = f.get("value") # # Check that we have an existing field for this. May be unnecessary b/c the foriegn key should enforce field = TeamFields.query.filter_by(id=field_id).first_or_404() + if field.required is True and value.strip() == "": + raise ValidationError( + f"Field '{field.name}' is required", field_names=["fields"] + ) + if field.editable is False: raise ValidationError( - f"Field {field.name} cannot be editted", field_names=["fields"] + f"Field '{field.name}' cannot be editted", + field_names=["fields"], ) # Get the existing field entry if one exists diff --git a/CTFd/schemas/users.py b/CTFd/schemas/users.py index 285919d2..66393061 100644 --- a/CTFd/schemas/users.py +++ b/CTFd/schemas/users.py @@ -240,13 +240,20 @@ class UserSchema(ma.ModelSchema): # Remove any existing set f.pop("id", None) field_id = f.get("field_id") + value = f.get("value") # # Check that we have an existing field for this. May be unnecessary b/c the foriegn key should enforce field = UserFields.query.filter_by(id=field_id).first_or_404() + if field.required is True and value.strip() == "": + raise ValidationError( + f"Field '{field.name}' is required", field_names=["fields"] + ) + if field.editable is False: raise ValidationError( - f"Field {field.name} cannot be editted", field_names=["fields"] + f"Field '{field.name}' cannot be editted", + field_names=["fields"], ) # Get the existing field entry if one exists