Skip to content

core: custom avatar url improvements#10525

Merged
dominic-r merged 9 commits intogoauthentik:mainfrom
konradmoesch:custom_avatar_url_improvements
Dec 2, 2025
Merged

core: custom avatar url improvements#10525
dominic-r merged 9 commits intogoauthentik:mainfrom
konradmoesch:custom_avatar_url_improvements

Conversation

@konradmoesch
Copy link
Contributor

@konradmoesch konradmoesch commented Jul 16, 2024

Details

This commit improves the custom avatar url logic. Now, the custom host has the same availability check as previously used in the gravatar mode. If the host is not available, fallback to another avatar_mode is possible.
Also falls back to another mode if 404 is returned.
Prior to this PR, no fallback to another mode was possible (not checked whether the image really exists)

I also changed mode_gravatar to use the mode_url implementation. Other modes/aliases, e.g. for mode_libravatar (https://seccdn.libravatar.org/avatar/%(mail_hash)s?d=404) or mode_dicebear (https://api.dicebear.com/9.x/pixel-art/svg?seed=%(mail_hash)), would also be possible.

closes #10100

Testing this PR

If you want to test the PR, you simply have to set a custom avatar url (e.g. https://seccdn.libravatar.org/avatar/%(mail_hash)s?d=404,gravatar,initials) and an e-mail address that has a picture uploaded. The picture should now be shown in authentik.
Then, you can set the e-mail address to some returning 404 or the avatar url to something that returns an error/is not reachable. There should be a fallback to the next configured avatar.


Checklist

If an API change has been made

  • [ ] The API schema has been updated (make gen-build)

If changes to the frontend have been made

  • [ ] The code has been formatted (make web)

If applicable

  • [ ] The documentation has been updated
  • [ ] The documentation has been formatted (make website)

@konradmoesch konradmoesch requested a review from a team as a code owner July 16, 2024 17:11
@netlify
Copy link

netlify bot commented Jul 16, 2024

Deploy Preview for authentik-storybook ready!

Name Link
🔨 Latest commit 231e4df
🔍 Latest deploy log https://app.netlify.com/projects/authentik-storybook/deploys/690bfa07f5a12c0008645a3d
😎 Deploy Preview https://deploy-preview-10525--authentik-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Jul 16, 2024

Deploy Preview for authentik-docs ready!

Name Link
🔨 Latest commit 231e4df
🔍 Latest deploy log https://app.netlify.com/projects/authentik-docs/deploys/690bfa079756190008778cb5
😎 Deploy Preview https://deploy-preview-10525--authentik-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@dominic-r
Copy link
Member

dominic-r commented Jul 16, 2024

I would personally replace the string concatenation with f-strings. ex:

- cache_key_hostname_available = "goauthentik.io/lib/avatars/" + hostname + "/available"
+ cache_key_hostname_available = f"goauthentik.io/lib/avatars/{hostname}/available"

would make the code more readable but im not too sure if the rest of the codebase uses this

@rissson rissson changed the title Custom avatar url improvements core: custom avatar url improvements Jul 19, 2024
@codecov
Copy link

codecov bot commented Jul 19, 2024

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.95%. Comparing base (34279ba) to head (231e4df).
⚠️ Report is 291 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #10525      +/-   ##
==========================================
+ Coverage   92.92%   92.95%   +0.03%     
==========================================
  Files         869      869              
  Lines       48016    48113      +97     
==========================================
+ Hits        44618    44724     +106     
+ Misses       3398     3389       -9     
Flag Coverage Δ
e2e 45.15% <13.33%> (-0.01%) ⬇️
integration 23.09% <1.66%> (-0.11%) ⬇️
unit 91.10% <100.00%> (+0.03%) ⬆️
unit-migrate 91.15% <100.00%> (+0.03%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@konradmoesch
Copy link
Contributor Author

I would personally replace the string concatenation with f-strings.

Thanks, good idea! Done

Does anyone know why so many workflows failed?
Are there issues with the ci? I see many command not found errors, e.g. this one:

0.516 sh: 1: docusaurus: not found

https://github.com/goauthentik/authentik/actions/runs/9961194879/job/27661861761#step:8:964

@konradmoesch
Copy link
Contributor Author

Seems I can't request a review, and none seems to be selected.
This PR is finished and ready to be reviewed, but I did not get any comments for over 3 weeks now.
Could I get some feedback? Do you need sth. else?

@rissson
Copy link
Member

rissson commented Aug 9, 2024

Seems I can't request a review, and none seems to be selected. This PR is finished and ready to be reviewed, but I did not get any comments for over 3 weeks now. Could I get some feedback? Do you need sth. else?

We have a bit of a backlog of PR. We'll get to this one eventually. Sorry for the delay

@konradmoesch
Copy link
Contributor Author

Another month is over, is there anything I can do?
This is a very small PR with very little changed / new LOC...

@konradmoesch
Copy link
Contributor Author

This PR is now five months open, I hope it eventually gets a review and merged.

I am now unavailable and offline for a longer period of time. Maybe this can be merged without further changes? Otherwise I am grateful for someone to pick up the work. It's just a couple of lines of code for replicating the gravatar behavior, after all.
One could go a step further and use the generic uri behavior instead of the gravatar specific code. This would improve code quality and simplicity further imo

@regalialong
Copy link

@rissson I know a ping like this is a faux pas but I think this PR fell through the cracks, could you guys take a quick peek? This isn't even 50 lines but would be really helpful for custom avatar hosts :)

@netlify
Copy link

netlify bot commented Oct 25, 2025

Deploy Preview for authentik-integrations ready!

Name Link
🔨 Latest commit 231e4df
🔍 Latest deploy log https://app.netlify.com/projects/authentik-integrations/deploys/690bfa0744d1720008b4b86c
😎 Deploy Preview https://deploy-preview-10525--authentik-integrations.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Member

@dominic-r dominic-r left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there, added just a few comments on this PR with some essential things to fix. Pinging @rissson for additional things

@dominic-r dominic-r moved this from Todo to Needs review in authentik Core Oct 27, 2025
@dominic-r dominic-r moved this from Needs review to In review in authentik Core Oct 27, 2025
@rissson rissson moved this from In review to Needs review in authentik Core Nov 3, 2025
@rissson rissson moved this from Needs review to In Progress in authentik Core Nov 3, 2025
@rissson rissson self-assigned this Nov 3, 2025
@rissson rissson requested a review from BeryJu November 4, 2025 12:33
Copy link
Member

@dominic-r dominic-r left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for this contribution and sorry for the time it took to get to this PR. LGTM

@rissson rissson moved this from In Progress to Needs review in authentik Core Nov 6, 2025
@rissson rissson added this to the Release 2025.12 milestone Nov 6, 2025
@dominic-r dominic-r merged commit 39f8969 into goauthentik:main Dec 2, 2025
96 checks passed
@github-project-automation github-project-automation bot moved this from Needs review to Done in authentik Core Dec 2, 2025
rissson pushed a commit to atereshkin/authentik that referenced this pull request Dec 3, 2025
Co-authored-by: Dominic R <dominic@sdko.org>
GirlBossRush added a commit that referenced this pull request Dec 9, 2025
* enterprise: add users and events export (reports app)

* enterprise/reports: replace assert with AsertionError so that the assumption check is not lost when compiling to optimised byte code

* enterprise/reports: use ConditionalInheritance with ExportMixin to make reduce coupling of enterprise with the rest of authentik

* enterprise/reports: use custom iterative File to save data export instead of accessing default_storage directly, so all the FileField.save logic can run correctly (e.g. creating directories)

* enterprise/reports: change app label to simply "authentik_reports"

* wip

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>

* update for new file api

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>

* lint

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>

* Apply suggestions from code review

Signed-off-by: Dominic R <dominic@sdko.org>

* wip

* sources/oauth: save returned oauth refresh tokens and add slack provider (#18501)

* sources/oauth: save returned oauth refresh tokens

* Update authentik/sources/oauth/models.py

Co-authored-by: Jens L. <jens@goauthentik.io>
Signed-off-by: Connor Peshek <connor@connorpeshek.me>

* lint

* add tests

* fix proper id setting

* update id test

---------

Signed-off-by: Connor Peshek <connor@connorpeshek.me>
Co-authored-by: connor peshek <connorpeshek@unknown1641287c8f5d.attlocal.net>
Co-authored-by: Jens L. <jens@goauthentik.io>
Co-authored-by: connor peshek <connorpeshek@connors-MacBook-Pro.local>

* core: custom avatar url improvements (#10525)

Co-authored-by: Dominic R <dominic@sdko.org>

* website/integrations: add salesforce (#18516)

Co-authored-by: connor peshek <connorpeshek@connors-MacBook-Pro.local>
Co-authored-by: dewi-tik <dewi@goauthentik.io>
Co-authored-by: Dominic R <dominic@sdko.org>

* endpoints: implement endpoint stage (#18468)

* endpoints: implement endpoint stage

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* format

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* fix mismatched label

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* fix url in mdm config

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* rephrase

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* and API & UI

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* add deprecated support and deprecate gdtc

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* add stage mode

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* fixup

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* rework stage slightly, add frontend

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* include jwks, add iat and exp

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* fix tests

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* set kid

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* include device details in event list

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* format

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* implement device summary

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* add remaining tables

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* revert sanitize

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* fix uuid format issues

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

---------

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* web/flows: update default background image (#18540)

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* website/integrations: add hoop.dev (#17868)

Co-authored-by: iops <iops@syneforge.com>
Co-authored-by: Dominic R <dominic@sdko.org>

* website: Docusaurus 3.9.2 (#18506)

* endpoints/stage: v2, better error handling, more settings (#18545)

* add options, idle fallback

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* delete other device tokens during enroll

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* better error handling

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

---------

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* website: Glossary (#16007)

* website: Glossary

fix minor issues

wip

Apply suggestion from @dominic-r

Signed-off-by: Dominic R <dominic@sdko.org>

anchor to param

wip

wip

at least the lockfile changes now

sure

a-z first as tana asked

idk why i switched in the first place

wip

wip

lock

lockfiles are hard

wip

please work

no have?

Revert "no have?"

This reverts commit 743dbc1.

* changed to sentence-case capitalization

---------

Co-authored-by: Tana M Berry <tana@goauthentik.io>

* web/i18n: Locale Context Merge Branch (#18426)

* web: Update fonts to Patternfly 5 variants.

* Fix order of heading override.

* web: Flesh out locale context.

* Fix Han pattern.

* Remove comment.

* Add additional regional codes.

* Clarify comment.

* Fix typos.

* web/i18n: Add locale-specific font overrides.

* Fix stale session in locale lifecycle.

* core, web: Fix Han language codes.

* Fix warnings about invalid BCP language code.

* Build translations.

* Add locale relative labels.

* Add locale translations for Finnish and Portuguese.

* Fix XLIFF errors.

* Clean up labels.

* Tidy regions.

* Match region comment.

* Update extracted values.

* Fix locale switch not triggering on source language.

* Split labels.

* Clean up labels.

* providers/scim: cache ServiceProviderConfig (#18047)

* Update authentik/enterprise/reports/api/reports.py

Co-authored-by: Jens L. <jens@beryju.org>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* enterprise/reports: got rid of unnecessary method-level import

* enterprise/reports: celan up code duplication in data export generation (invoke viewset.filter_queryset directly instead of replicating it)

* enterprise/reports: add check for app label when switching on content types

* enterprise/reports: make hyperlink field on Notification larger so it can fit the security token in the export file URL

* enterprise/reports: add is_superuser back in users export

* enterprise/reports: split tests into multiple files

* Apply suggestions from code review

Signed-off-by: Dewi Roberts <dewi@goauthentik.io>

* Fixed prettier issue

* Update web/src/admin/events/DataExportListPage.ts

Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* Update web/src/admin/events/DataExportListPage.ts

Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* Update web/src/admin/events/EventListPage.ts

Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* Update web/src/admin/reports/ExportButton.ts

Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* Update web/src/admin/reports/ExportButton.ts

Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* Update web/src/admin/users/UserListPage.ts

Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* Update web/src/elements/notifications/NotificationDrawer.ts

Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* Update web/src/elements/sidebar/SidebarItem.css

Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>

* enterprise/reports: resolve code review merge errors

* enterprise/reports: remove the export button from the dom flow (by settings display:none) when there's no license

* enterprise/reports: improve docs

* include notification link in email

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* format

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* enterprise/reports: remove assignment assertion in ExportButton.ts

* cleanup tests after perm update

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

---------

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Dominic R <dominic@sdko.org>
Signed-off-by: Connor Peshek <connor@connorpeshek.me>
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Signed-off-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>
Signed-off-by: Dewi Roberts <dewi@goauthentik.io>
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Co-authored-by: Dominic R <dominic@sdko.org>
Co-authored-by: Connor Peshek <connor@connorpeshek.me>
Co-authored-by: connor peshek <connorpeshek@unknown1641287c8f5d.attlocal.net>
Co-authored-by: Jens L. <jens@goauthentik.io>
Co-authored-by: connor peshek <connorpeshek@connors-MacBook-Pro.local>
Co-authored-by: Konrad Mösch <konrad@moesch.org>
Co-authored-by: dewi-tik <dewi@goauthentik.io>
Co-authored-by: shcherbak <ju.shcherbak@gmail.com>
Co-authored-by: iops <iops@syneforge.com>
Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
Co-authored-by: Tana M Berry <tana@goauthentik.io>
Co-authored-by: Jens L. <jens@beryju.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

custom avatar url: fallback not working

5 participants