* first approach
* add cc and bcc support, better ui
* remove unnecessary data return
* add template support
* fix linting
* do the ui
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* display invite info in InvitationSendEmailForm.ts
* Select the invitation template by default
* Fix linting
* fix tests
* Add tests, clean code
* Add docs
* fix link
* Make the UI less disgusting
* Make the UI less disgusting
* Apply suggestions from code review
Co-authored-by: Dewi Roberts <dewi@goauthentik.io>
Signed-off-by: Marcelo Elizeche Landó <marce@melizeche.com>
* small formatting fix
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* Use writeToClipboard function, better wording for CC and BCC
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Signed-off-by: Marcelo Elizeche Landó <marce@melizeche.com>
Co-authored-by: Jens Langhammer <jens@goauthentik.io>
Co-authored-by: Dewi Roberts <dewi@goauthentik.io>
* translate: Translate django.po in it_IT [Manual Sync]
83% of minimum 60% translated source file: 'django.po'
on 'it_IT'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate en.xlf in it_IT [Manual Sync]
72% of minimum 60% translated source file: 'en.xlf'
on 'it_IT'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate en.xlf in cs_CZ [Manual Sync]
82% of minimum 60% translated source file: 'en.xlf'
on 'cs_CZ'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate django.po in cs_CZ [Manual Sync]
82% of minimum 60% translated source file: 'django.po'
on 'cs_CZ'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate en.xlf in tr_TR [Manual Sync]
63% of minimum 60% translated source file: 'en.xlf'
on 'tr_TR'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate django.po in tr_TR [Manual Sync]
67% of minimum 60% translated source file: 'django.po'
on 'tr_TR'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate en.xlf in zh-Hans [Manual Sync]
94% of minimum 60% translated source file: 'en.xlf'
on 'zh-Hans'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate django.po in zh-Hans [Manual Sync]
97% of minimum 60% translated source file: 'django.po'
on 'zh-Hans'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate en.xlf in ru_RU [Manual Sync]
63% of minimum 60% translated source file: 'en.xlf'
on 'ru_RU'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate django.po in ru_RU [Manual Sync]
66% of minimum 60% translated source file: 'django.po'
on 'ru_RU'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
translate: Translate en.xlf in ko_KR [Manual Sync]
60% of minimum 60% translated source file: 'en.xlf'
on 'ko_KR'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate en.xlf in ja_JP [Manual Sync]
83% of minimum 60% translated source file: 'en.xlf'
on 'ja_JP'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate django.po in ja_JP [Manual Sync]
90% of minimum 60% translated source file: 'django.po'
on 'ja_JP'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate en.xlf in de_DE [Manual Sync]
77% of minimum 60% translated source file: 'en.xlf'
on 'de_DE'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate django.po in de_DE [Manual Sync]
86% of minimum 60% translated source file: 'django.po'
on 'de_DE'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate en.xlf in es_ES [Manual Sync]
74% of minimum 60% translated source file: 'en.xlf'
on 'es_ES'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate django.po in es_ES [Manual Sync]
82% of minimum 60% translated source file: 'django.po'
on 'es_ES'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate django.po in fr_FR [Manual Sync]
95% of minimum 60% translated source file: 'django.po'
on 'fr_FR'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate en.xlf in fr_FR [Manual Sync]
91% of minimum 60% translated source file: 'en.xlf'
on 'fr_FR'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate django.po in fi_FI [Manual Sync]
93% of minimum 60% translated source file: 'django.po'
on 'fi_FI'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate en.xlf in fi_FI [Manual Sync]
85% of minimum 60% translated source file: 'en.xlf'
on 'fi_FI'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* translate: Translate django.po in pt_BR [Manual Sync]
96% of minimum 60% translated source file: 'django.po'
on 'pt_BR'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* translate: Translate en.xlf in pt_BR [Manual Sync]
92% of minimum 60% translated source file: 'en.xlf'
on 'pt_BR'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* This (temporary) change is needed to prevent the unit tests from failing.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
* Revert "This (temporary) change is needed to prevent the unit tests from failing."
This reverts commit dddde09be5.
* website: fix bad escaping of URLs in release notes
## What
Fixes bad escaping of URLs in the release notes that resulted in mangled output.
v2024.6.4 had entries that looked like this:
```
##### `GET` /providers/google_workspace/{#123;id}#125;/
```
v2025.4.md had entries that looked like this:
```
##### `GET` /policies/unique_password/{#125;#123;policy_uuid}/
```
A couple of straightforward search-and-replaces has fixed the issue.
## Notes
Two of the release notes had bad escaping of URLs. I'm not sure how the error was made or got past,
but it was obvious when visiting the page.
@Beryju suggested that the bug is due to our using `{...}` to symbolize parameters in a URL while
Docusaurus wants to interpret `{...}` as an internal template instruction, resulting in odd
behavior. In either case, docusarus interpreted the hashtagged entries as links to unrelated issues
in Github (the same two issues, which were "bump version of pylint" and "bump version of sentry"),
which could be very confusing.
The inconsistencies between the two releases, and the working releases, suggests that the error was
introduced manually.
* Adding Object.assign polyfill to sfe to handling bundling issue.
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* This (temporary) change is needed to prevent the unit tests from failing.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
* Revert "This (temporary) change is needed to prevent the unit tests from failing."
This reverts commit dddde09be5.
* website: fix bad escaping of URLs in release notes
## What
Fixes bad escaping of URLs in the release notes that resulted in mangled output.
v2024.6.4 had entries that looked like this:
```
##### `GET` /providers/google_workspace/{#123;id}#125;/
```
v2025.4.md had entries that looked like this:
```
##### `GET` /policies/unique_password/{#125;#123;policy_uuid}/
```
A couple of straightforward search-and-replaces has fixed the issue.
## Notes
Two of the release notes had bad escaping of URLs. I'm not sure how the error was made or got past,
but it was obvious when visiting the page.
@Beryju suggested that the bug is due to our using `{...}` to symbolize parameters in a URL while
Docusaurus wants to interpret `{...}` as an internal template instruction, resulting in odd
behavior. In either case, docusarus interpreted the hashtagged entries as links to unrelated issues
in Github (the same two issues, which were "bump version of pylint" and "bump version of sentry"),
which could be very confusing.
The inconsistencies between the two releases, and the working releases, suggests that the error was
introduced manually.
* web/admin: source-forms-not-rendering
# What
Replaces the logic for determining types in the `StrictUnsafe` directive such that all types are assessed for `isProperty` first, and if it’s not a property, `String()` types are passed as an attribute, not a property. Just checking the type for `Boolean` is not sufficient.
Replaces the logic for rendering the SourceForms to ensure that forms that do not need a model name are not passed a model name. Run-time type-checking was failing for forms that do not take a model name because they already know it.
# Why
This looks like a case of excessive cleverness and insufficient testing. Trying to abstract the creation of the models down to a single call without breaking the code is an admirable goal, but this is fragile code because of the demands of the different models, especially the OAuth2 models which have different names depending on the uniqueness of the source (Discord vs Azure vs Mailcow, etc.).
# Incomplete
The code also suffers from a second level of cleverness in that it delays the render of the form until the modal is made visible. This works for the modal for creating new sources, and it seems to work fine on the “View One Source -\> \[Edit\]” case, but the edit button on the SourcesList page does not work.
* Makes edit button work on SourceListPage again.
* Provide proper text in the proper location to properly populate the 'Update' button text.
* Just bumping the number to restart testing.