Skip to content

Commit

Permalink
fix bugs
Browse files Browse the repository at this point in the history
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
  • Loading branch information
BeryJu committed Feb 2, 2025
1 parent 80b8f9f commit b075a1c
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 6 deletions.
2 changes: 1 addition & 1 deletion authentik/enterprise/providers/ssf/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ def prepare_event_payload(self, type: EventTypes, event_data: dict, **kwargs) ->
jti = uuid4()
return {

Check warning on line 128 in authentik/enterprise/providers/ssf/models.py

View check run for this annotation

Codecov / codecov/patch

authentik/enterprise/providers/ssf/models.py#L127-L128

Added lines #L127 - L128 were not covered by tests
"uuid": jti,
"stream": self,
"stream_id": str(self.pk),
"type": type,
"payload": {
"jti": jti.hex,
Expand Down
4 changes: 2 additions & 2 deletions authentik/enterprise/providers/ssf/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def send_ssf_event(
payload = []
if not stream_filter:
stream_filter = {}
stream_filter["events_requested__in"] = [event_type]
stream_filter["events_requested__contains"] = [event_type]
for stream in Stream.objects.filter(**stream_filter):
event_data = stream.prepare_event_payload(event_type, data, **extra_data)
payload.append((str(stream.uuid), event_data))

Check warning on line 30 in authentik/enterprise/providers/ssf/tasks.py

View check run for this annotation

Codecov / codecov/patch

authentik/enterprise/providers/ssf/tasks.py#L29-L30

Added lines #L29 - L30 were not covered by tests
Expand All @@ -36,7 +36,7 @@ def _send_ssf_event(event_data: list[tuple[str, dict]]):
tasks = []
for stream, data in event_data:
event = StreamEvent.objects.create(**data)
tasks.append(send_single_ssf_event.si(str(stream.uuid), str(event.id)))
tasks.append(send_single_ssf_event.si(stream, str(event.uuid)))

Check warning on line 39 in authentik/enterprise/providers/ssf/tasks.py

View check run for this annotation

Codecov / codecov/patch

authentik/enterprise/providers/ssf/tasks.py#L38-L39

Added lines #L38 - L39 were not covered by tests
main_task = group(*tasks)
main_task()

Expand Down
4 changes: 2 additions & 2 deletions authentik/enterprise/providers/ssf/tests/test_stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ def test_stream_add(self):
data={
"iss": "https://screw-fotos-bracelets-longitude.trycloudflare.com/.well-known/ssf-configuration/abm-ssf/5",
"aud": [
"https://federation.apple.com/feeds/business/caep/2034455812/871ada94-90f6-4cdc-9996-a9dd8d62ef14"
"https://app.authentik.company"
],
"delivery": {
"method": "https://schemas.openid.net/secevent/risc/delivery-method/push",
"endpoint_url": "https://federation.apple.com/feeds/business/caep/2034455812/871ada94-90f6-4cdc-9996-a9dd8d62ef14",
"endpoint_url": "https://app.authentik.company",
},
"events_requested": [
"https://schemas.openid.net/secevent/caep/event-type/credential-change",
Expand Down
8 changes: 7 additions & 1 deletion authentik/enterprise/providers/ssf/views/stream.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from django.urls import reverse
from rest_framework.exceptions import PermissionDenied
from rest_framework.fields import CharField, ChoiceField, ListField, SerializerMethodField
from rest_framework.request import Request
from rest_framework.response import Response
Expand Down Expand Up @@ -32,7 +33,6 @@ class StreamSerializer(ModelSerializer):
aud = ListField(child=CharField())

def create(self, validated_data):
# todo: rbac check
provider: SSFProvider = validated_data["provider"]
iss = self.context["request"].build_absolute_uri(

Check warning on line 37 in authentik/enterprise/providers/ssf/views/stream.py

View check run for this annotation

Codecov / codecov/patch

authentik/enterprise/providers/ssf/views/stream.py#L36-L37

Added lines #L36 - L37 were not covered by tests
reverse(
Expand All @@ -42,6 +42,8 @@ def create(self, validated_data):
},
)
)
# Ensure that streams always get SET verification events sent to them
validated_data["events_requested"].append(EventTypes.SET_VERIFICATION)
return super().create(

Check warning on line 47 in authentik/enterprise/providers/ssf/views/stream.py

View check run for this annotation

Codecov / codecov/patch

authentik/enterprise/providers/ssf/views/stream.py#L46-L47

Added lines #L46 - L47 were not covered by tests
{
"delivery_method": validated_data["delivery"]["method"],
Expand Down Expand Up @@ -89,6 +91,10 @@ class StreamView(SSFView):
def post(self, request: Request, *args, **kwargs) -> Response:
stream = StreamSerializer(data=request.data, context={"request": request})
stream.is_valid(raise_exception=True)
if not request.user.has_perm("authentik_providers_ssf.add_stream", self.provider):
raise PermissionDenied(

Check warning on line 95 in authentik/enterprise/providers/ssf/views/stream.py

View check run for this annotation

Codecov / codecov/patch

authentik/enterprise/providers/ssf/views/stream.py#L92-L95

Added lines #L92 - L95 were not covered by tests
"User does not have permission to create stream for this provider."
)
instance: Stream = stream.save(provider=self.provider)
send_ssf_event(

Check warning on line 99 in authentik/enterprise/providers/ssf/views/stream.py

View check run for this annotation

Codecov / codecov/patch

authentik/enterprise/providers/ssf/views/stream.py#L98-L99

Added lines #L98 - L99 were not covered by tests
EventTypes.SET_VERIFICATION,
Expand Down

0 comments on commit b075a1c

Please sign in to comment.