Skip to content

Commit 0e9158a

Browse files
committed
Merge remote-tracking branch 'origin/main' into 1933-elixir-security-importer-package-first
2 parents 0cab5f9 + 2eb80ba commit 0e9158a

File tree

6 files changed

+84
-42
lines changed

6 files changed

+84
-42
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ ACTIVATE?=. ${VENV}/bin/activate;
2929
VIRTUALENV_PYZ=etc/thirdparty/virtualenv.pyz
3030
# Do not depend on Python to generate the SECRET_KEY
3131
GET_SECRET_KEY=`base64 /dev/urandom | head -c50`
32+
GET_ALTCHA_HMAC_KEY=`head -c 32 /dev/urandom | xxd -p -c 32`
3233
# Customize with `$ make envfile ENV_FILE=/etc/vulnerablecode/.env`
3334
ENV_FILE=.env
3435
# Customize with `$ make postgres VULNERABLECODE_DB_PASSWORD=YOUR_PASSWORD`
@@ -63,6 +64,7 @@ envfile:
6364
@if test -f ${ENV_FILE}; then echo ".env file exists already"; exit 1; fi
6465
@mkdir -p $(shell dirname ${ENV_FILE}) && touch ${ENV_FILE}
6566
@echo SECRET_KEY=\"${GET_SECRET_KEY}\" > ${ENV_FILE}
67+
@echo ALTCHA_HMAC_KEY=\"${GET_ALTCHA_HMAC_KEY}\" >> ${ENV_FILE}
6668

6769
isort:
6870
@echo "-> Apply isort changes to ensure proper imports ordering"

vulnerabilities/forms.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,7 @@ class AdvisorySearchForm(forms.Form):
4646
class ApiUserCreationForm(forms.ModelForm):
4747
"""Support a simplified creation for API-only users directly from the UI."""
4848

49-
captcha = AltchaField(
50-
floating=True,
51-
hidefooter=True,
52-
hidelogo=True,
53-
)
49+
captcha = AltchaField(floating=True, hidefooter=True)
5450

5551
class Meta:
5652
model = ApiUser
@@ -66,18 +62,15 @@ def __init__(self, *args, **kwargs):
6662
first_name_field = self.fields["first_name"]
6763
last_name_field = self.fields["last_name"]
6864
email_field.required = True
69-
email_field.label = "Email"
7065
email_field.widget.attrs["class"] = "input"
71-
email_field.widget.attrs["style"] = "width: 50%"
72-
email_field.widget.attrs["placeholder"] = "[email protected]"
73-
first_name_field.label = "First Name"
66+
email_field.widget.attrs["placeholder"] = "Email"
7467
first_name_field.widget.attrs["class"] = "input"
75-
first_name_field.widget.attrs["style"] = "width: 50%"
76-
first_name_field.widget.attrs["placeholder"] = "Jon"
77-
last_name_field.label = "Last Name"
68+
first_name_field.widget.attrs["placeholder"] = "First Name"
7869
last_name_field.widget.attrs["class"] = "input"
79-
last_name_field.widget.attrs["style"] = "width: 50%"
80-
last_name_field.widget.attrs["placeholder"] = "Doe"
70+
last_name_field.widget.attrs["placeholder"] = "Last Name"
71+
email_field.label = ""
72+
first_name_field.label = ""
73+
last_name_field.label = ""
8174

8275
def save(self, commit=True):
8376
return ApiUser.objects.create_api_user(
@@ -109,8 +102,4 @@ class PipelineSchedulePackageForm(forms.Form):
109102

110103

111104
class AdminLoginForm(AdminAuthenticationForm):
112-
captcha = AltchaField(
113-
floating=True,
114-
hidefooter=True,
115-
hidelogo=True,
116-
)
105+
captcha = AltchaField(floating=True, hidefooter=True)
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Generated by Django 4.2.22 on 2025-07-04 09:30
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("vulnerabilities", "0097_alter_advisoryv2_advisory_id_and_more"),
10+
]
11+
12+
operations = [
13+
migrations.AlterModelOptions(
14+
name="advisory",
15+
options={
16+
"ordering": ["date_published", "unique_content_id"],
17+
"verbose_name_plural": "Advisories",
18+
},
19+
),
20+
migrations.AlterModelOptions(
21+
name="advisoryalias",
22+
options={"ordering": ["alias"], "verbose_name_plural": "Advisory aliases"},
23+
),
24+
migrations.AlterModelOptions(
25+
name="advisoryseverity",
26+
options={
27+
"ordering": ["url", "scoring_system", "value"],
28+
"verbose_name_plural": "Advisory severities",
29+
},
30+
),
31+
migrations.AlterModelOptions(
32+
name="advisoryweakness",
33+
options={"verbose_name_plural": "Advisory weaknesses"},
34+
),
35+
migrations.AlterModelOptions(
36+
name="alias",
37+
options={"ordering": ["alias"], "verbose_name_plural": "Aliases"},
38+
),
39+
migrations.AlterModelOptions(
40+
name="vulnerabilityseverity",
41+
options={
42+
"ordering": ["url", "scoring_system", "value"],
43+
"verbose_name_plural": "Vulnerability severities",
44+
},
45+
),
46+
migrations.AlterModelOptions(
47+
name="weakness",
48+
options={"verbose_name_plural": "Weaknesses"},
49+
),
50+
]

vulnerabilities/models.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ class VulnerabilitySeverity(models.Model):
210210
objects = BaseQuerySet.as_manager()
211211

212212
class Meta:
213+
verbose_name_plural = "Vulnerability severities"
213214
ordering = ["url", "scoring_system", "value"]
214215

215216

@@ -534,6 +535,9 @@ class Weakness(models.Model):
534535

535536
cwe_by_id = {}
536537

538+
class Meta:
539+
verbose_name_plural = "Weaknesses"
540+
537541
def get_cwe(self, cwe_id):
538542
if not self.cwe_by_id:
539543
db = Database()
@@ -1310,6 +1314,7 @@ class Alias(models.Model):
13101314
objects = AliasQuerySet.as_manager()
13111315

13121316
class Meta:
1317+
verbose_name_plural = "Aliases"
13131318
ordering = ["alias"]
13141319

13151320
def __str__(self):
@@ -1414,6 +1419,7 @@ class Advisory(models.Model):
14141419
objects = AdvisoryQuerySet.as_manager()
14151420

14161421
class Meta:
1422+
verbose_name_plural = "Advisories"
14171423
ordering = ["date_published", "unique_content_id"]
14181424

14191425
def save(self, *args, **kwargs):
@@ -2523,6 +2529,7 @@ class AdvisorySeverity(models.Model):
25232529
objects = BaseQuerySet.as_manager()
25242530

25252531
class Meta:
2532+
verbose_name_plural = "Advisory severities"
25262533
ordering = ["url", "scoring_system", "value"]
25272534

25282535

@@ -2535,6 +2542,9 @@ class AdvisoryWeakness(models.Model):
25352542

25362543
cwe_by_id = {}
25372544

2545+
class Meta:
2546+
verbose_name_plural = "Advisory weaknesses"
2547+
25382548
def get_cwe(self, cwe_id):
25392549
if not self.cwe_by_id:
25402550
db = Database()
@@ -2627,6 +2637,7 @@ class AdvisoryAlias(models.Model):
26272637
)
26282638

26292639
class Meta:
2640+
verbose_name_plural = "Advisory aliases"
26302641
ordering = ["alias"]
26312642

26322643
def __str__(self):

vulnerabilities/templates/api_user_creation_form.html

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
VulnerableCode API key request
55
{% endblock %}
66

7+
8+
79
{% block content %}
810
<section class="section pt-0">
911
{% for message in messages %}
@@ -44,31 +46,15 @@ <h1 class="title is-4">VulnerableCode API Key Request</h1>
4446

4547
<br/>
4648
<div class="columns is-centered">
47-
<div class="column is-half">
49+
<div class="column is-one-third">
4850
<form method = "post">
4951
{% csrf_token %}
50-
<div class="field">
51-
<div class="control">
52-
<input class="input" placeholder="Email" type="email" name="email" id="{{form.email.id_for_label}}"
53-
autofocus required >
54-
</div>
55-
</div>
56-
<div class="field">
57-
<div class="control">
58-
<input class="input" placeholder="First Name" type="text" name="first_name" id="{{form.first_name.id_for_label}}"
59-
autofocus required>
60-
</div>
61-
</div>
62-
<div class="field">
63-
<div class="control">
64-
<input class="input" placeholder="Last Name" type="text" name="last_name" id="{{form.last_name.id_for_label}}"
65-
autofocus required>
66-
</div>
67-
</div>
68-
<div class="field">
69-
{{ form.captcha }}
70-
</div>
71-
<input class="button is-link mt-5" type="submit" value="Request my API Key">
52+
{% for field in form %}
53+
<p class="mb-4">
54+
{{ field }}
55+
</p>
56+
{% endfor %}
57+
<input class="button is-link mt-2" type="submit" value="Request my API Key">
7258
</form>
7359
</div>
7460
</div>

vulnerablecode/settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838

3939
CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=[])
4040

41+
# Altcha 32-byte hexadecimal key
42+
43+
ALTCHA_HMAC_KEY = env.str("ALTCHA_HMAC_KEY")
44+
4145
# SECURITY WARNING: do not run with debug turned on in production
4246
DEBUG = env.bool("VULNERABLECODE_DEBUG", default=False)
4347

0 commit comments

Comments
 (0)