core: custom avatar url improvements#10525
Conversation
✅ Deploy Preview for authentik-storybook ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for authentik-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
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 |
Codecov Report✅ All modified and coverable lines are covered by tests. 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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Thanks, good idea! Done Does anyone know why so many workflows failed?
https://github.com/goauthentik/authentik/actions/runs/9961194879/job/27661861761#step:8:964 |
|
Seems I can't request a review, and none seems to be selected. |
We have a bit of a backlog of PR. We'll get to this one eventually. Sorry for the delay |
|
Another month is over, is there anything I can do? |
|
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. |
|
@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 :) |
✅ Deploy Preview for authentik-integrations ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Co-authored-by: Dominic R <dominic@sdko.org>
* 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>
Details
This commit improves the custom avatar url logic. Now, the custom host has the same availability check as previously used in the
gravatarmode. If the host is not available, fallback to anotheravatar_modeis 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_gravatarto use themode_urlimplementation. Other modes/aliases, e.g. formode_libravatar(https://seccdn.libravatar.org/avatar/%(mail_hash)s?d=404) ormode_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
ak test authentik/)make lint-fix)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)