Merge branch 'main' into multi-tenant-django-tenants
This commit is contained in:
commit
0b4622a0fd
|
@ -91,13 +91,14 @@ jobs:
|
||||||
git checkout $GITHUB_SHA
|
git checkout $GITHUB_SHA
|
||||||
# Delete previous poetry env
|
# Delete previous poetry env
|
||||||
rm -rf $(poetry env info --path)
|
rm -rf $(poetry env info --path)
|
||||||
poetry install
|
|
||||||
- name: Setup authentik env (ensure latest deps are installed)
|
- name: Setup authentik env (ensure latest deps are installed)
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
with:
|
with:
|
||||||
postgresql_version: ${{ matrix.psql }}
|
postgresql_version: ${{ matrix.psql }}
|
||||||
- name: migrate to latest
|
- name: migrate to latest
|
||||||
run: poetry run python -m lifecycle.migrate
|
run: |
|
||||||
|
poetry install
|
||||||
|
poetry run python -m lifecycle.migrate
|
||||||
test-unittest:
|
test-unittest:
|
||||||
name: test-unittest - PostgreSQL ${{ matrix.psql }}
|
name: test-unittest - PostgreSQL ${{ matrix.psql }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
@ -27,10 +27,10 @@ jobs:
|
||||||
- name: Setup authentik env
|
- name: Setup authentik env
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v2
|
uses: github/codeql-action/autobuild@v3
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
authentik takes security very seriously. We follow the rules of [responsible disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure), and we urge our community to do so as well, instead of reporting vulnerabilities publicly. This allows us to patch the issue quickly, announce it's existence and release the fixed version.
|
authentik takes security very seriously. We follow the rules of [responsible disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure), and we urge our community to do so as well, instead of reporting vulnerabilities publicly. This allows us to patch the issue quickly, announce it's existence and release the fixed version.
|
||||||
|
|
||||||
|
## Independent audits and pentests
|
||||||
|
|
||||||
|
In May/June of 2023 [Cure53](https://cure53.de) conducted an audit and pentest. The [results](https://cure53.de/pentest-report_authentik.pdf) are published on the [Cure53 website](https://cure53.de/#publications-2023). For more details about authentik's response to the findings of the audit refer to [2023-06 Cure53 Code audit](https://goauthentik.io/docs/security/2023-06-cure53).
|
||||||
|
|
||||||
## What authentik classifies as a CVE
|
## What authentik classifies as a CVE
|
||||||
|
|
||||||
CVE (Common Vulnerability and Exposure) is a system designed to aggregate all vulnerabilities. As such, a CVE will be issued when there is a either vulnerability or exposure. Per NIST, A vulnerability is:
|
CVE (Common Vulnerability and Exposure) is a system designed to aggregate all vulnerabilities. As such, a CVE will be issued when there is a either vulnerability or exposure. Per NIST, A vulnerability is:
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
{% block head_before %}
|
{% block head_before %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<link rel="stylesheet" type="text/css" href="{% static 'dist/authentik.css' %}">
|
<link rel="stylesheet" type="text/css" href="{% static 'dist/authentik.css' %}">
|
||||||
<link rel="stylesheet" type="text/css" href="{% static 'dist/theme-dark.css' %}" media="(prefers-color-scheme: dark)">
|
|
||||||
<link rel="stylesheet" type="text/css" href="{% static 'dist/custom.css' %}" data-inject>
|
<link rel="stylesheet" type="text/css" href="{% static 'dist/custom.css' %}" data-inject>
|
||||||
<script src="{% static 'dist/poly.js' %}?version={{ version }}" type="module"></script>
|
<script src="{% static 'dist/poly.js' %}?version={{ version }}" type="module"></script>
|
||||||
<script src="{% static 'dist/standalone/loading/index.js' %}?version={{ version }}" type="module"></script>
|
<script src="{% static 'dist/standalone/loading/index.js' %}?version={{ version }}" type="module"></script>
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
{% block head_before %}
|
{% block head_before %}
|
||||||
<link rel="prefetch" href="/static/dist/assets/images/flow_background.jpg" />
|
<link rel="prefetch" href="/static/dist/assets/images/flow_background.jpg" />
|
||||||
<link rel="stylesheet" type="text/css" href="{% static 'dist/patternfly.min.css' %}">
|
<link rel="stylesheet" type="text/css" href="{% static 'dist/patternfly.min.css' %}">
|
||||||
|
<link rel="stylesheet" type="text/css" href="{% static 'dist/theme-dark.css' %}" media="(prefers-color-scheme: dark)">
|
||||||
{% include "base/header_js.html" %}
|
{% include "base/header_js.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
25
go.mod
25
go.mod
|
@ -9,16 +9,16 @@ require (
|
||||||
github.com/getsentry/sentry-go v0.25.0
|
github.com/getsentry/sentry-go v0.25.0
|
||||||
github.com/go-http-utils/etag v0.0.0-20161124023236-513ea8f21eb1
|
github.com/go-http-utils/etag v0.0.0-20161124023236-513ea8f21eb1
|
||||||
github.com/go-ldap/ldap/v3 v3.4.6
|
github.com/go-ldap/ldap/v3 v3.4.6
|
||||||
github.com/go-openapi/runtime v0.26.0
|
github.com/go-openapi/runtime v0.26.2
|
||||||
github.com/go-openapi/strfmt v0.21.9
|
github.com/go-openapi/strfmt v0.21.9
|
||||||
github.com/golang-jwt/jwt v3.2.2+incompatible
|
github.com/golang-jwt/jwt v3.2.2+incompatible
|
||||||
github.com/google/uuid v1.4.0
|
github.com/google/uuid v1.5.0
|
||||||
github.com/gorilla/handlers v1.5.2
|
github.com/gorilla/handlers v1.5.2
|
||||||
github.com/gorilla/mux v1.8.1
|
github.com/gorilla/mux v1.8.1
|
||||||
github.com/gorilla/securecookie v1.1.2
|
github.com/gorilla/securecookie v1.1.2
|
||||||
github.com/gorilla/sessions v1.2.2
|
github.com/gorilla/sessions v1.2.2
|
||||||
github.com/gorilla/websocket v1.5.1
|
github.com/gorilla/websocket v1.5.1
|
||||||
github.com/jellydator/ttlcache/v3 v3.1.0
|
github.com/jellydator/ttlcache/v3 v3.1.1
|
||||||
github.com/mitchellh/mapstructure v1.5.0
|
github.com/mitchellh/mapstructure v1.5.0
|
||||||
github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484
|
github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484
|
||||||
github.com/pires/go-proxyproto v0.7.0
|
github.com/pires/go-proxyproto v0.7.0
|
||||||
|
@ -46,16 +46,16 @@ require (
|
||||||
github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect
|
github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect
|
||||||
github.com/go-http-utils/fresh v0.0.0-20161124030543-7231e26a4b27 // indirect
|
github.com/go-http-utils/fresh v0.0.0-20161124030543-7231e26a4b27 // indirect
|
||||||
github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a // indirect
|
github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a // indirect
|
||||||
github.com/go-logr/logr v1.2.3 // indirect
|
github.com/go-logr/logr v1.3.0 // indirect
|
||||||
github.com/go-logr/stdr v1.2.2 // indirect
|
github.com/go-logr/stdr v1.2.2 // indirect
|
||||||
github.com/go-openapi/analysis v0.21.4 // indirect
|
github.com/go-openapi/analysis v0.21.4 // indirect
|
||||||
github.com/go-openapi/errors v0.20.4 // indirect
|
github.com/go-openapi/errors v0.20.4 // indirect
|
||||||
github.com/go-openapi/jsonpointer v0.19.5 // indirect
|
github.com/go-openapi/jsonpointer v0.20.0 // indirect
|
||||||
github.com/go-openapi/jsonreference v0.20.0 // indirect
|
github.com/go-openapi/jsonreference v0.20.2 // indirect
|
||||||
github.com/go-openapi/loads v0.21.2 // indirect
|
github.com/go-openapi/loads v0.21.2 // indirect
|
||||||
github.com/go-openapi/spec v0.20.8 // indirect
|
github.com/go-openapi/spec v0.20.11 // indirect
|
||||||
github.com/go-openapi/swag v0.22.3 // indirect
|
github.com/go-openapi/swag v0.22.4 // indirect
|
||||||
github.com/go-openapi/validate v0.22.1 // indirect
|
github.com/go-openapi/validate v0.22.3 // indirect
|
||||||
github.com/golang/protobuf v1.5.3 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
github.com/josharian/intern v1.0.0 // indirect
|
github.com/josharian/intern v1.0.0 // indirect
|
||||||
|
@ -69,9 +69,10 @@ require (
|
||||||
github.com/prometheus/common v0.44.0 // indirect
|
github.com/prometheus/common v0.44.0 // indirect
|
||||||
github.com/prometheus/procfs v0.11.1 // indirect
|
github.com/prometheus/procfs v0.11.1 // indirect
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
go.mongodb.org/mongo-driver v1.13.0 // indirect
|
go.mongodb.org/mongo-driver v1.13.1 // indirect
|
||||||
go.opentelemetry.io/otel v1.14.0 // indirect
|
go.opentelemetry.io/otel v1.17.0 // indirect
|
||||||
go.opentelemetry.io/otel/trace v1.14.0 // indirect
|
go.opentelemetry.io/otel/metric v1.17.0 // indirect
|
||||||
|
go.opentelemetry.io/otel/trace v1.17.0 // indirect
|
||||||
golang.org/x/crypto v0.16.0 // indirect
|
golang.org/x/crypto v0.16.0 // indirect
|
||||||
golang.org/x/net v0.19.0 // indirect
|
golang.org/x/net v0.19.0 // indirect
|
||||||
golang.org/x/sys v0.15.0 // indirect
|
golang.org/x/sys v0.15.0 // indirect
|
||||||
|
|
136
go.sum
136
go.sum
|
@ -39,8 +39,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
github.com/Netflix/go-env v0.0.0-20210215222557-e437a7e7f9fb h1:w9IDEB7P1VzNcBpOG7kMpFkZp2DkyJIUt0gDx5MBhRU=
|
github.com/Netflix/go-env v0.0.0-20210215222557-e437a7e7f9fb h1:w9IDEB7P1VzNcBpOG7kMpFkZp2DkyJIUt0gDx5MBhRU=
|
||||||
github.com/Netflix/go-env v0.0.0-20210215222557-e437a7e7f9fb/go.mod h1:9XMFaCeRyW7fC9XJOWQ+NdAv8VLG7ys7l3x4ozEGLUQ=
|
github.com/Netflix/go-env v0.0.0-20210215222557-e437a7e7f9fb/go.mod h1:9XMFaCeRyW7fC9XJOWQ+NdAv8VLG7ys7l3x4ozEGLUQ=
|
||||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
|
||||||
github.com/alexbrainman/sspi v0.0.0-20210105120005-909beea2cc74 h1:Kk6a4nehpJ3UuJRqlA3JxYxBZEqCeOmATOvrbT4p9RA=
|
github.com/alexbrainman/sspi v0.0.0-20210105120005-909beea2cc74 h1:Kk6a4nehpJ3UuJRqlA3JxYxBZEqCeOmATOvrbT4p9RA=
|
||||||
github.com/alexbrainman/sspi v0.0.0-20210105120005-909beea2cc74/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4=
|
github.com/alexbrainman/sspi v0.0.0-20210105120005-909beea2cc74/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4=
|
||||||
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
||||||
|
@ -93,70 +91,41 @@ github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a/go.mod h1:I7
|
||||||
github.com/go-ldap/ldap/v3 v3.4.6 h1:ert95MdbiG7aWo/oPYp9btL3KJlMPKnP58r09rI8T+A=
|
github.com/go-ldap/ldap/v3 v3.4.6 h1:ert95MdbiG7aWo/oPYp9btL3KJlMPKnP58r09rI8T+A=
|
||||||
github.com/go-ldap/ldap/v3 v3.4.6/go.mod h1:IGMQANNtxpsOzj7uUAMjpGBaOVTC4DYyIy8VsTdxmtc=
|
github.com/go-ldap/ldap/v3 v3.4.6/go.mod h1:IGMQANNtxpsOzj7uUAMjpGBaOVTC4DYyIy8VsTdxmtc=
|
||||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||||
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
|
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
|
||||||
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||||
github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY=
|
|
||||||
github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc=
|
github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc=
|
||||||
github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo=
|
github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo=
|
||||||
github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
|
||||||
github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
|
||||||
github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
||||||
github.com/go-openapi/errors v0.20.4 h1:unTcVm6PispJsMECE3zWgvG4xTiKda1LIR5rCRWLG6M=
|
github.com/go-openapi/errors v0.20.4 h1:unTcVm6PispJsMECE3zWgvG4xTiKda1LIR5rCRWLG6M=
|
||||||
github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk=
|
github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk=
|
||||||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||||
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
|
|
||||||
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||||
github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
|
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
|
||||||
github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA=
|
github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ=
|
||||||
|
github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA=
|
||||||
github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
|
github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
|
||||||
github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g=
|
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
|
||||||
|
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
|
||||||
github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro=
|
github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro=
|
||||||
github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw=
|
github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw=
|
||||||
github.com/go-openapi/runtime v0.26.0 h1:HYOFtG00FM1UvqrcxbEJg/SwvDRvYLQKGhw2zaQjTcc=
|
github.com/go-openapi/runtime v0.26.2 h1:elWyB9MacRzvIVgAZCBJmqTi7hBzU0hlKD4IvfX0Zl0=
|
||||||
github.com/go-openapi/runtime v0.26.0/go.mod h1:QgRGeZwrUcSHdeh4Ka9Glvo0ug1LC5WyE+EV88plZrQ=
|
github.com/go-openapi/runtime v0.26.2/go.mod h1:O034jyRZ557uJKzngbMDJXkcKJVzXJiymdSfgejrcRw=
|
||||||
github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
|
|
||||||
github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
|
github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
|
||||||
github.com/go-openapi/spec v0.20.8 h1:ubHmXNY3FCIOinT8RNrrPfGc9t7I1qhPtdOGoG2AxRU=
|
github.com/go-openapi/spec v0.20.11 h1:J/TzFDLTt4Rcl/l1PmyErvkqlJDncGvPTMnCI39I4gY=
|
||||||
github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
|
github.com/go-openapi/spec v0.20.11/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
|
||||||
github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg=
|
|
||||||
github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
|
|
||||||
github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg=
|
github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg=
|
||||||
github.com/go-openapi/strfmt v0.21.9 h1:LnEGOO9qyEC1v22Bzr323M98G13paIUGPU7yeJtG9Xs=
|
github.com/go-openapi/strfmt v0.21.9 h1:LnEGOO9qyEC1v22Bzr323M98G13paIUGPU7yeJtG9Xs=
|
||||||
github.com/go-openapi/strfmt v0.21.9/go.mod h1:0k3v301mglEaZRJdDDGSlN6Npq4VMVU69DE0LUyf7uA=
|
github.com/go-openapi/strfmt v0.21.9/go.mod h1:0k3v301mglEaZRJdDDGSlN6Npq4VMVU69DE0LUyf7uA=
|
||||||
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
||||||
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
||||||
github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
||||||
github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
|
|
||||||
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
|
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
|
||||||
github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU=
|
github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU=
|
||||||
github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
|
github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
|
||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
github.com/go-openapi/validate v0.22.3 h1:KxG9mu5HBRYbecRb37KRCihvGGtND2aXziBAv0NNfyI=
|
||||||
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
|
github.com/go-openapi/validate v0.22.3/go.mod h1:kVxh31KbfsxU8ZyoHaDbLBWU5CnMdqBUEtadQ2G4d5M=
|
||||||
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
|
|
||||||
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
|
|
||||||
github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
|
||||||
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
|
||||||
github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
|
|
||||||
github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
|
|
||||||
github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
|
|
||||||
github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
|
|
||||||
github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
|
|
||||||
github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
|
|
||||||
github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
|
|
||||||
github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
|
|
||||||
github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
|
|
||||||
github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
|
|
||||||
github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
|
|
||||||
github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
|
|
||||||
github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
|
|
||||||
github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
|
|
||||||
github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
|
|
||||||
github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
|
|
||||||
github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
|
|
||||||
github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
|
|
||||||
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
|
|
||||||
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
|
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
|
||||||
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
|
@ -214,8 +183,8 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
|
||||||
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||||
github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
|
github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
|
||||||
|
@ -231,23 +200,18 @@ github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZH
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||||
github.com/jellydator/ttlcache/v3 v3.1.0 h1:0gPFG0IHHP6xyUyXq+JaD8fwkDCqgqwohXNJBcYE71g=
|
github.com/jellydator/ttlcache/v3 v3.1.1 h1:RCgYJqo3jgvhl+fEWvjNW8thxGWsgxi+TPhRir1Y9y8=
|
||||||
github.com/jellydator/ttlcache/v3 v3.1.0/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4=
|
github.com/jellydator/ttlcache/v3 v3.1.1/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4=
|
||||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
|
||||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
||||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||||
github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
|
|
||||||
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
|
|
||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
@ -259,8 +223,6 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN
|
||||||
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||||
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
|
|
||||||
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
|
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
|
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
|
||||||
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||||
|
@ -275,13 +237,10 @@ github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
|
||||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||||
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
|
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
|
||||||
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
|
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
|
||||||
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
|
|
||||||
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
|
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
|
||||||
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
|
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
|
||||||
github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwyq0Hs=
|
github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwyq0Hs=
|
||||||
github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4=
|
github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
@ -299,41 +258,32 @@ github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwa
|
||||||
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
|
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
|
||||||
github.com/redis/go-redis/v9 v9.3.0 h1:RiVDjmig62jIWp7Kk4XVLs0hzV6pI3PyTnnL0cnn0u0=
|
github.com/redis/go-redis/v9 v9.3.0 h1:RiVDjmig62jIWp7Kk4XVLs0hzV6pI3PyTnnL0cnn0u0=
|
||||||
github.com/redis/go-redis/v9 v9.3.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
|
github.com/redis/go-redis/v9 v9.3.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
|
||||||
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
|
||||||
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
|
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
|
||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
|
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
|
||||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
|
||||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
|
||||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
|
||||||
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
|
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
|
||||||
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
|
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
|
||||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||||
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
|
|
||||||
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
|
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
|
||||||
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
||||||
github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
|
|
||||||
github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
|
github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
|
||||||
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||||
|
@ -341,33 +291,30 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
|
||||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg=
|
|
||||||
go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng=
|
|
||||||
go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8=
|
go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8=
|
||||||
go.mongodb.org/mongo-driver v1.13.0 h1:67DgFFjYOCMWdtTEmKFpV3ffWlFnh+CYZ8ZS/tXWUfY=
|
go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk=
|
||||||
go.mongodb.org/mongo-driver v1.13.0/go.mod h1:/rGBTebI3XYboVmgz+Wv3Bcbl3aD0QF9zl6kDDw18rQ=
|
go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo=
|
||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
|
go.opentelemetry.io/otel v1.17.0 h1:MW+phZ6WZ5/uk2nd93ANk/6yJ+dVrvNWUjGhnnFU5jM=
|
||||||
go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
|
go.opentelemetry.io/otel v1.17.0/go.mod h1:I2vmBGtFaODIVMBSTPVDlJSzBDNf93k60E6Ft0nyjo0=
|
||||||
go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY=
|
go.opentelemetry.io/otel/metric v1.17.0 h1:iG6LGVz5Gh+IuO0jmgvpTB6YVrCGngi8QGm+pMd8Pdc=
|
||||||
go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM=
|
go.opentelemetry.io/otel/metric v1.17.0/go.mod h1:h4skoxdZI17AxwITdmdZjjYJQH5nzijUUjm+wtPph5o=
|
||||||
go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M=
|
go.opentelemetry.io/otel/sdk v1.17.0 h1:FLN2X66Ke/k5Sg3V623Q7h7nt3cHXaW1FOvKKrW0IpE=
|
||||||
go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8=
|
go.opentelemetry.io/otel/sdk v1.17.0/go.mod h1:U87sE0f5vQB7hwUoW98pW5Rz4ZDuCFBZFNUBlSgmDFQ=
|
||||||
|
go.opentelemetry.io/otel/trace v1.17.0 h1:/SWhSRHmDPOImIAetP1QAeMnZYiQXrTy4fMMYOdSKWQ=
|
||||||
|
go.opentelemetry.io/otel/trace v1.17.0/go.mod h1:I/4vKTgFclIsXRVucpH25X0mpFSczM7aHeaz0ZBLWjY=
|
||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
|
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
|
||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
|
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
|
||||||
goauthentik.io/api/v3 v3.2023104.2 h1:TV3SdaPGhjVE7If0l1kt+H23xwgEabWUFgX4ijkkeSc=
|
goauthentik.io/api/v3 v3.2023104.2 h1:TV3SdaPGhjVE7If0l1kt+H23xwgEabWUFgX4ijkkeSc=
|
||||||
goauthentik.io/api/v3 v3.2023104.2/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw=
|
goauthentik.io/api/v3 v3.2023104.2/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw=
|
||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
|
||||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
@ -436,7 +383,6 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R
|
||||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||||
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
|
|
||||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
|
@ -455,7 +401,6 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
@ -466,16 +411,11 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
|
golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
|
||||||
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
@ -496,7 +436,6 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
@ -517,7 +456,6 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||||
|
@ -535,13 +473,9 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
|
||||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
|
||||||
golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
|
||||||
golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
|
||||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
|
||||||
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
|
@ -667,13 +601,11 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w=
|
gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w=
|
||||||
gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
|
gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-12-11 10:16+0000\n"
|
"POT-Creation-Date: 2023-12-18 09:56+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -74,27 +74,21 @@ msgstr ""
|
||||||
msgid "Successfully imported %(count)d files."
|
msgid "Successfully imported %(count)d files."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/brands/models.py:23
|
#: authentik/brands/models.py:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` "
|
"Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` "
|
||||||
"and `ba.b`"
|
"and `ba.b`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/brands/models.py:58
|
#: authentik/brands/models.py:58
|
||||||
msgid ""
|
|
||||||
"Events will be deleted after this duration.(Format: weeks=3;days=2;hours=3,"
|
|
||||||
"seconds=2)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: authentik/brands/models.py:67
|
|
||||||
msgid "Web Certificate used by the authentik Core webserver."
|
msgid "Web Certificate used by the authentik Core webserver."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/brands/models.py:93
|
#: authentik/brands/models.py:84
|
||||||
msgid "Brand"
|
msgid "Brand"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/brands/models.py:94
|
#: authentik/brands/models.py:85
|
||||||
msgid "Brands"
|
msgid "Brands"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -344,7 +338,7 @@ msgstr ""
|
||||||
msgid "Go home"
|
msgid "Go home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/templates/login/base_full.html:89
|
#: authentik/core/templates/login/base_full.html:90
|
||||||
msgid "Powered by authentik"
|
msgid "Powered by authentik"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -394,105 +388,105 @@ msgstr ""
|
||||||
msgid "License Usage Records"
|
msgid "License Usage Records"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:291
|
#: authentik/events/models.py:294
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:292
|
#: authentik/events/models.py:295
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:298
|
#: authentik/events/models.py:301
|
||||||
msgid "authentik inbuilt notifications"
|
msgid "authentik inbuilt notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:299
|
#: authentik/events/models.py:302
|
||||||
msgid "Generic Webhook"
|
msgid "Generic Webhook"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:300
|
#: authentik/events/models.py:303
|
||||||
msgid "Slack Webhook (Slack/Discord)"
|
msgid "Slack Webhook (Slack/Discord)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:301
|
#: authentik/events/models.py:304
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:319
|
#: authentik/events/models.py:322
|
||||||
msgid ""
|
msgid ""
|
||||||
"Only send notification once, for example when sending a webhook into a chat "
|
"Only send notification once, for example when sending a webhook into a chat "
|
||||||
"channel."
|
"channel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:384
|
#: authentik/events/models.py:387
|
||||||
msgid "Severity"
|
msgid "Severity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:389
|
#: authentik/events/models.py:392
|
||||||
msgid "Dispatched for user"
|
msgid "Dispatched for user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:398
|
#: authentik/events/models.py:401
|
||||||
msgid "Event user"
|
msgid "Event user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:492
|
#: authentik/events/models.py:495
|
||||||
msgid "Notification Transport"
|
msgid "Notification Transport"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:493
|
#: authentik/events/models.py:496
|
||||||
msgid "Notification Transports"
|
msgid "Notification Transports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:499
|
#: authentik/events/models.py:502
|
||||||
msgid "Notice"
|
msgid "Notice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:500
|
#: authentik/events/models.py:503
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:501
|
#: authentik/events/models.py:504
|
||||||
msgid "Alert"
|
msgid "Alert"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:526
|
#: authentik/events/models.py:529
|
||||||
msgid "Notification"
|
msgid "Notification"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:527
|
#: authentik/events/models.py:530
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:537
|
#: authentik/events/models.py:540
|
||||||
msgid ""
|
msgid ""
|
||||||
"Select which transports should be used to notify the user. If none are "
|
"Select which transports should be used to notify the user. If none are "
|
||||||
"selected, the notification will only be shown in the authentik UI."
|
"selected, the notification will only be shown in the authentik UI."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:545
|
#: authentik/events/models.py:548
|
||||||
msgid "Controls which severity level the created notifications will have."
|
msgid "Controls which severity level the created notifications will have."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:550
|
#: authentik/events/models.py:553
|
||||||
msgid ""
|
msgid ""
|
||||||
"Define which group of users this notification should be sent and shown to. "
|
"Define which group of users this notification should be sent and shown to. "
|
||||||
"If left empty, Notification won't ben sent."
|
"If left empty, Notification won't ben sent."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:568
|
#: authentik/events/models.py:571
|
||||||
msgid "Notification Rule"
|
msgid "Notification Rule"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:569
|
#: authentik/events/models.py:572
|
||||||
msgid "Notification Rules"
|
msgid "Notification Rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:589
|
#: authentik/events/models.py:592
|
||||||
msgid "Webhook Mapping"
|
msgid "Webhook Mapping"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/events/models.py:590
|
#: authentik/events/models.py:593
|
||||||
msgid "Webhook Mappings"
|
msgid "Webhook Mappings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2633,54 +2627,60 @@ msgstr ""
|
||||||
msgid "Failed to update user. Please try again later."
|
msgid "Failed to update user. Please try again later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:28
|
#: authentik/tenants/models.py:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"Schema name must start with t_, only contain lowercase letters and numbers "
|
"Schema name must start with t_, only contain lowercase letters and numbers "
|
||||||
"and be less than 63 characters."
|
"and be less than 63 characters."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:48
|
#: authentik/tenants/models.py:49
|
||||||
msgid "Configure how authentik should show avatars for users."
|
msgid "Configure how authentik should show avatars for users."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:52
|
#: authentik/tenants/models.py:53
|
||||||
msgid "Enable the ability for users to change their name."
|
msgid "Enable the ability for users to change their name."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:55
|
#: authentik/tenants/models.py:56
|
||||||
msgid "Enable the ability for users to change their email address."
|
msgid "Enable the ability for users to change their email address."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:58
|
#: authentik/tenants/models.py:59
|
||||||
msgid "Enable the ability for users to change their username."
|
msgid "Enable the ability for users to change their username."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:62
|
#: authentik/tenants/models.py:65
|
||||||
|
msgid ""
|
||||||
|
"Events will be deleted after this duration.(Format: weeks=3;days=2;hours=3,"
|
||||||
|
"seconds=2)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: authentik/tenants/models.py:69
|
||||||
|
msgid "The option configures the footer links on the flow executor pages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: authentik/tenants/models.py:75
|
||||||
msgid ""
|
msgid ""
|
||||||
"When enabled, all the events caused by a user will be deleted upon the "
|
"When enabled, all the events caused by a user will be deleted upon the "
|
||||||
"user's deletion."
|
"user's deletion."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:68
|
#: authentik/tenants/models.py:81
|
||||||
msgid "Globally enable/disable impersonation."
|
msgid "Globally enable/disable impersonation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:71
|
#: authentik/tenants/models.py:104
|
||||||
msgid "The option configures the footer links on the flow executor pages."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: authentik/tenants/models.py:96
|
|
||||||
msgid "Tenant"
|
msgid "Tenant"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:97
|
#: authentik/tenants/models.py:105
|
||||||
msgid "Tenants"
|
msgid "Tenants"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:117
|
#: authentik/tenants/models.py:125
|
||||||
msgid "Domain"
|
msgid "Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/tenants/models.py:118
|
#: authentik/tenants/models.py:126
|
||||||
msgid "Domains"
|
msgid "Domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,22 +1,22 @@
|
||||||
version: '3.7'
|
version: "3.7"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
postgresql:
|
postgresql:
|
||||||
container_name: postgres
|
container_name: postgres
|
||||||
image: library/postgres:12
|
image: docker.io/library/postgres:12
|
||||||
volumes:
|
volumes:
|
||||||
- db-data:/var/lib/postgresql/data
|
- db-data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_HOST_AUTH_METHOD: trust
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
POSTGRES_DB: authentik
|
POSTGRES_DB: authentik
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 127.0.0.1:5432:5432
|
||||||
restart: always
|
restart: always
|
||||||
redis:
|
redis:
|
||||||
container_name: redis
|
container_name: redis
|
||||||
image: library/redis
|
image: docker.io/library/redis
|
||||||
ports:
|
ports:
|
||||||
- 6379:6379
|
- 127.0.0.1:6379:6379
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
|
|
@ -7,20 +7,20 @@
|
||||||
"name": "@goauthentik/web-tests",
|
"name": "@goauthentik/web-tests",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
||||||
"@typescript-eslint/parser": "^6.13.2",
|
"@typescript-eslint/parser": "^6.14.0",
|
||||||
"@wdio/cli": "^8.24.16",
|
"@wdio/cli": "^8.26.1",
|
||||||
"@wdio/local-runner": "^8.24.12",
|
"@wdio/local-runner": "^8.26.1",
|
||||||
"@wdio/mocha-framework": "^8.24.12",
|
"@wdio/mocha-framework": "^8.24.12",
|
||||||
"@wdio/spec-reporter": "^8.24.12",
|
"@wdio/spec-reporter": "^8.24.12",
|
||||||
"eslint": "^8.55.0",
|
"eslint": "^8.55.0",
|
||||||
"eslint-config-google": "^0.14.0",
|
"eslint-config-google": "^0.14.0",
|
||||||
"eslint-plugin-sonarjs": "^0.23.0",
|
"eslint-plugin-sonarjs": "^0.23.0",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"prettier": "^3.1.0",
|
"prettier": "^3.1.1",
|
||||||
"ts-node": "^10.9.1",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"wdio-wait-for": "^3.0.9"
|
"wdio-wait-for": "^3.0.10"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
|
@ -946,16 +946,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz",
|
||||||
"integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==",
|
"integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.5.1",
|
"@eslint-community/regexpp": "^4.5.1",
|
||||||
"@typescript-eslint/scope-manager": "6.13.2",
|
"@typescript-eslint/scope-manager": "6.14.0",
|
||||||
"@typescript-eslint/type-utils": "6.13.2",
|
"@typescript-eslint/type-utils": "6.14.0",
|
||||||
"@typescript-eslint/utils": "6.13.2",
|
"@typescript-eslint/utils": "6.14.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.13.2",
|
"@typescript-eslint/visitor-keys": "6.14.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"graphemer": "^1.4.0",
|
"graphemer": "^1.4.0",
|
||||||
"ignore": "^5.2.4",
|
"ignore": "^5.2.4",
|
||||||
|
@ -981,15 +981,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz",
|
||||||
"integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==",
|
"integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "6.13.2",
|
"@typescript-eslint/scope-manager": "6.14.0",
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"@typescript-eslint/typescript-estree": "6.13.2",
|
"@typescript-eslint/typescript-estree": "6.14.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.13.2",
|
"@typescript-eslint/visitor-keys": "6.14.0",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1009,13 +1009,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz",
|
||||||
"integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==",
|
"integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.13.2"
|
"@typescript-eslint/visitor-keys": "6.14.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
|
@ -1026,13 +1026,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz",
|
||||||
"integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==",
|
"integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/typescript-estree": "6.13.2",
|
"@typescript-eslint/typescript-estree": "6.14.0",
|
||||||
"@typescript-eslint/utils": "6.13.2",
|
"@typescript-eslint/utils": "6.14.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ts-api-utils": "^1.0.1"
|
"ts-api-utils": "^1.0.1"
|
||||||
},
|
},
|
||||||
|
@ -1053,9 +1053,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz",
|
||||||
"integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==",
|
"integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
|
@ -1066,13 +1066,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz",
|
||||||
"integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==",
|
"integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.13.2",
|
"@typescript-eslint/visitor-keys": "6.14.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
|
@ -1093,17 +1093,17 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz",
|
||||||
"integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==",
|
"integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"@types/json-schema": "^7.0.12",
|
"@types/json-schema": "^7.0.12",
|
||||||
"@types/semver": "^7.5.0",
|
"@types/semver": "^7.5.0",
|
||||||
"@typescript-eslint/scope-manager": "6.13.2",
|
"@typescript-eslint/scope-manager": "6.14.0",
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"@typescript-eslint/typescript-estree": "6.13.2",
|
"@typescript-eslint/typescript-estree": "6.14.0",
|
||||||
"semver": "^7.5.4"
|
"semver": "^7.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1118,12 +1118,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz",
|
||||||
"integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==",
|
"integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"eslint-visitor-keys": "^3.4.1"
|
"eslint-visitor-keys": "^3.4.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1141,14 +1141,14 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@wdio/cli": {
|
"node_modules/@wdio/cli": {
|
||||||
"version": "8.24.16",
|
"version": "8.26.1",
|
||||||
"resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.24.16.tgz",
|
"resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.26.1.tgz",
|
||||||
"integrity": "sha512-DaXSdkWMlI0pPiTWMJRP5kBGpBrzEJfPdF1VqIw+HBC9vn4OWyZWAOlA3TZ1uKifTJQ3ydaXpclbDW0/x31YhQ==",
|
"integrity": "sha512-KZ3MVyH4N6j0Gdy6RL6Wv0uf5OeggFe0WRpOwZFjjQpYVEV8IEuB4kDcw8ld7f3kp9YYQGabMAkGrO6tnz5T8w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "^20.1.1",
|
"@types/node": "^20.1.1",
|
||||||
"@wdio/config": "8.24.12",
|
"@wdio/config": "8.24.12",
|
||||||
"@wdio/globals": "8.24.12",
|
"@wdio/globals": "8.26.1",
|
||||||
"@wdio/logger": "8.24.12",
|
"@wdio/logger": "8.24.12",
|
||||||
"@wdio/protocols": "8.24.12",
|
"@wdio/protocols": "8.24.12",
|
||||||
"@wdio/types": "8.24.12",
|
"@wdio/types": "8.24.12",
|
||||||
|
@ -1167,7 +1167,7 @@
|
||||||
"lodash.union": "^4.6.0",
|
"lodash.union": "^4.6.0",
|
||||||
"read-pkg-up": "^10.0.0",
|
"read-pkg-up": "^10.0.0",
|
||||||
"recursive-readdir": "^2.2.3",
|
"recursive-readdir": "^2.2.3",
|
||||||
"webdriverio": "8.24.12",
|
"webdriverio": "8.26.1",
|
||||||
"yargs": "^17.7.2"
|
"yargs": "^17.7.2"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
|
@ -1208,28 +1208,28 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@wdio/globals": {
|
"node_modules/@wdio/globals": {
|
||||||
"version": "8.24.12",
|
"version": "8.26.1",
|
||||||
"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.24.12.tgz",
|
"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.26.1.tgz",
|
||||||
"integrity": "sha512-uF26a89Q+6DdqzSfK9suXJNdWYJnsazjzPuq4Xtz6nKdjgmBufSeX1JHV4LxErEu5b/IdzVcMCUKKEvsZPc9vA==",
|
"integrity": "sha512-hNJ4mvSHzvAzDcBisaNgwRzJ2sLN4B/fno6VZcskgfYlg7UyWpVHigyxaddP2e1OeoxLL9pc2hKCtwgDr4UozA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.13 || >=18"
|
"node": "^16.13 || >=18"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"expect-webdriverio": "^4.6.1",
|
"expect-webdriverio": "^4.6.1",
|
||||||
"webdriverio": "8.24.12"
|
"webdriverio": "8.26.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@wdio/local-runner": {
|
"node_modules/@wdio/local-runner": {
|
||||||
"version": "8.24.12",
|
"version": "8.26.1",
|
||||||
"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.24.12.tgz",
|
"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.26.1.tgz",
|
||||||
"integrity": "sha512-Q1lfdSPDEgKwuE1gNucJrkVfgOJLTjtnYGb7Fe7oYUHGDwjkudjSBJYmyx30qFZKfZ4zRqXtaEdys54/0TxibA==",
|
"integrity": "sha512-n7iiB/mKt7u6bd3uJTgqOTaN2r/EUVQpBMsrXyv5XidYEr9QHuq2OOE3biswdxSez24p0zZGU35fu6oUwz5J1Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "^20.1.0",
|
"@types/node": "^20.1.0",
|
||||||
"@wdio/logger": "8.24.12",
|
"@wdio/logger": "8.24.12",
|
||||||
"@wdio/repl": "8.24.12",
|
"@wdio/repl": "8.24.12",
|
||||||
"@wdio/runner": "8.24.12",
|
"@wdio/runner": "8.26.1",
|
||||||
"@wdio/types": "8.24.12",
|
"@wdio/types": "8.24.12",
|
||||||
"async-exit-hook": "^2.0.1",
|
"async-exit-hook": "^2.0.1",
|
||||||
"split2": "^4.1.0",
|
"split2": "^4.1.0",
|
||||||
|
@ -1318,14 +1318,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@wdio/runner": {
|
"node_modules/@wdio/runner": {
|
||||||
"version": "8.24.12",
|
"version": "8.26.1",
|
||||||
"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.24.12.tgz",
|
"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.26.1.tgz",
|
||||||
"integrity": "sha512-wiwXZWG12YDe7GCYBnZ1xEg3UKi18Rvh4RNQiumjypDOErJit1hOCppbJ37LqLqQu+tfWGfN73j46yR7fQOCHw==",
|
"integrity": "sha512-Uhz82HD53LvfW6hLwd/cX+vYVZpiKtAr7ipTxaLt5VPEIwcDlrVz1hoVkVMGyfvkAuHxDKLZx16bigfMg+5eTQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "^20.1.0",
|
"@types/node": "^20.1.0",
|
||||||
"@wdio/config": "8.24.12",
|
"@wdio/config": "8.24.12",
|
||||||
"@wdio/globals": "8.24.12",
|
"@wdio/globals": "8.26.1",
|
||||||
"@wdio/logger": "8.24.12",
|
"@wdio/logger": "8.24.12",
|
||||||
"@wdio/types": "8.24.12",
|
"@wdio/types": "8.24.12",
|
||||||
"@wdio/utils": "8.24.12",
|
"@wdio/utils": "8.24.12",
|
||||||
|
@ -1333,7 +1333,7 @@
|
||||||
"expect-webdriverio": "^4.6.1",
|
"expect-webdriverio": "^4.6.1",
|
||||||
"gaze": "^1.1.2",
|
"gaze": "^1.1.2",
|
||||||
"webdriver": "8.24.12",
|
"webdriver": "8.24.12",
|
||||||
"webdriverio": "8.24.12"
|
"webdriverio": "8.26.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.13 || >=18"
|
"node": "^16.13 || >=18"
|
||||||
|
@ -6446,9 +6446,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz",
|
||||||
"integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==",
|
"integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin/prettier.cjs"
|
"prettier": "bin/prettier.cjs"
|
||||||
|
@ -7985,9 +7985,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ts-node": {
|
"node_modules/ts-node": {
|
||||||
"version": "10.9.1",
|
"version": "10.9.2",
|
||||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
|
||||||
"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
|
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cspotcode/source-map-support": "^0.8.0",
|
"@cspotcode/source-map-support": "^0.8.0",
|
||||||
|
@ -8440,9 +8440,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/wdio-wait-for": {
|
"node_modules/wdio-wait-for": {
|
||||||
"version": "3.0.9",
|
"version": "3.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/wdio-wait-for/-/wdio-wait-for-3.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/wdio-wait-for/-/wdio-wait-for-3.0.10.tgz",
|
||||||
"integrity": "sha512-f7SZ916X9DpN1ZpY82wbwS0UwpRl8fOmT3v5TIfSn/XNLwDS1qZiGndayd5sNKhzYZFlDQDIIcfOcZDr7YBMcA==",
|
"integrity": "sha512-YMWfI0BYgEviGDB9+rDUuHDZNVk8pHeae0cvaqk3Wx/2LijwJi4xkRP01uYC/hM7RBB7QJFBmjrXczVSqtJOGw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.13 || >=18"
|
"node": "^16.13 || >=18"
|
||||||
|
@ -8517,9 +8517,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webdriverio": {
|
"node_modules/webdriverio": {
|
||||||
"version": "8.24.12",
|
"version": "8.26.1",
|
||||||
"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.24.12.tgz",
|
"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.26.1.tgz",
|
||||||
"integrity": "sha512-Ddu0NNRMVkTzRzqvm3m0wt2eLUn+Plz2Cj+1QXDnVpddYJvk9J3elZC2hqNyscEtecQ+h2y3r36OcJqkl9jPag==",
|
"integrity": "sha512-KnM92UPqk7FmPJpZf3krHrqn0ydjSdyAMn+i4uENxLBqm1OyQ12gSKtIatt8FOP9/C+UrFXATSOd+jRkU2xMkw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "^20.1.0",
|
"@types/node": "^20.1.0",
|
||||||
|
|
|
@ -4,20 +4,20 @@
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
||||||
"@typescript-eslint/parser": "^6.13.2",
|
"@typescript-eslint/parser": "^6.14.0",
|
||||||
"@wdio/cli": "^8.24.16",
|
"@wdio/cli": "^8.26.1",
|
||||||
"@wdio/local-runner": "^8.24.12",
|
"@wdio/local-runner": "^8.26.1",
|
||||||
"@wdio/mocha-framework": "^8.24.12",
|
"@wdio/mocha-framework": "^8.24.12",
|
||||||
"@wdio/spec-reporter": "^8.24.12",
|
"@wdio/spec-reporter": "^8.24.12",
|
||||||
"eslint": "^8.55.0",
|
"eslint": "^8.55.0",
|
||||||
"eslint-config-google": "^0.14.0",
|
"eslint-config-google": "^0.14.0",
|
||||||
"eslint-plugin-sonarjs": "^0.23.0",
|
"eslint-plugin-sonarjs": "^0.23.0",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"prettier": "^3.1.0",
|
"prettier": "^3.1.1",
|
||||||
"ts-node": "^10.9.1",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"wdio-wait-for": "^3.0.9"
|
"wdio-wait-for": "^3.0.10"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"wdio": "wdio run ./wdio.conf.ts",
|
"wdio": "wdio run ./wdio.conf.ts",
|
||||||
|
|
|
@ -24,8 +24,8 @@
|
||||||
"@open-wc/lit-helpers": "^0.6.0",
|
"@open-wc/lit-helpers": "^0.6.0",
|
||||||
"@patternfly/elements": "^2.4.0",
|
"@patternfly/elements": "^2.4.0",
|
||||||
"@patternfly/patternfly": "^4.224.2",
|
"@patternfly/patternfly": "^4.224.2",
|
||||||
"@sentry/browser": "^7.86.0",
|
"@sentry/browser": "^7.88.0",
|
||||||
"@sentry/tracing": "^7.86.0",
|
"@sentry/tracing": "^7.88.0",
|
||||||
"@webcomponents/webcomponentsjs": "^2.8.0",
|
"@webcomponents/webcomponentsjs": "^2.8.0",
|
||||||
"base64-js": "^1.5.1",
|
"base64-js": "^1.5.1",
|
||||||
"chart.js": "^4.4.1",
|
"chart.js": "^4.4.1",
|
||||||
|
@ -43,13 +43,13 @@
|
||||||
"yaml": "^2.3.4"
|
"yaml": "^2.3.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.23.5",
|
"@babel/core": "^7.23.6",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||||
"@babel/plugin-proposal-decorators": "^7.23.5",
|
"@babel/plugin-proposal-decorators": "^7.23.6",
|
||||||
"@babel/plugin-transform-private-methods": "^7.23.3",
|
"@babel/plugin-transform-private-methods": "^7.23.3",
|
||||||
"@babel/plugin-transform-private-property-in-object": "^7.23.4",
|
"@babel/plugin-transform-private-property-in-object": "^7.23.4",
|
||||||
"@babel/plugin-transform-runtime": "^7.23.4",
|
"@babel/plugin-transform-runtime": "^7.23.6",
|
||||||
"@babel/preset-env": "^7.23.5",
|
"@babel/preset-env": "^7.23.6",
|
||||||
"@babel/preset-typescript": "^7.23.3",
|
"@babel/preset-typescript": "^7.23.3",
|
||||||
"@hcaptcha/types": "^1.0.3",
|
"@hcaptcha/types": "^1.0.3",
|
||||||
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
||||||
|
@ -72,8 +72,8 @@
|
||||||
"@types/chart.js": "^2.9.41",
|
"@types/chart.js": "^2.9.41",
|
||||||
"@types/codemirror": "5.60.15",
|
"@types/codemirror": "5.60.15",
|
||||||
"@types/grecaptcha": "^3.0.7",
|
"@types/grecaptcha": "^3.0.7",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
||||||
"@typescript-eslint/parser": "^6.13.2",
|
"@typescript-eslint/parser": "^6.14.0",
|
||||||
"babel-plugin-macros": "^3.1.0",
|
"babel-plugin-macros": "^3.1.0",
|
||||||
"babel-plugin-tsconfig-paths": "^1.0.3",
|
"babel-plugin-tsconfig-paths": "^1.0.3",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
|
@ -83,14 +83,14 @@
|
||||||
"eslint-plugin-lit": "^1.10.1",
|
"eslint-plugin-lit": "^1.10.1",
|
||||||
"eslint-plugin-sonarjs": "^0.23.0",
|
"eslint-plugin-sonarjs": "^0.23.0",
|
||||||
"eslint-plugin-storybook": "^0.6.15",
|
"eslint-plugin-storybook": "^0.6.15",
|
||||||
"lit-analyzer": "^2.0.1",
|
"lit-analyzer": "^2.0.2",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"prettier": "^3.1.0",
|
"prettier": "^3.1.1",
|
||||||
"pseudolocale": "^2.0.0",
|
"pseudolocale": "^2.0.0",
|
||||||
"pyright": "^1.1.338",
|
"pyright": "=1.1.338",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"rollup": "^4.6.1",
|
"rollup": "^4.9.0",
|
||||||
"rollup-plugin-copy": "^3.5.0",
|
"rollup-plugin-copy": "^3.5.0",
|
||||||
"rollup-plugin-cssimport": "^1.0.3",
|
"rollup-plugin-cssimport": "^1.0.3",
|
||||||
"rollup-plugin-postcss-lit": "^2.1.0",
|
"rollup-plugin-postcss-lit": "^2.1.0",
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
"storybook-addon-mock": "^4.3.0",
|
"storybook-addon-mock": "^4.3.0",
|
||||||
"ts-lit-plugin": "^2.0.1",
|
"ts-lit-plugin": "^2.0.1",
|
||||||
"tslib": "^2.6.2",
|
"tslib": "^2.6.2",
|
||||||
"turnstile-types": "^1.1.3",
|
"turnstile-types": "^1.2.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"vite-tsconfig-paths": "^4.2.2"
|
"vite-tsconfig-paths": "^4.2.2"
|
||||||
},
|
},
|
||||||
|
@ -106,9 +106,9 @@
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@esbuild/darwin-arm64": "^0.19.8",
|
"@esbuild/darwin-arm64": "^0.19.9",
|
||||||
"@esbuild/linux-amd64": "^0.18.11",
|
"@esbuild/linux-amd64": "^0.18.11",
|
||||||
"@esbuild/linux-arm64": "^0.19.8"
|
"@esbuild/linux-arm64": "^0.19.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aashutoshrathi/word-wrap": {
|
"node_modules/@aashutoshrathi/word-wrap": {
|
||||||
|
@ -176,21 +176,21 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/core": {
|
"node_modules/@babel/core": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz",
|
||||||
"integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==",
|
"integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ampproject/remapping": "^2.2.0",
|
"@ampproject/remapping": "^2.2.0",
|
||||||
"@babel/code-frame": "^7.23.5",
|
"@babel/code-frame": "^7.23.5",
|
||||||
"@babel/generator": "^7.23.5",
|
"@babel/generator": "^7.23.6",
|
||||||
"@babel/helper-compilation-targets": "^7.22.15",
|
"@babel/helper-compilation-targets": "^7.23.6",
|
||||||
"@babel/helper-module-transforms": "^7.23.3",
|
"@babel/helper-module-transforms": "^7.23.3",
|
||||||
"@babel/helpers": "^7.23.5",
|
"@babel/helpers": "^7.23.6",
|
||||||
"@babel/parser": "^7.23.5",
|
"@babel/parser": "^7.23.6",
|
||||||
"@babel/template": "^7.22.15",
|
"@babel/template": "^7.22.15",
|
||||||
"@babel/traverse": "^7.23.5",
|
"@babel/traverse": "^7.23.6",
|
||||||
"@babel/types": "^7.23.5",
|
"@babel/types": "^7.23.6",
|
||||||
"convert-source-map": "^2.0.0",
|
"convert-source-map": "^2.0.0",
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.1.0",
|
||||||
"gensync": "^1.0.0-beta.2",
|
"gensync": "^1.0.0-beta.2",
|
||||||
|
@ -206,20 +206,20 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/core/node_modules/@babel/traverse": {
|
"node_modules/@babel/core/node_modules/@babel/traverse": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz",
|
||||||
"integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==",
|
"integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.23.5",
|
"@babel/code-frame": "^7.23.5",
|
||||||
"@babel/generator": "^7.23.5",
|
"@babel/generator": "^7.23.6",
|
||||||
"@babel/helper-environment-visitor": "^7.22.20",
|
"@babel/helper-environment-visitor": "^7.22.20",
|
||||||
"@babel/helper-function-name": "^7.23.0",
|
"@babel/helper-function-name": "^7.23.0",
|
||||||
"@babel/helper-hoist-variables": "^7.22.5",
|
"@babel/helper-hoist-variables": "^7.22.5",
|
||||||
"@babel/helper-split-export-declaration": "^7.22.6",
|
"@babel/helper-split-export-declaration": "^7.22.6",
|
||||||
"@babel/parser": "^7.23.5",
|
"@babel/parser": "^7.23.6",
|
||||||
"@babel/types": "^7.23.5",
|
"@babel/types": "^7.23.6",
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.3.1",
|
||||||
"globals": "^11.1.0"
|
"globals": "^11.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -233,12 +233,12 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@babel/generator": {
|
"node_modules/@babel/generator": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
|
||||||
"integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==",
|
"integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.23.5",
|
"@babel/types": "^7.23.6",
|
||||||
"@jridgewell/gen-mapping": "^0.3.2",
|
"@jridgewell/gen-mapping": "^0.3.2",
|
||||||
"@jridgewell/trace-mapping": "^0.3.17",
|
"@jridgewell/trace-mapping": "^0.3.17",
|
||||||
"jsesc": "^2.5.1"
|
"jsesc": "^2.5.1"
|
||||||
|
@ -272,14 +272,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-compilation-targets": {
|
"node_modules/@babel/helper-compilation-targets": {
|
||||||
"version": "7.22.15",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
|
||||||
"integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
|
"integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/compat-data": "^7.22.9",
|
"@babel/compat-data": "^7.23.5",
|
||||||
"@babel/helper-validator-option": "^7.22.15",
|
"@babel/helper-validator-option": "^7.23.5",
|
||||||
"browserslist": "^4.21.9",
|
"browserslist": "^4.22.2",
|
||||||
"lru-cache": "^5.1.1",
|
"lru-cache": "^5.1.1",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
},
|
},
|
||||||
|
@ -288,9 +288,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-create-class-features-plugin": {
|
"node_modules/@babel/helper-create-class-features-plugin": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz",
|
||||||
"integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==",
|
"integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-annotate-as-pure": "^7.22.5",
|
"@babel/helper-annotate-as-pure": "^7.22.5",
|
||||||
|
@ -553,34 +553,34 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helpers": {
|
"node_modules/@babel/helpers": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz",
|
||||||
"integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==",
|
"integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/template": "^7.22.15",
|
"@babel/template": "^7.22.15",
|
||||||
"@babel/traverse": "^7.23.5",
|
"@babel/traverse": "^7.23.6",
|
||||||
"@babel/types": "^7.23.5"
|
"@babel/types": "^7.23.6"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helpers/node_modules/@babel/traverse": {
|
"node_modules/@babel/helpers/node_modules/@babel/traverse": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz",
|
||||||
"integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==",
|
"integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.23.5",
|
"@babel/code-frame": "^7.23.5",
|
||||||
"@babel/generator": "^7.23.5",
|
"@babel/generator": "^7.23.6",
|
||||||
"@babel/helper-environment-visitor": "^7.22.20",
|
"@babel/helper-environment-visitor": "^7.22.20",
|
||||||
"@babel/helper-function-name": "^7.23.0",
|
"@babel/helper-function-name": "^7.23.0",
|
||||||
"@babel/helper-hoist-variables": "^7.22.5",
|
"@babel/helper-hoist-variables": "^7.22.5",
|
||||||
"@babel/helper-split-export-declaration": "^7.22.6",
|
"@babel/helper-split-export-declaration": "^7.22.6",
|
||||||
"@babel/parser": "^7.23.5",
|
"@babel/parser": "^7.23.6",
|
||||||
"@babel/types": "^7.23.5",
|
"@babel/types": "^7.23.6",
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.3.1",
|
||||||
"globals": "^11.1.0"
|
"globals": "^11.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -602,9 +602,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
|
||||||
"integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==",
|
"integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"parser": "bin/babel-parser.js"
|
"parser": "bin/babel-parser.js"
|
||||||
|
@ -679,14 +679,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-proposal-decorators": {
|
"node_modules/@babel/plugin-proposal-decorators": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.6.tgz",
|
||||||
"integrity": "sha512-6IsY8jOeWibsengGlWIezp7cuZEFzNlAghFpzh9wiZwhQ42/hRcPnY/QV9HJoKTlujupinSlnQPiEy/u2C1ZfQ==",
|
"integrity": "sha512-D7Ccq9LfkBFnow3azZGJvZYgcfeqAw3I1e5LoTpj6UKIFQilh8yqXsIGcRIqbBdsPWIz+Ze7ZZfggSj62Qp+Fg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-create-class-features-plugin": "^7.23.5",
|
"@babel/helper-create-class-features-plugin": "^7.23.6",
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
"@babel/helper-replace-supers": "^7.22.20",
|
"@babel/helper-replace-supers": "^7.22.20",
|
||||||
|
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
|
||||||
"@babel/helper-split-export-declaration": "^7.22.6",
|
"@babel/helper-split-export-declaration": "^7.22.6",
|
||||||
"@babel/plugin-syntax-decorators": "^7.23.3"
|
"@babel/plugin-syntax-decorators": "^7.23.3"
|
||||||
},
|
},
|
||||||
|
@ -1267,12 +1268,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-for-of": {
|
"node_modules/@babel/plugin-transform-for-of": {
|
||||||
"version": "7.23.3",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz",
|
||||||
"integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==",
|
"integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.22.5"
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
|
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
|
@ -1654,9 +1656,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-runtime": {
|
"node_modules/@babel/plugin-transform-runtime": {
|
||||||
"version": "7.23.4",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.6.tgz",
|
||||||
"integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==",
|
"integrity": "sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-module-imports": "^7.22.15",
|
"@babel/helper-module-imports": "^7.22.15",
|
||||||
|
@ -1831,13 +1833,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/preset-env": {
|
"node_modules/@babel/preset-env": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz",
|
||||||
"integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==",
|
"integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/compat-data": "^7.23.5",
|
"@babel/compat-data": "^7.23.5",
|
||||||
"@babel/helper-compilation-targets": "^7.22.15",
|
"@babel/helper-compilation-targets": "^7.23.6",
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
"@babel/helper-validator-option": "^7.23.5",
|
"@babel/helper-validator-option": "^7.23.5",
|
||||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3",
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3",
|
||||||
|
@ -1877,7 +1879,7 @@
|
||||||
"@babel/plugin-transform-dynamic-import": "^7.23.4",
|
"@babel/plugin-transform-dynamic-import": "^7.23.4",
|
||||||
"@babel/plugin-transform-exponentiation-operator": "^7.23.3",
|
"@babel/plugin-transform-exponentiation-operator": "^7.23.3",
|
||||||
"@babel/plugin-transform-export-namespace-from": "^7.23.4",
|
"@babel/plugin-transform-export-namespace-from": "^7.23.4",
|
||||||
"@babel/plugin-transform-for-of": "^7.23.3",
|
"@babel/plugin-transform-for-of": "^7.23.6",
|
||||||
"@babel/plugin-transform-function-name": "^7.23.3",
|
"@babel/plugin-transform-function-name": "^7.23.3",
|
||||||
"@babel/plugin-transform-json-strings": "^7.23.4",
|
"@babel/plugin-transform-json-strings": "^7.23.4",
|
||||||
"@babel/plugin-transform-literals": "^7.23.3",
|
"@babel/plugin-transform-literals": "^7.23.3",
|
||||||
|
@ -2177,9 +2179,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/types": {
|
"node_modules/@babel/types": {
|
||||||
"version": "7.23.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
|
||||||
"integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==",
|
"integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-string-parser": "^7.23.4",
|
"@babel/helper-string-parser": "^7.23.4",
|
||||||
|
@ -2431,9 +2433,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/darwin-arm64": {
|
"node_modules/@esbuild/darwin-arm64": {
|
||||||
"version": "0.19.8",
|
"version": "0.19.9",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz",
|
||||||
"integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==",
|
"integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
|
@ -2510,9 +2512,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-arm64": {
|
"node_modules/@esbuild/linux-arm64": {
|
||||||
"version": "0.19.8",
|
"version": "0.19.9",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz",
|
||||||
"integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==",
|
"integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
|
@ -4580,9 +4582,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.0.tgz",
|
||||||
"integrity": "sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==",
|
"integrity": "sha512-+1ge/xmaJpm1KVBuIH38Z94zj9fBD+hp+/5WLaHgyY8XLq1ibxk/zj6dTXaqM2cAbYKq8jYlhHd6k05If1W5xA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
|
@ -4593,9 +4595,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-android-arm64": {
|
"node_modules/@rollup/rollup-android-arm64": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.0.tgz",
|
||||||
"integrity": "sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==",
|
"integrity": "sha512-im6hUEyQ7ZfoZdNvtwgEJvBWZYauC9KVKq1w58LG2Zfz6zMd8gRrbN+xCVoqA2hv/v6fm9lp5LFGJ3za8EQH3A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
|
@ -4606,9 +4608,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-darwin-arm64": {
|
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.0.tgz",
|
||||||
"integrity": "sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==",
|
"integrity": "sha512-u7aTMskN6Dmg1lCT0QJ+tINRt+ntUrvVkhbPfFz4bCwRZvjItx2nJtwJnJRlKMMaQCHRjrNqHRDYvE4mBm3DlQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
|
@ -4619,9 +4621,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-darwin-x64": {
|
"node_modules/@rollup/rollup-darwin-x64": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.0.tgz",
|
||||||
"integrity": "sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==",
|
"integrity": "sha512-8FvEl3w2ExmpcOmX5RJD0yqXcVSOqAJJUJ29Lca29Ik+3zPS1yFimr2fr5JSZ4Z5gt8/d7WqycpgkX9nocijSw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
|
@ -4632,9 +4634,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.0.tgz",
|
||||||
"integrity": "sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==",
|
"integrity": "sha512-lHoKYaRwd4gge+IpqJHCY+8Vc3hhdJfU6ukFnnrJasEBUvVlydP8PuwndbWfGkdgSvZhHfSEw6urrlBj0TSSfg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
|
@ -4645,9 +4647,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.0.tgz",
|
||||||
"integrity": "sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==",
|
"integrity": "sha512-JbEPfhndYeWHfOSeh4DOFvNXrj7ls9S/2omijVsao+LBPTPayT1uKcK3dHW3MwDJ7KO11t9m2cVTqXnTKpeaiw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
|
@ -4658,9 +4660,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.0.tgz",
|
||||||
"integrity": "sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==",
|
"integrity": "sha512-ahqcSXLlcV2XUBM3/f/C6cRoh7NxYA/W7Yzuv4bDU1YscTFw7ay4LmD7l6OS8EMhTNvcrWGkEettL1Bhjf+B+w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
|
@ -4670,10 +4672,23 @@
|
||||||
"linux"
|
"linux"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||||
|
"version": "4.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.0.tgz",
|
||||||
|
"integrity": "sha512-uwvOYNtLw8gVtrExKhdFsYHA/kotURUmZYlinH2VcQxNCQJeJXnkmWgw2hI9Xgzhgu7J9QvWiq9TtTVwWMDa+w==",
|
||||||
|
"cpu": [
|
||||||
|
"riscv64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.0.tgz",
|
||||||
"integrity": "sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==",
|
"integrity": "sha512-m6pkSwcZZD2LCFHZX/zW2aLIISyzWLU3hrLLzQKMI12+OLEzgruTovAxY5sCZJkipklaZqPy/2bEEBNjp+Y7xg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
|
@ -4684,9 +4699,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-x64-musl": {
|
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.0.tgz",
|
||||||
"integrity": "sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==",
|
"integrity": "sha512-VFAC1RDRSbU3iOF98X42KaVicAfKf0m0OvIu8dbnqhTe26Kh6Ym9JrDulz7Hbk7/9zGc41JkV02g+p3BivOdAg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
|
@ -4697,9 +4712,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.0.tgz",
|
||||||
"integrity": "sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==",
|
"integrity": "sha512-9jPgMvTKXARz4inw6jezMLA2ihDBvgIU9Ml01hjdVpOcMKyxFBJrn83KVQINnbeqDv0+HdO1c09hgZ8N0s820Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
|
@ -4710,9 +4725,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.0.tgz",
|
||||||
"integrity": "sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==",
|
"integrity": "sha512-WE4pT2kTXQN2bAv40Uog0AsV7/s9nT9HBWXAou8+++MBCnY51QS02KYtm6dQxxosKi1VIz/wZIrTQO5UP2EW+Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
|
@ -4723,9 +4738,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.0.tgz",
|
||||||
"integrity": "sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==",
|
"integrity": "sha512-aPP5Q5AqNGuT0tnuEkK/g4mnt3ZhheiXrDIiSVIHN9mcN21OyXDVbEMqmXPE7e2OplNLDkcvV+ZoGJa2ZImFgw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
|
@ -4736,98 +4751,98 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/feedback": {
|
"node_modules/@sentry-internal/feedback": {
|
||||||
"version": "7.86.0",
|
"version": "7.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.86.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.88.0.tgz",
|
||||||
"integrity": "sha512-6rl0JYjmAKnhm4/fuFaROh4Ht8oi9f6ZeIcViCuGJcrGICZJJY0s+R77XJI78rNa82PYFrSCcnWXcGji4T8E7g==",
|
"integrity": "sha512-lbK6jgO1I0M96nZQ99mcLSZ55ebwPAP6LhEWhkmc+eAfy97VpiY+qsbmgsmOzCEPqMmEUCEcI0rEZ7fiye2v2Q==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/core": "7.86.0",
|
"@sentry/core": "7.88.0",
|
||||||
"@sentry/types": "7.86.0",
|
"@sentry/types": "7.88.0",
|
||||||
"@sentry/utils": "7.86.0"
|
"@sentry/utils": "7.88.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/tracing": {
|
"node_modules/@sentry-internal/tracing": {
|
||||||
"version": "7.86.0",
|
"version": "7.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.86.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.88.0.tgz",
|
||||||
"integrity": "sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==",
|
"integrity": "sha512-xXQdcYhsS+ourzJHjXNjZC9zakuc97udmpgaXRjEP7FjPYclIx+YXwgFBdHM2kzAwZLFOsEce5dr46GVXUDfZw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/core": "7.86.0",
|
"@sentry/core": "7.88.0",
|
||||||
"@sentry/types": "7.86.0",
|
"@sentry/types": "7.88.0",
|
||||||
"@sentry/utils": "7.86.0"
|
"@sentry/utils": "7.88.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/browser": {
|
"node_modules/@sentry/browser": {
|
||||||
"version": "7.86.0",
|
"version": "7.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.86.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.88.0.tgz",
|
||||||
"integrity": "sha512-nfYWpVOmug+W7KJO7/xhA1JScMZcYHcoOVHLsUFm4znx51U4qZEk+zZDM11Q2Nw6MuDyEYg6bsH1QCwaoC6nLw==",
|
"integrity": "sha512-il4x3PB99nuU/OJQw2RltgYYbo8vtnYoIgneOeEiw4m0ppK1nKkMkd3vDRipGL6E/0i7IUmQfYYy6U10J5Rx+g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/feedback": "7.86.0",
|
"@sentry-internal/feedback": "7.88.0",
|
||||||
"@sentry-internal/tracing": "7.86.0",
|
"@sentry-internal/tracing": "7.88.0",
|
||||||
"@sentry/core": "7.86.0",
|
"@sentry/core": "7.88.0",
|
||||||
"@sentry/replay": "7.86.0",
|
"@sentry/replay": "7.88.0",
|
||||||
"@sentry/types": "7.86.0",
|
"@sentry/types": "7.88.0",
|
||||||
"@sentry/utils": "7.86.0"
|
"@sentry/utils": "7.88.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/core": {
|
"node_modules/@sentry/core": {
|
||||||
"version": "7.86.0",
|
"version": "7.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.86.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.88.0.tgz",
|
||||||
"integrity": "sha512-SbLvqd1bRYzhDS42u7GMnmbDMfth/zRiLElQWbLK/shmuZzTcfQSwNNdF4Yj+VfjOkqPFgGmICHSHVUc9dh01g==",
|
"integrity": "sha512-Jzbb7dcwiCO7kI0a1w+32UzWxbEn2OcZWzp55QMEeAh6nZ/5CXhXwpuHi0tW7doPj+cJdmxMTMu9LqMVfdGkzQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/types": "7.86.0",
|
"@sentry/types": "7.88.0",
|
||||||
"@sentry/utils": "7.86.0"
|
"@sentry/utils": "7.88.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/replay": {
|
"node_modules/@sentry/replay": {
|
||||||
"version": "7.86.0",
|
"version": "7.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.86.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.88.0.tgz",
|
||||||
"integrity": "sha512-YYZO8bfQSx1H87Te/zzyHPLHvExWiYwUfMWW68yGX+PPZIIzxaM81/iCQHkoucxlvuPCOtxCgf7RSMbsnqEa8g==",
|
"integrity": "sha512-em5dPKLPG7c/HGDbpIj3aHrWbA4iMwqjevqTzn+++KNO1YslkOosCaGsb1whU3AL1T9c3aIFIhZ4u3rNo+DxcA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/tracing": "7.86.0",
|
"@sentry-internal/tracing": "7.88.0",
|
||||||
"@sentry/core": "7.86.0",
|
"@sentry/core": "7.88.0",
|
||||||
"@sentry/types": "7.86.0",
|
"@sentry/types": "7.88.0",
|
||||||
"@sentry/utils": "7.86.0"
|
"@sentry/utils": "7.88.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/tracing": {
|
"node_modules/@sentry/tracing": {
|
||||||
"version": "7.86.0",
|
"version": "7.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.86.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.88.0.tgz",
|
||||||
"integrity": "sha512-WPqgmbLm6ntpIoTZd1L/RHIVEDMmvVjIDxKeXGiJeXHZG2VMtgwoxuZAFluVFaD0Sr20Nhj+ZS7HvKOWTxrjjA==",
|
"integrity": "sha512-Lj4hhLraalN4w3swXkP2do1hcaQVOuLvO6eJJbcwf10b+P4CcdlwAnqvxOOCNxA5VzG4/K2BqQ8LRU4S0Ulj9A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/tracing": "7.86.0"
|
"@sentry-internal/tracing": "7.88.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/types": {
|
"node_modules/@sentry/types": {
|
||||||
"version": "7.86.0",
|
"version": "7.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.86.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.88.0.tgz",
|
||||||
"integrity": "sha512-pGAt0+bMfWgo0KG2epthfNV4Wae03tURpoxNjGo5Fr4cXxvLTSijSAQ6rmmO4bXBJ7+rErEjX30g30o/eEdP9g==",
|
"integrity": "sha512-FvwvmX1pWAZKicPj4EpKyho8Wm+C4+r5LiepbbBF8oKwSPJdD2QV1fo/LWxsrzNxWOllFIVIXF5Ed3nPYQWpTw==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/utils": {
|
"node_modules/@sentry/utils": {
|
||||||
"version": "7.86.0",
|
"version": "7.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.86.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.88.0.tgz",
|
||||||
"integrity": "sha512-6PejFtw9VTFFy5vu0ks+U7Ozkqz+eMt+HN8AZKBKErYzX5/xs0kpkOcSRpu3ETdTYcZf8VAmLVgFgE2BE+3WuQ==",
|
"integrity": "sha512-ukminfRmdBXTzk49orwJf3Lu3hR60ZRHjE2a4IXwYhyDT6JJgJqgsq1hzGXx0AyFfyS4WhfZ6QUBy7fu3BScZQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/types": "7.86.0"
|
"@sentry/types": "7.88.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
|
@ -8023,16 +8038,16 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz",
|
||||||
"integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==",
|
"integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.5.1",
|
"@eslint-community/regexpp": "^4.5.1",
|
||||||
"@typescript-eslint/scope-manager": "6.13.2",
|
"@typescript-eslint/scope-manager": "6.14.0",
|
||||||
"@typescript-eslint/type-utils": "6.13.2",
|
"@typescript-eslint/type-utils": "6.14.0",
|
||||||
"@typescript-eslint/utils": "6.13.2",
|
"@typescript-eslint/utils": "6.14.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.13.2",
|
"@typescript-eslint/visitor-keys": "6.14.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"graphemer": "^1.4.0",
|
"graphemer": "^1.4.0",
|
||||||
"ignore": "^5.2.4",
|
"ignore": "^5.2.4",
|
||||||
|
@ -8091,15 +8106,15 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz",
|
||||||
"integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==",
|
"integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "6.13.2",
|
"@typescript-eslint/scope-manager": "6.14.0",
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"@typescript-eslint/typescript-estree": "6.13.2",
|
"@typescript-eslint/typescript-estree": "6.14.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.13.2",
|
"@typescript-eslint/visitor-keys": "6.14.0",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -8119,13 +8134,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz",
|
||||||
"integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==",
|
"integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.13.2"
|
"@typescript-eslint/visitor-keys": "6.14.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
|
@ -8136,13 +8151,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz",
|
||||||
"integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==",
|
"integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/typescript-estree": "6.13.2",
|
"@typescript-eslint/typescript-estree": "6.14.0",
|
||||||
"@typescript-eslint/utils": "6.13.2",
|
"@typescript-eslint/utils": "6.14.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ts-api-utils": "^1.0.1"
|
"ts-api-utils": "^1.0.1"
|
||||||
},
|
},
|
||||||
|
@ -8163,9 +8178,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz",
|
||||||
"integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==",
|
"integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
|
@ -8176,13 +8191,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz",
|
||||||
"integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==",
|
"integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.13.2",
|
"@typescript-eslint/visitor-keys": "6.14.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
|
@ -8236,17 +8251,17 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz",
|
||||||
"integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==",
|
"integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"@types/json-schema": "^7.0.12",
|
"@types/json-schema": "^7.0.12",
|
||||||
"@types/semver": "^7.5.0",
|
"@types/semver": "^7.5.0",
|
||||||
"@typescript-eslint/scope-manager": "6.13.2",
|
"@typescript-eslint/scope-manager": "6.14.0",
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"@typescript-eslint/typescript-estree": "6.13.2",
|
"@typescript-eslint/typescript-estree": "6.14.0",
|
||||||
"semver": "^7.5.4"
|
"semver": "^7.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -8294,12 +8309,12 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "6.13.2",
|
"version": "6.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz",
|
||||||
"integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==",
|
"integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.13.2",
|
"@typescript-eslint/types": "6.14.0",
|
||||||
"eslint-visitor-keys": "^3.4.1"
|
"eslint-visitor-keys": "^3.4.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -9011,9 +9026,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.21.10",
|
"version": "4.22.2",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
|
||||||
"integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
|
"integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -9030,10 +9045,10 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"caniuse-lite": "^1.0.30001517",
|
"caniuse-lite": "^1.0.30001565",
|
||||||
"electron-to-chromium": "^1.4.477",
|
"electron-to-chromium": "^1.4.601",
|
||||||
"node-releases": "^2.0.13",
|
"node-releases": "^2.0.14",
|
||||||
"update-browserslist-db": "^1.0.11"
|
"update-browserslist-db": "^1.0.13"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"browserslist": "cli.js"
|
"browserslist": "cli.js"
|
||||||
|
@ -9141,9 +9156,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001532",
|
"version": "1.0.30001568",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz",
|
||||||
"integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==",
|
"integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -10590,9 +10605,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.513",
|
"version": "1.4.610",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz",
|
||||||
"integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==",
|
"integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/elkjs": {
|
"node_modules/elkjs": {
|
||||||
|
@ -13734,9 +13749,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lit-analyzer": {
|
"node_modules/lit-analyzer": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-2.0.2.tgz",
|
||||||
"integrity": "sha512-4bHJLCbxywMHd9bnVkLDkCSHXs/KrlwUks75EhYtJNdzH07O5BSVdZdadbw4T2AvuYxb0xRO4ZjqgQJCkp8Kjg==",
|
"integrity": "sha512-Is3cx8ypCVq5uNl8EKkPdlLuV3HDVntDVUeLNQlzTM2Je3uG5wHcn+06NB+yhCoa4rhwwXCjprU/7g21CSFqOA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vscode/web-custom-data": "^0.4.2",
|
"@vscode/web-custom-data": "^0.4.2",
|
||||||
|
@ -15003,9 +15018,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
"version": "2.0.13",
|
"version": "2.0.14",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
|
||||||
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
|
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/non-layered-tidy-tree-layout": {
|
"node_modules/non-layered-tidy-tree-layout": {
|
||||||
|
@ -15708,9 +15723,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz",
|
||||||
"integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==",
|
"integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin/prettier.cjs"
|
"prettier": "bin/prettier.cjs"
|
||||||
|
@ -16658,9 +16673,9 @@
|
||||||
"integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
|
"integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
|
||||||
},
|
},
|
||||||
"node_modules/rollup": {
|
"node_modules/rollup": {
|
||||||
"version": "4.6.1",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.0.tgz",
|
||||||
"integrity": "sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==",
|
"integrity": "sha512-bUHW/9N21z64gw8s6tP4c88P382Bq/L5uZDowHlHx6s/QWpjJXivIAbEw6LZthgSvlEizZBfLC4OAvWe7aoF7A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"rollup": "dist/bin/rollup"
|
"rollup": "dist/bin/rollup"
|
||||||
|
@ -16670,18 +16685,19 @@
|
||||||
"npm": ">=8.0.0"
|
"npm": ">=8.0.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@rollup/rollup-android-arm-eabi": "4.6.1",
|
"@rollup/rollup-android-arm-eabi": "4.9.0",
|
||||||
"@rollup/rollup-android-arm64": "4.6.1",
|
"@rollup/rollup-android-arm64": "4.9.0",
|
||||||
"@rollup/rollup-darwin-arm64": "4.6.1",
|
"@rollup/rollup-darwin-arm64": "4.9.0",
|
||||||
"@rollup/rollup-darwin-x64": "4.6.1",
|
"@rollup/rollup-darwin-x64": "4.9.0",
|
||||||
"@rollup/rollup-linux-arm-gnueabihf": "4.6.1",
|
"@rollup/rollup-linux-arm-gnueabihf": "4.9.0",
|
||||||
"@rollup/rollup-linux-arm64-gnu": "4.6.1",
|
"@rollup/rollup-linux-arm64-gnu": "4.9.0",
|
||||||
"@rollup/rollup-linux-arm64-musl": "4.6.1",
|
"@rollup/rollup-linux-arm64-musl": "4.9.0",
|
||||||
"@rollup/rollup-linux-x64-gnu": "4.6.1",
|
"@rollup/rollup-linux-riscv64-gnu": "4.9.0",
|
||||||
"@rollup/rollup-linux-x64-musl": "4.6.1",
|
"@rollup/rollup-linux-x64-gnu": "4.9.0",
|
||||||
"@rollup/rollup-win32-arm64-msvc": "4.6.1",
|
"@rollup/rollup-linux-x64-musl": "4.9.0",
|
||||||
"@rollup/rollup-win32-ia32-msvc": "4.6.1",
|
"@rollup/rollup-win32-arm64-msvc": "4.9.0",
|
||||||
"@rollup/rollup-win32-x64-msvc": "4.6.1",
|
"@rollup/rollup-win32-ia32-msvc": "4.9.0",
|
||||||
|
"@rollup/rollup-win32-x64-msvc": "4.9.0",
|
||||||
"fsevents": "~2.3.2"
|
"fsevents": "~2.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -18179,9 +18195,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/turnstile-types": {
|
"node_modules/turnstile-types": {
|
||||||
"version": "1.1.3",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/turnstile-types/-/turnstile-types-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/turnstile-types/-/turnstile-types-1.2.0.tgz",
|
||||||
"integrity": "sha512-hurCjOLYMYU9OmUY2JX/ewHBcadUfOhHX1XgLx9A9Ig5TFl2NGqoyM4EyfaaClsROr95cT868rkgzxCvSCcY6A==",
|
"integrity": "sha512-cTtNEtCYpcXeXR5AOD0YR0xZpXk1iZeTOuXT5vAGNowGGdgapC+k6m/lOVSkmDOUopZmPtmu311XeULIro4gUA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/type-check": {
|
"node_modules/type-check": {
|
||||||
|
@ -18495,9 +18511,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/update-browserslist-db": {
|
"node_modules/update-browserslist-db": {
|
||||||
"version": "1.0.11",
|
"version": "1.0.13",
|
||||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
||||||
"integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
|
"integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
"lint:spelling": "codespell -D - -D ../.github/codespell-dictionary.txt -I ../.github/codespell-words.txt -S './src/locales/**' ./src -s",
|
"lint:spelling": "codespell -D - -D ../.github/codespell-dictionary.txt -I ../.github/codespell-words.txt -S './src/locales/**' ./src -s",
|
||||||
"lit-analyse": "lit-analyzer src",
|
"lit-analyse": "lit-analyzer src",
|
||||||
"precommit": "run-s tsc lit-analyse lint:precommit lint:spelling prettier",
|
"precommit": "run-s tsc lit-analyse lint:precommit lint:spelling prettier",
|
||||||
|
"prequick": "run-s tsc:execute lit-analyse lint:precommit lint:spelling",
|
||||||
"prettier-check": "prettier --check .",
|
"prettier-check": "prettier --check .",
|
||||||
"prettier": "prettier --write .",
|
"prettier": "prettier --write .",
|
||||||
"pseudolocalize:build-extract-script": "cd scripts && tsc --esModuleInterop --module es2020 --moduleResolution 'node' pseudolocalize.ts && mv pseudolocalize.js pseudolocalize.mjs",
|
"pseudolocalize:build-extract-script": "cd scripts && tsc --esModuleInterop --module es2020 --moduleResolution 'node' pseudolocalize.ts && mv pseudolocalize.js pseudolocalize.mjs",
|
||||||
|
@ -45,8 +46,8 @@
|
||||||
"@open-wc/lit-helpers": "^0.6.0",
|
"@open-wc/lit-helpers": "^0.6.0",
|
||||||
"@patternfly/elements": "^2.4.0",
|
"@patternfly/elements": "^2.4.0",
|
||||||
"@patternfly/patternfly": "^4.224.2",
|
"@patternfly/patternfly": "^4.224.2",
|
||||||
"@sentry/browser": "^7.86.0",
|
"@sentry/browser": "^7.88.0",
|
||||||
"@sentry/tracing": "^7.86.0",
|
"@sentry/tracing": "^7.88.0",
|
||||||
"@webcomponents/webcomponentsjs": "^2.8.0",
|
"@webcomponents/webcomponentsjs": "^2.8.0",
|
||||||
"base64-js": "^1.5.1",
|
"base64-js": "^1.5.1",
|
||||||
"chart.js": "^4.4.1",
|
"chart.js": "^4.4.1",
|
||||||
|
@ -64,13 +65,13 @@
|
||||||
"yaml": "^2.3.4"
|
"yaml": "^2.3.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.23.5",
|
"@babel/core": "^7.23.6",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||||
"@babel/plugin-proposal-decorators": "^7.23.5",
|
"@babel/plugin-proposal-decorators": "^7.23.6",
|
||||||
"@babel/plugin-transform-private-methods": "^7.23.3",
|
"@babel/plugin-transform-private-methods": "^7.23.3",
|
||||||
"@babel/plugin-transform-private-property-in-object": "^7.23.4",
|
"@babel/plugin-transform-private-property-in-object": "^7.23.4",
|
||||||
"@babel/plugin-transform-runtime": "^7.23.4",
|
"@babel/plugin-transform-runtime": "^7.23.6",
|
||||||
"@babel/preset-env": "^7.23.5",
|
"@babel/preset-env": "^7.23.6",
|
||||||
"@babel/preset-typescript": "^7.23.3",
|
"@babel/preset-typescript": "^7.23.3",
|
||||||
"@hcaptcha/types": "^1.0.3",
|
"@hcaptcha/types": "^1.0.3",
|
||||||
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
||||||
|
@ -87,14 +88,14 @@
|
||||||
"@storybook/api": "^7.6.4",
|
"@storybook/api": "^7.6.4",
|
||||||
"@storybook/blocks": "^7.6.4",
|
"@storybook/blocks": "^7.6.4",
|
||||||
"@storybook/manager-api": "^7.6.4",
|
"@storybook/manager-api": "^7.6.4",
|
||||||
"@storybook/web-components-vite": "^7.6.4",
|
|
||||||
"@storybook/web-components": "^7.6.4",
|
"@storybook/web-components": "^7.6.4",
|
||||||
|
"@storybook/web-components-vite": "^7.6.4",
|
||||||
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
||||||
"@types/chart.js": "^2.9.41",
|
"@types/chart.js": "^2.9.41",
|
||||||
"@types/codemirror": "5.60.15",
|
"@types/codemirror": "5.60.15",
|
||||||
"@types/grecaptcha": "^3.0.7",
|
"@types/grecaptcha": "^3.0.7",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
||||||
"@typescript-eslint/parser": "^6.13.2",
|
"@typescript-eslint/parser": "^6.14.0",
|
||||||
"babel-plugin-macros": "^3.1.0",
|
"babel-plugin-macros": "^3.1.0",
|
||||||
"babel-plugin-tsconfig-paths": "^1.0.3",
|
"babel-plugin-tsconfig-paths": "^1.0.3",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
|
@ -104,14 +105,14 @@
|
||||||
"eslint-plugin-lit": "^1.10.1",
|
"eslint-plugin-lit": "^1.10.1",
|
||||||
"eslint-plugin-sonarjs": "^0.23.0",
|
"eslint-plugin-sonarjs": "^0.23.0",
|
||||||
"eslint-plugin-storybook": "^0.6.15",
|
"eslint-plugin-storybook": "^0.6.15",
|
||||||
"lit-analyzer": "^2.0.1",
|
"lit-analyzer": "^2.0.2",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"prettier": "^3.1.0",
|
"prettier": "^3.1.1",
|
||||||
"pseudolocale": "^2.0.0",
|
"pseudolocale": "^2.0.0",
|
||||||
"pyright": "^1.1.338",
|
"pyright": "=1.1.338",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"rollup": "^4.6.1",
|
"rollup": "^4.9.0",
|
||||||
"rollup-plugin-copy": "^3.5.0",
|
"rollup-plugin-copy": "^3.5.0",
|
||||||
"rollup-plugin-cssimport": "^1.0.3",
|
"rollup-plugin-cssimport": "^1.0.3",
|
||||||
"rollup-plugin-postcss-lit": "^2.1.0",
|
"rollup-plugin-postcss-lit": "^2.1.0",
|
||||||
|
@ -119,14 +120,14 @@
|
||||||
"storybook-addon-mock": "^4.3.0",
|
"storybook-addon-mock": "^4.3.0",
|
||||||
"ts-lit-plugin": "^2.0.1",
|
"ts-lit-plugin": "^2.0.1",
|
||||||
"tslib": "^2.6.2",
|
"tslib": "^2.6.2",
|
||||||
"turnstile-types": "^1.1.3",
|
"turnstile-types": "^1.2.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"vite-tsconfig-paths": "^4.2.2"
|
"vite-tsconfig-paths": "^4.2.2"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@esbuild/darwin-arm64": "^0.19.8",
|
"@esbuild/darwin-arm64": "^0.19.9",
|
||||||
"@esbuild/linux-amd64": "^0.18.11",
|
"@esbuild/linux-amd64": "^0.18.11",
|
||||||
"@esbuild/linux-arm64": "^0.19.8"
|
"@esbuild/linux-arm64": "^0.19.9"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
|
|
|
@ -75,11 +75,9 @@ export class ApplicationForm extends ModelForm<Application, string> {
|
||||||
clearIcon = false;
|
clearIcon = false;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated application.");
|
? msg("Successfully updated application.")
|
||||||
} else {
|
: msg("Successfully created application.");
|
||||||
return msg("Successfully created application.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: Application): Promise<Application | void> {
|
async send(data: Application): Promise<Application | void> {
|
||||||
|
@ -142,21 +140,21 @@ export class ApplicationForm extends ModelForm<Application, string> {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html`<form class="pf-c-form pf-m-horizontal">
|
||||||
<ak-text-input
|
<ak-text-input
|
||||||
name="name"
|
name="name"
|
||||||
value=${this.instance?.name}
|
.value=${this.instance?.name}
|
||||||
label=${msg("Name")}
|
label=${msg("Name")}
|
||||||
required
|
required
|
||||||
help=${msg("Application's display Name.")}
|
help=${msg("Application's display Name.")}
|
||||||
></ak-text-input>
|
></ak-text-input>
|
||||||
<ak-text-input
|
<ak-text-input
|
||||||
name="slug"
|
name="slug"
|
||||||
value=${this.instance?.slug}
|
.value=${this.instance?.slug}
|
||||||
label=${msg("Slug")}
|
label=${msg("Slug")}
|
||||||
required
|
required
|
||||||
help=${msg("Internal application name used in URLs.")}
|
help=${msg("Internal application name used in URLs.")}
|
||||||
></ak-text-input>
|
></ak-text-input>
|
||||||
<ak-text-input
|
<ak-text-input
|
||||||
name="group"
|
name="group"
|
||||||
value=${this.instance?.group}
|
.value=${this.instance?.group}
|
||||||
label=${msg("Group")}
|
label=${msg("Group")}
|
||||||
help=${msg(
|
help=${msg(
|
||||||
"Optionally enter a group name. Applications with identical groups are shown grouped together.",
|
"Optionally enter a group name. Applications with identical groups are shown grouped together.",
|
||||||
|
@ -165,7 +163,7 @@ export class ApplicationForm extends ModelForm<Application, string> {
|
||||||
<ak-provider-search-input
|
<ak-provider-search-input
|
||||||
name="provider"
|
name="provider"
|
||||||
label=${msg("Provider")}
|
label=${msg("Provider")}
|
||||||
value=${this.instance?.provider}
|
.value=${this.instance?.provider}
|
||||||
help=${msg("Select a provider that this application should use.")}
|
help=${msg("Select a provider that this application should use.")}
|
||||||
blankable
|
blankable
|
||||||
></ak-provider-search-input>
|
></ak-provider-search-input>
|
||||||
|
@ -215,7 +213,7 @@ export class ApplicationForm extends ModelForm<Application, string> {
|
||||||
? html`<ak-file-input
|
? html`<ak-file-input
|
||||||
label="${msg("Icon")}"
|
label="${msg("Icon")}"
|
||||||
name="metaIcon"
|
name="metaIcon"
|
||||||
value=${this.instance?.metaIcon}
|
.value=${this.instance?.metaIcon}
|
||||||
current=${msg("Currently set to:")}
|
current=${msg("Currently set to:")}
|
||||||
></ak-file-input>
|
></ak-file-input>
|
||||||
${this.instance?.metaIcon
|
${this.instance?.metaIcon
|
||||||
|
|
|
@ -44,11 +44,9 @@ export class BlueprintForm extends ModelForm<BlueprintInstance, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated instance.");
|
? msg("Successfully updated instance.")
|
||||||
} else {
|
: msg("Successfully created instance.");
|
||||||
return msg("Successfully created instance.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles(): CSSResult[] {
|
static get styles(): CSSResult[] {
|
||||||
|
|
|
@ -26,11 +26,9 @@ export class BrandForm extends ModelForm<Brand, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated brand.");
|
? msg("Successfully updated brand.")
|
||||||
} else {
|
: msg("Successfully created brand.");
|
||||||
return msg("Successfully created brand.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: Brand): Promise<Brand> {
|
async send(data: Brand): Promise<Brand> {
|
||||||
|
@ -232,7 +230,7 @@ export class BrandForm extends ModelForm<Brand, string> {
|
||||||
name="webCertificate"
|
name="webCertificate"
|
||||||
>
|
>
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.webCertificate}
|
.certificate=${this.instance?.webCertificate}
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal label=${msg("Attributes")} name="attributes">
|
<ak-form-element-horizontal label=${msg("Attributes")} name="attributes">
|
||||||
|
|
|
@ -19,11 +19,9 @@ export class CertificateKeyPairForm extends ModelForm<CertificateKeyPair, string
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated certificate-key pair.");
|
? msg("Successfully updated certificate-key pair.")
|
||||||
} else {
|
: msg("Successfully created certificate-key pair.");
|
||||||
return msg("Successfully created certificate-key pair.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: CertificateKeyPair): Promise<CertificateKeyPair> {
|
async send(data: CertificateKeyPair): Promise<CertificateKeyPair> {
|
||||||
|
|
|
@ -37,11 +37,9 @@ export class RuleForm extends ModelForm<NotificationRule, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated rule.");
|
? msg("Successfully updated rule.")
|
||||||
} else {
|
: msg("Successfully created rule.");
|
||||||
return msg("Successfully created rule.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: NotificationRule): Promise<NotificationRule> {
|
async send(data: NotificationRule): Promise<NotificationRule> {
|
||||||
|
|
|
@ -36,11 +36,9 @@ export class TransportForm extends ModelForm<NotificationTransport, string> {
|
||||||
showWebhook = false;
|
showWebhook = false;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated transport.");
|
? msg("Successfully updated transport.")
|
||||||
} else {
|
: msg("Successfully created transport.");
|
||||||
return msg("Successfully created transport.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: NotificationTransport): Promise<NotificationTransport> {
|
async send(data: NotificationTransport): Promise<NotificationTransport> {
|
||||||
|
|
|
@ -34,11 +34,9 @@ export class FlowForm extends ModelForm<Flow, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated flow.");
|
? msg("Successfully updated flow.")
|
||||||
} else {
|
: msg("Successfully created flow.");
|
||||||
return msg("Successfully created flow.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
|
|
|
@ -46,11 +46,9 @@ export class GroupForm extends ModelForm<Group, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated group.");
|
? msg("Successfully updated group.")
|
||||||
} else {
|
: msg("Successfully created group.");
|
||||||
return msg("Successfully created group.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async load(): Promise<void> {
|
async load(): Promise<void> {
|
||||||
|
|
|
@ -79,11 +79,9 @@ export class OutpostForm extends ModelForm<Outpost, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated outpost.");
|
? msg("Successfully updated outpost.")
|
||||||
} else {
|
: msg("Successfully created outpost.");
|
||||||
return msg("Successfully created outpost.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: Outpost): Promise<Outpost> {
|
async send(data: Outpost): Promise<Outpost> {
|
||||||
|
|
|
@ -21,11 +21,9 @@ export class ServiceConnectionDockerForm extends ModelForm<DockerServiceConnecti
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated integration.");
|
? msg("Successfully updated integration.")
|
||||||
} else {
|
: msg("Successfully created integration.");
|
||||||
return msg("Successfully created integration.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: DockerServiceConnection): Promise<DockerServiceConnection> {
|
async send(data: DockerServiceConnection): Promise<DockerServiceConnection> {
|
||||||
|
@ -88,7 +86,7 @@ export class ServiceConnectionDockerForm extends ModelForm<DockerServiceConnecti
|
||||||
name="tlsVerification"
|
name="tlsVerification"
|
||||||
>
|
>
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.tlsVerification}
|
.certificate=${this.instance?.tlsVerification}
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg(
|
${msg(
|
||||||
|
@ -101,7 +99,7 @@ export class ServiceConnectionDockerForm extends ModelForm<DockerServiceConnecti
|
||||||
name="tlsAuthentication"
|
name="tlsAuthentication"
|
||||||
>
|
>
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.tlsAuthentication}
|
.certificate=${this.instance?.tlsAuthentication}
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg(
|
${msg(
|
||||||
|
|
|
@ -25,11 +25,9 @@ export class ServiceConnectionKubernetesForm extends ModelForm<
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated integration.");
|
? msg("Successfully updated integration.")
|
||||||
} else {
|
: msg("Successfully created integration.");
|
||||||
return msg("Successfully created integration.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: KubernetesServiceConnection): Promise<KubernetesServiceConnection> {
|
async send(data: KubernetesServiceConnection): Promise<KubernetesServiceConnection> {
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
||||||
|
|
||||||
|
import { msg } from "@lit/localize";
|
||||||
|
|
||||||
|
export abstract class BasePolicyForm<T> extends ModelForm<T, string> {
|
||||||
|
getSuccessMessage(): string {
|
||||||
|
return this.instance
|
||||||
|
? msg("Successfully updated policy.")
|
||||||
|
: msg("Successfully created policy.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -12,21 +12,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { DummyPolicy, PoliciesApi } from "@goauthentik/api";
|
import { DummyPolicy, PoliciesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-policy-dummy-form")
|
@customElement("ak-policy-dummy-form")
|
||||||
export class DummyPolicyForm extends ModelForm<DummyPolicy, string> {
|
export class DummyPolicyForm extends BasePolicyForm<DummyPolicy> {
|
||||||
loadInstance(pk: string): Promise<DummyPolicy> {
|
loadInstance(pk: string): Promise<DummyPolicy> {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesDummyRetrieve({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesDummyRetrieve({
|
||||||
policyUuid: pk,
|
policyUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated policy.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created policy.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: DummyPolicy): Promise<DummyPolicy> {
|
async send(data: DummyPolicy): Promise<DummyPolicy> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesDummyUpdate({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesDummyUpdate({
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -20,21 +20,13 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-policy-event-matcher-form")
|
@customElement("ak-policy-event-matcher-form")
|
||||||
export class EventMatcherPolicyForm extends ModelForm<EventMatcherPolicy, string> {
|
export class EventMatcherPolicyForm extends BasePolicyForm<EventMatcherPolicy> {
|
||||||
loadInstance(pk: string): Promise<EventMatcherPolicy> {
|
loadInstance(pk: string): Promise<EventMatcherPolicy> {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesEventMatcherRetrieve({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesEventMatcherRetrieve({
|
||||||
policyUuid: pk,
|
policyUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated policy.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created policy.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: EventMatcherPolicy): Promise<EventMatcherPolicy> {
|
async send(data: EventMatcherPolicy): Promise<EventMatcherPolicy> {
|
||||||
if (data.action?.toString() === "") data.action = null;
|
if (data.action?.toString() === "") data.action = null;
|
||||||
if (data.clientIp?.toString() === "") data.clientIp = null;
|
if (data.clientIp?.toString() === "") data.clientIp = null;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -12,21 +12,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { PasswordExpiryPolicy, PoliciesApi } from "@goauthentik/api";
|
import { PasswordExpiryPolicy, PoliciesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-policy-password-expiry-form")
|
@customElement("ak-policy-password-expiry-form")
|
||||||
export class PasswordExpiryPolicyForm extends ModelForm<PasswordExpiryPolicy, string> {
|
export class PasswordExpiryPolicyForm extends BasePolicyForm<PasswordExpiryPolicy> {
|
||||||
loadInstance(pk: string): Promise<PasswordExpiryPolicy> {
|
loadInstance(pk: string): Promise<PasswordExpiryPolicy> {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordExpiryRetrieve({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordExpiryRetrieve({
|
||||||
policyUuid: pk,
|
policyUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated policy.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created policy.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: PasswordExpiryPolicy): Promise<PasswordExpiryPolicy> {
|
async send(data: PasswordExpiryPolicy): Promise<PasswordExpiryPolicy> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordExpiryUpdate({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordExpiryUpdate({
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { docLink } from "@goauthentik/common/global";
|
import { docLink } from "@goauthentik/common/global";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
|
@ -5,7 +6,6 @@ import "@goauthentik/elements/CodeMirror";
|
||||||
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -15,21 +15,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { ExpressionPolicy, PoliciesApi } from "@goauthentik/api";
|
import { ExpressionPolicy, PoliciesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-policy-expression-form")
|
@customElement("ak-policy-expression-form")
|
||||||
export class ExpressionPolicyForm extends ModelForm<ExpressionPolicy, string> {
|
export class ExpressionPolicyForm extends BasePolicyForm<ExpressionPolicy> {
|
||||||
loadInstance(pk: string): Promise<ExpressionPolicy> {
|
loadInstance(pk: string): Promise<ExpressionPolicy> {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesExpressionRetrieve({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesExpressionRetrieve({
|
||||||
policyUuid: pk,
|
policyUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated policy.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created policy.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: ExpressionPolicy): Promise<ExpressionPolicy> {
|
async send(data: ExpressionPolicy): Promise<ExpressionPolicy> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesExpressionUpdate({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesExpressionUpdate({
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -12,7 +12,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { PasswordPolicy, PoliciesApi } from "@goauthentik/api";
|
import { PasswordPolicy, PoliciesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-policy-password-form")
|
@customElement("ak-policy-password-form")
|
||||||
export class PasswordPolicyForm extends ModelForm<PasswordPolicy, string> {
|
export class PasswordPolicyForm extends BasePolicyForm<PasswordPolicy> {
|
||||||
@state()
|
@state()
|
||||||
showStatic = true;
|
showStatic = true;
|
||||||
|
|
||||||
|
@ -32,14 +32,6 @@ export class PasswordPolicyForm extends ModelForm<PasswordPolicy, string> {
|
||||||
return policy;
|
return policy;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated policy.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created policy.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: PasswordPolicy): Promise<PasswordPolicy> {
|
async send(data: PasswordPolicy): Promise<PasswordPolicy> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordUpdate({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordUpdate({
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -12,21 +12,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { PoliciesApi, ReputationPolicy } from "@goauthentik/api";
|
import { PoliciesApi, ReputationPolicy } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-policy-reputation-form")
|
@customElement("ak-policy-reputation-form")
|
||||||
export class ReputationPolicyForm extends ModelForm<ReputationPolicy, string> {
|
export class ReputationPolicyForm extends BasePolicyForm<ReputationPolicy> {
|
||||||
loadInstance(pk: string): Promise<ReputationPolicy> {
|
loadInstance(pk: string): Promise<ReputationPolicy> {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesReputationRetrieve({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesReputationRetrieve({
|
||||||
policyUuid: pk,
|
policyUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated policy.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created policy.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: ReputationPolicy): Promise<ReputationPolicy> {
|
async send(data: ReputationPolicy): Promise<ReputationPolicy> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PoliciesApi(DEFAULT_CONFIG).policiesReputationUpdate({
|
return new PoliciesApi(DEFAULT_CONFIG).policiesReputationUpdate({
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
||||||
|
|
||||||
|
import { msg } from "@lit/localize";
|
||||||
|
|
||||||
|
export abstract class BasePropertyMappingForm<T> extends ModelForm<T, string> {
|
||||||
|
getSuccessMessage(): string {
|
||||||
|
return this.instance
|
||||||
|
? msg("Successfully updated mapping.")
|
||||||
|
: msg("Successfully created mapping.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { BasePropertyMappingForm } from "@goauthentik/admin/property-mappings/BasePropertyMappingForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { docLink } from "@goauthentik/common/global";
|
import { docLink } from "@goauthentik/common/global";
|
||||||
import "@goauthentik/elements/CodeMirror";
|
import "@goauthentik/elements/CodeMirror";
|
||||||
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -13,21 +13,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { LDAPPropertyMapping, PropertymappingsApi } from "@goauthentik/api";
|
import { LDAPPropertyMapping, PropertymappingsApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-property-mapping-ldap-form")
|
@customElement("ak-property-mapping-ldap-form")
|
||||||
export class PropertyMappingLDAPForm extends ModelForm<LDAPPropertyMapping, string> {
|
export class PropertyMappingLDAPForm extends BasePropertyMappingForm<LDAPPropertyMapping> {
|
||||||
loadInstance(pk: string): Promise<LDAPPropertyMapping> {
|
loadInstance(pk: string): Promise<LDAPPropertyMapping> {
|
||||||
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsLdapRetrieve({
|
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsLdapRetrieve({
|
||||||
pmUuid: pk,
|
pmUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated mapping.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created mapping.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: LDAPPropertyMapping): Promise<LDAPPropertyMapping> {
|
async send(data: LDAPPropertyMapping): Promise<LDAPPropertyMapping> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsLdapUpdate({
|
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsLdapUpdate({
|
||||||
|
|
|
@ -21,11 +21,9 @@ export class PropertyMappingNotification extends ModelForm<NotificationWebhookMa
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated mapping.");
|
? msg("Successfully updated mapping.")
|
||||||
} else {
|
: msg("Successfully created mapping.");
|
||||||
return msg("Successfully created mapping.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: NotificationWebhookMapping): Promise<NotificationWebhookMapping> {
|
async send(data: NotificationWebhookMapping): Promise<NotificationWebhookMapping> {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { BasePropertyMappingForm } from "@goauthentik/admin/property-mappings/BasePropertyMappingForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { docLink } from "@goauthentik/common/global";
|
import { docLink } from "@goauthentik/common/global";
|
||||||
import "@goauthentik/elements/CodeMirror";
|
import "@goauthentik/elements/CodeMirror";
|
||||||
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -13,21 +13,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { PropertymappingsApi, SAMLPropertyMapping } from "@goauthentik/api";
|
import { PropertymappingsApi, SAMLPropertyMapping } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-property-mapping-saml-form")
|
@customElement("ak-property-mapping-saml-form")
|
||||||
export class PropertyMappingSAMLForm extends ModelForm<SAMLPropertyMapping, string> {
|
export class PropertyMappingSAMLForm extends BasePropertyMappingForm<SAMLPropertyMapping> {
|
||||||
loadInstance(pk: string): Promise<SAMLPropertyMapping> {
|
loadInstance(pk: string): Promise<SAMLPropertyMapping> {
|
||||||
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsSamlRetrieve({
|
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsSamlRetrieve({
|
||||||
pmUuid: pk,
|
pmUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated mapping.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created mapping.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: SAMLPropertyMapping): Promise<SAMLPropertyMapping> {
|
async send(data: SAMLPropertyMapping): Promise<SAMLPropertyMapping> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsSamlUpdate({
|
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsSamlUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { BasePropertyMappingForm } from "@goauthentik/admin/property-mappings/BasePropertyMappingForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { docLink } from "@goauthentik/common/global";
|
import { docLink } from "@goauthentik/common/global";
|
||||||
import "@goauthentik/elements/CodeMirror";
|
import "@goauthentik/elements/CodeMirror";
|
||||||
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -13,21 +13,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { PropertymappingsApi, SCIMMapping } from "@goauthentik/api";
|
import { PropertymappingsApi, SCIMMapping } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-property-mapping-scim-form")
|
@customElement("ak-property-mapping-scim-form")
|
||||||
export class PropertyMappingSCIMForm extends ModelForm<SCIMMapping, string> {
|
export class PropertyMappingSCIMForm extends BasePropertyMappingForm<SCIMMapping> {
|
||||||
loadInstance(pk: string): Promise<SCIMMapping> {
|
loadInstance(pk: string): Promise<SCIMMapping> {
|
||||||
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScimRetrieve({
|
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScimRetrieve({
|
||||||
pmUuid: pk,
|
pmUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated mapping.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created mapping.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: SCIMMapping): Promise<SCIMMapping> {
|
async send(data: SCIMMapping): Promise<SCIMMapping> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScimUpdate({
|
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScimUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { BasePropertyMappingForm } from "@goauthentik/admin/property-mappings/BasePropertyMappingForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { docLink } from "@goauthentik/common/global";
|
import { docLink } from "@goauthentik/common/global";
|
||||||
import "@goauthentik/elements/CodeMirror";
|
import "@goauthentik/elements/CodeMirror";
|
||||||
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -13,21 +13,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { PropertymappingsApi, ScopeMapping } from "@goauthentik/api";
|
import { PropertymappingsApi, ScopeMapping } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-property-mapping-scope-form")
|
@customElement("ak-property-mapping-scope-form")
|
||||||
export class PropertyMappingScopeForm extends ModelForm<ScopeMapping, string> {
|
export class PropertyMappingScopeForm extends BasePropertyMappingForm<ScopeMapping> {
|
||||||
loadInstance(pk: string): Promise<ScopeMapping> {
|
loadInstance(pk: string): Promise<ScopeMapping> {
|
||||||
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScopeRetrieve({
|
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScopeRetrieve({
|
||||||
pmUuid: pk,
|
pmUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated mapping.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created mapping.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: ScopeMapping): Promise<ScopeMapping> {
|
async send(data: ScopeMapping): Promise<ScopeMapping> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScopeUpdate({
|
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScopeUpdate({
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
||||||
|
|
||||||
|
import { msg } from "@lit/localize";
|
||||||
|
|
||||||
|
export abstract class BaseProviderForm<T> extends ModelForm<T, number> {
|
||||||
|
getSuccessMessage(): string {
|
||||||
|
return this.instance
|
||||||
|
? msg("Successfully updated provider.")
|
||||||
|
: msg("Successfully created provider.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,11 +1,11 @@
|
||||||
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
||||||
import "@goauthentik/admin/common/ak-flow-search/ak-branded-flow-search";
|
import "@goauthentik/admin/common/ak-flow-search/ak-branded-flow-search";
|
||||||
|
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import { rootInterface } from "@goauthentik/elements/Base";
|
import { rootInterface } from "@goauthentik/elements/Base";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
|
@ -25,21 +25,13 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-provider-ldap-form")
|
@customElement("ak-provider-ldap-form")
|
||||||
export class LDAPProviderFormPage extends ModelForm<LDAPProvider, number> {
|
export class LDAPProviderFormPage extends BaseProviderForm<LDAPProvider> {
|
||||||
async loadInstance(pk: number): Promise<LDAPProvider> {
|
async loadInstance(pk: number): Promise<LDAPProvider> {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersLdapRetrieve({
|
return new ProvidersApi(DEFAULT_CONFIG).providersLdapRetrieve({
|
||||||
id: pk,
|
id: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated provider.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created provider.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: LDAPProvider): Promise<LDAPProvider> {
|
async send(data: LDAPProvider): Promise<LDAPProvider> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersLdapUpdate({
|
return new ProvidersApi(DEFAULT_CONFIG).providersLdapUpdate({
|
||||||
|
@ -206,7 +198,7 @@ export class LDAPProviderFormPage extends ModelForm<LDAPProvider, number> {
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal label=${msg("Certificate")} name="certificate">
|
<ak-form-element-horizontal label=${msg("Certificate")} name="certificate">
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.certificate}
|
.certificate=${this.instance?.certificate}
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg(
|
${msg(
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
||||||
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
|
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
|
||||||
|
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { ascii_letters, digits, first, randomString } from "@goauthentik/common/utils";
|
import { ascii_letters, digits, first, randomString } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/components/ak-radio-input";
|
import "@goauthentik/components/ak-radio-input";
|
||||||
|
@ -7,7 +8,6 @@ import "@goauthentik/components/ak-text-input";
|
||||||
import "@goauthentik/components/ak-textarea-input";
|
import "@goauthentik/components/ak-textarea-input";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
||||||
|
@ -116,7 +116,7 @@ export const redirectUriHelp = html`${redirectUriHelpMessages.map(
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@customElement("ak-provider-oauth2-form")
|
@customElement("ak-provider-oauth2-form")
|
||||||
export class OAuth2ProviderFormPage extends ModelForm<OAuth2Provider, number> {
|
export class OAuth2ProviderFormPage extends BaseProviderForm<OAuth2Provider> {
|
||||||
propertyMappings?: PaginatedScopeMappingList;
|
propertyMappings?: PaginatedScopeMappingList;
|
||||||
oauthSources?: PaginatedOAuthSourceList;
|
oauthSources?: PaginatedOAuthSourceList;
|
||||||
|
|
||||||
|
@ -143,14 +143,6 @@ export class OAuth2ProviderFormPage extends ModelForm<OAuth2Provider, number> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated provider.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created provider.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: OAuth2Provider): Promise<OAuth2Provider> {
|
async send(data: OAuth2Provider): Promise<OAuth2Provider> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersOauth2Update({
|
return new ProvidersApi(DEFAULT_CONFIG).providersOauth2Update({
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
||||||
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
|
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
|
||||||
|
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/components/ak-toggle-group";
|
import "@goauthentik/components/ak-toggle-group";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-provider-proxy-form")
|
@customElement("ak-provider-proxy-form")
|
||||||
export class ProxyProviderFormPage extends ModelForm<ProxyProvider, number> {
|
export class ProxyProviderFormPage extends BaseProviderForm<ProxyProvider> {
|
||||||
static get styles(): CSSResult[] {
|
static get styles(): CSSResult[] {
|
||||||
return [...super.styles, PFContent, PFList, PFSpacing];
|
return [...super.styles, PFContent, PFList, PFSpacing];
|
||||||
}
|
}
|
||||||
|
@ -65,14 +65,6 @@ export class ProxyProviderFormPage extends ModelForm<ProxyProvider, number> {
|
||||||
@state()
|
@state()
|
||||||
mode: ProxyMode = ProxyMode.Proxy;
|
mode: ProxyMode = ProxyMode.Proxy;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated provider.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created provider.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: ProxyProvider): Promise<ProxyProvider> {
|
async send(data: ProxyProvider): Promise<ProxyProvider> {
|
||||||
data.mode = this.mode;
|
data.mode = this.mode;
|
||||||
if (this.mode !== ProxyMode.ForwardDomain) {
|
if (this.mode !== ProxyMode.ForwardDomain) {
|
||||||
|
@ -324,7 +316,7 @@ export class ProxyProviderFormPage extends ModelForm<ProxyProvider, number> {
|
||||||
<div slot="body" class="pf-c-form">
|
<div slot="body" class="pf-c-form">
|
||||||
<ak-form-element-horizontal label=${msg("Certificate")} name="certificate">
|
<ak-form-element-horizontal label=${msg("Certificate")} name="certificate">
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.certificate}
|
.certificate=${this.instance?.certificate}
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { ascii_letters, digits, first, randomString } from "@goauthentik/common/utils";
|
import { ascii_letters, digits, first, randomString } from "@goauthentik/common/utils";
|
||||||
import { rootInterface } from "@goauthentik/elements/Base";
|
import { rootInterface } from "@goauthentik/elements/Base";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -14,21 +14,13 @@ import { customElement } from "lit/decorators.js";
|
||||||
import { FlowsInstancesListDesignationEnum, ProvidersApi, RadiusProvider } from "@goauthentik/api";
|
import { FlowsInstancesListDesignationEnum, ProvidersApi, RadiusProvider } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-provider-radius-form")
|
@customElement("ak-provider-radius-form")
|
||||||
export class RadiusProviderFormPage extends ModelForm<RadiusProvider, number> {
|
export class RadiusProviderFormPage extends BaseProviderForm<RadiusProvider> {
|
||||||
loadInstance(pk: number): Promise<RadiusProvider> {
|
loadInstance(pk: number): Promise<RadiusProvider> {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersRadiusRetrieve({
|
return new ProvidersApi(DEFAULT_CONFIG).providersRadiusRetrieve({
|
||||||
id: pk,
|
id: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated provider.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created provider.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: RadiusProvider): Promise<RadiusProvider> {
|
async send(data: RadiusProvider): Promise<RadiusProvider> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersRadiusUpdate({
|
return new ProvidersApi(DEFAULT_CONFIG).providersRadiusUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
||||||
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
|
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
|
||||||
|
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
||||||
|
@ -27,7 +27,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-provider-saml-form")
|
@customElement("ak-provider-saml-form")
|
||||||
export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
|
export class SAMLProviderFormPage extends BaseProviderForm<SAMLProvider> {
|
||||||
loadInstance(pk: number): Promise<SAMLProvider> {
|
loadInstance(pk: number): Promise<SAMLProvider> {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersSamlRetrieve({
|
return new ProvidersApi(DEFAULT_CONFIG).providersSamlRetrieve({
|
||||||
id: pk,
|
id: pk,
|
||||||
|
@ -44,14 +44,6 @@ export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
|
||||||
|
|
||||||
propertyMappings?: PaginatedSAMLPropertyMappingList;
|
propertyMappings?: PaginatedSAMLPropertyMappingList;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated provider.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created provider.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: SAMLProvider): Promise<SAMLProvider> {
|
async send(data: SAMLProvider): Promise<SAMLProvider> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersSamlUpdate({
|
return new ProvidersApi(DEFAULT_CONFIG).providersSamlUpdate({
|
||||||
|
@ -175,7 +167,7 @@ export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
|
||||||
name="signingKp"
|
name="signingKp"
|
||||||
>
|
>
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.signingKp}
|
.certificate=${this.instance?.signingKp}
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg(
|
${msg(
|
||||||
|
@ -188,7 +180,7 @@ export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
|
||||||
name="verificationKp"
|
name="verificationKp"
|
||||||
>
|
>
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.verificationKp}
|
.certificate=${this.instance?.verificationKp}
|
||||||
nokey
|
nokey
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-provider-scim-form")
|
@customElement("ak-provider-scim-form")
|
||||||
export class SCIMProviderFormPage extends ModelForm<SCIMProvider, number> {
|
export class SCIMProviderFormPage extends BaseProviderForm<SCIMProvider> {
|
||||||
loadInstance(pk: number): Promise<SCIMProvider> {
|
loadInstance(pk: number): Promise<SCIMProvider> {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersScimRetrieve({
|
return new ProvidersApi(DEFAULT_CONFIG).providersScimRetrieve({
|
||||||
id: pk,
|
id: pk,
|
||||||
|
@ -39,14 +39,6 @@ export class SCIMProviderFormPage extends ModelForm<SCIMProvider, number> {
|
||||||
|
|
||||||
propertyMappings?: PaginatedSCIMMappingList;
|
propertyMappings?: PaginatedSCIMMappingList;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated provider.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created provider.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: SCIMProvider): Promise<SCIMProvider> {
|
async send(data: SCIMProvider): Promise<SCIMProvider> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new ProvidersApi(DEFAULT_CONFIG).providersScimUpdate({
|
return new ProvidersApi(DEFAULT_CONFIG).providersScimUpdate({
|
||||||
|
|
|
@ -21,11 +21,9 @@ export class RoleForm extends ModelForm<Role, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated role.");
|
? msg("Successfully updated role.")
|
||||||
} else {
|
: msg("Successfully created role.");
|
||||||
return msg("Successfully created role.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: Role): Promise<Role> {
|
async send(data: Role): Promise<Role> {
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
||||||
|
|
||||||
|
import { msg } from "@lit/localize";
|
||||||
|
|
||||||
|
export abstract class BaseSourceForm<T> extends ModelForm<T, string> {
|
||||||
|
getSuccessMessage(): string {
|
||||||
|
return this.instance
|
||||||
|
? msg("Successfully updated source.")
|
||||||
|
: msg("Successfully created source.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,10 +1,10 @@
|
||||||
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
||||||
import { placeholderHelperText } from "@goauthentik/admin/helperText";
|
import { placeholderHelperText } from "@goauthentik/admin/helperText";
|
||||||
|
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -24,7 +24,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-source-ldap-form")
|
@customElement("ak-source-ldap-form")
|
||||||
export class LDAPSourceForm extends ModelForm<LDAPSource, string> {
|
export class LDAPSourceForm extends BaseSourceForm<LDAPSource> {
|
||||||
loadInstance(pk: string): Promise<LDAPSource> {
|
loadInstance(pk: string): Promise<LDAPSource> {
|
||||||
return new SourcesApi(DEFAULT_CONFIG).sourcesLdapRetrieve({
|
return new SourcesApi(DEFAULT_CONFIG).sourcesLdapRetrieve({
|
||||||
slug: pk,
|
slug: pk,
|
||||||
|
@ -41,14 +41,6 @@ export class LDAPSourceForm extends ModelForm<LDAPSource, string> {
|
||||||
|
|
||||||
propertyMappings?: PaginatedLDAPPropertyMappingList;
|
propertyMappings?: PaginatedLDAPPropertyMappingList;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated source.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created source.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: LDAPSource): Promise<LDAPSource> {
|
async send(data: LDAPSource): Promise<LDAPSource> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new SourcesApi(DEFAULT_CONFIG).sourcesLdapPartialUpdate({
|
return new SourcesApi(DEFAULT_CONFIG).sourcesLdapPartialUpdate({
|
||||||
|
@ -206,7 +198,7 @@ export class LDAPSourceForm extends ModelForm<LDAPSource, string> {
|
||||||
name="peerCertificate"
|
name="peerCertificate"
|
||||||
>
|
>
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.peerCertificate}
|
.certificate=${this.instance?.peerCertificate}
|
||||||
nokey
|
nokey
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
|
@ -220,7 +212,7 @@ export class LDAPSourceForm extends ModelForm<LDAPSource, string> {
|
||||||
name="clientCertificate"
|
name="clientCertificate"
|
||||||
>
|
>
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.clientCertificate}
|
.certificate=${this.instance?.clientCertificate}
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg(
|
${msg(
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
|
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
|
||||||
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
|
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
|
||||||
|
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
|
||||||
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
|
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
|
||||||
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
|
@ -8,7 +9,6 @@ import "@goauthentik/elements/CodeMirror";
|
||||||
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -28,7 +28,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-source-oauth-form")
|
@customElement("ak-source-oauth-form")
|
||||||
export class OAuthSourceForm extends ModelForm<OAuthSource, string> {
|
export class OAuthSourceForm extends BaseSourceForm<OAuthSource> {
|
||||||
async loadInstance(pk: string): Promise<OAuthSource> {
|
async loadInstance(pk: string): Promise<OAuthSource> {
|
||||||
const source = await new SourcesApi(DEFAULT_CONFIG).sourcesOauthRetrieve({
|
const source = await new SourcesApi(DEFAULT_CONFIG).sourcesOauthRetrieve({
|
||||||
slug: pk,
|
slug: pk,
|
||||||
|
@ -61,14 +61,6 @@ export class OAuthSourceForm extends ModelForm<OAuthSource, string> {
|
||||||
@state()
|
@state()
|
||||||
clearIcon = false;
|
clearIcon = false;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated source.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created source.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: OAuthSource): Promise<OAuthSource> {
|
async send(data: OAuthSource): Promise<OAuthSource> {
|
||||||
data.providerType = (this.providerType?.slug || "") as ProviderTypeEnum;
|
data.providerType = (this.providerType?.slug || "") as ProviderTypeEnum;
|
||||||
let source: OAuthSource;
|
let source: OAuthSource;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
|
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
|
||||||
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
|
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
|
||||||
|
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
|
||||||
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
|
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
|
||||||
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
|
||||||
import { PlexAPIClient, PlexResource, popupCenterScreen } from "@goauthentik/common/helpers/plex";
|
import { PlexAPIClient, PlexResource, popupCenterScreen } from "@goauthentik/common/helpers/plex";
|
||||||
|
@ -7,7 +8,6 @@ import { ascii_letters, digits, first, randomString } from "@goauthentik/common/
|
||||||
import { rootInterface } from "@goauthentik/elements/Base";
|
import { rootInterface } from "@goauthentik/elements/Base";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -24,7 +24,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-source-plex-form")
|
@customElement("ak-source-plex-form")
|
||||||
export class PlexSourceForm extends ModelForm<PlexSource, string> {
|
export class PlexSourceForm extends BaseSourceForm<PlexSource> {
|
||||||
async loadInstance(pk: string): Promise<PlexSource> {
|
async loadInstance(pk: string): Promise<PlexSource> {
|
||||||
const source = await new SourcesApi(DEFAULT_CONFIG).sourcesPlexRetrieve({
|
const source = await new SourcesApi(DEFAULT_CONFIG).sourcesPlexRetrieve({
|
||||||
slug: pk,
|
slug: pk,
|
||||||
|
@ -50,14 +50,6 @@ export class PlexSourceForm extends ModelForm<PlexSource, string> {
|
||||||
} as PlexSource;
|
} as PlexSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated source.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created source.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: PlexSource): Promise<PlexSource> {
|
async send(data: PlexSource): Promise<PlexSource> {
|
||||||
data.plexToken = this.plexToken || "";
|
data.plexToken = this.plexToken || "";
|
||||||
let source: PlexSource;
|
let source: PlexSource;
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
import "@goauthentik/admin/common/ak-crypto-certificate-search";
|
||||||
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
|
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
|
||||||
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
|
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
|
||||||
|
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
|
||||||
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
|
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
|
||||||
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import { rootInterface } from "@goauthentik/elements/Base";
|
import { rootInterface } from "@goauthentik/elements/Base";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-source-saml-form")
|
@customElement("ak-source-saml-form")
|
||||||
export class SAMLSourceForm extends ModelForm<SAMLSource, string> {
|
export class SAMLSourceForm extends BaseSourceForm<SAMLSource> {
|
||||||
@state()
|
@state()
|
||||||
clearIcon = false;
|
clearIcon = false;
|
||||||
|
|
||||||
|
@ -41,14 +41,6 @@ export class SAMLSourceForm extends ModelForm<SAMLSource, string> {
|
||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated source.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created source.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: SAMLSource): Promise<SAMLSource> {
|
async send(data: SAMLSource): Promise<SAMLSource> {
|
||||||
let source: SAMLSource;
|
let source: SAMLSource;
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
|
@ -272,7 +264,7 @@ export class SAMLSourceForm extends ModelForm<SAMLSource, string> {
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal label=${msg("Signing keypair")} name="signingKp">
|
<ak-form-element-horizontal label=${msg("Signing keypair")} name="signingKp">
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.signingKp}
|
.certificate=${this.instance?.signingKp}
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg(
|
${msg(
|
||||||
|
@ -285,7 +277,7 @@ export class SAMLSourceForm extends ModelForm<SAMLSource, string> {
|
||||||
name="verificationKp"
|
name="verificationKp"
|
||||||
>
|
>
|
||||||
<ak-crypto-certificate-search
|
<ak-crypto-certificate-search
|
||||||
certificate=${this.instance?.verificationKp}
|
.certificate=${this.instance?.verificationKp}
|
||||||
nokey
|
nokey
|
||||||
></ak-crypto-certificate-search>
|
></ak-crypto-certificate-search>
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
||||||
|
|
||||||
|
import { msg } from "@lit/localize";
|
||||||
|
|
||||||
|
export abstract class BaseStageForm<T> extends ModelForm<T, string> {
|
||||||
|
getSuccessMessage(): string {
|
||||||
|
return this.instance
|
||||||
|
? msg("Successfully updated stage.")
|
||||||
|
: msg("Successfully created stage.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,9 +1,9 @@
|
||||||
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -21,21 +21,13 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-duo-form")
|
@customElement("ak-stage-authenticator-duo-form")
|
||||||
export class AuthenticatorDuoStageForm extends ModelForm<AuthenticatorDuoStage, string> {
|
export class AuthenticatorDuoStageForm extends BaseStageForm<AuthenticatorDuoStage> {
|
||||||
loadInstance(pk: string): Promise<AuthenticatorDuoStage> {
|
loadInstance(pk: string): Promise<AuthenticatorDuoStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorDuoRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorDuoRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: AuthenticatorDuoStage): Promise<AuthenticatorDuoStage> {
|
async send(data: AuthenticatorDuoStage): Promise<AuthenticatorDuoStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorDuoPartialUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorDuoPartialUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-sms-form")
|
@customElement("ak-stage-authenticator-sms-form")
|
||||||
export class AuthenticatorSMSStageForm extends ModelForm<AuthenticatorSMSStage, string> {
|
export class AuthenticatorSMSStageForm extends BaseStageForm<AuthenticatorSMSStage> {
|
||||||
loadInstance(pk: string): Promise<AuthenticatorSMSStage> {
|
loadInstance(pk: string): Promise<AuthenticatorSMSStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG)
|
return new StagesApi(DEFAULT_CONFIG)
|
||||||
.stagesAuthenticatorSmsRetrieve({
|
.stagesAuthenticatorSmsRetrieve({
|
||||||
|
@ -45,14 +45,6 @@ export class AuthenticatorSMSStageForm extends ModelForm<AuthenticatorSMSStage,
|
||||||
@property({ attribute: false })
|
@property({ attribute: false })
|
||||||
authType?: AuthTypeEnum;
|
authType?: AuthTypeEnum;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: AuthenticatorSMSStage): Promise<AuthenticatorSMSStage> {
|
async send(data: AuthenticatorSMSStage): Promise<AuthenticatorSMSStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorSmsUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorSmsUpdate({
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -19,21 +19,13 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-static-form")
|
@customElement("ak-stage-authenticator-static-form")
|
||||||
export class AuthenticatorStaticStageForm extends ModelForm<AuthenticatorStaticStage, string> {
|
export class AuthenticatorStaticStageForm extends BaseStageForm<AuthenticatorStaticStage> {
|
||||||
loadInstance(pk: string): Promise<AuthenticatorStaticStage> {
|
loadInstance(pk: string): Promise<AuthenticatorStaticStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: AuthenticatorStaticStage): Promise<AuthenticatorStaticStage> {
|
async send(data: AuthenticatorStaticStage): Promise<AuthenticatorStaticStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -21,21 +21,13 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-totp-form")
|
@customElement("ak-stage-authenticator-totp-form")
|
||||||
export class AuthenticatorTOTPStageForm extends ModelForm<AuthenticatorTOTPStage, string> {
|
export class AuthenticatorTOTPStageForm extends BaseStageForm<AuthenticatorTOTPStage> {
|
||||||
loadInstance(pk: string): Promise<AuthenticatorTOTPStage> {
|
loadInstance(pk: string): Promise<AuthenticatorTOTPStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: AuthenticatorTOTPStage): Promise<AuthenticatorTOTPStage> {
|
async send(data: AuthenticatorTOTPStage): Promise<AuthenticatorTOTPStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpUpdate({
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-validate-form")
|
@customElement("ak-stage-authenticator-validate-form")
|
||||||
export class AuthenticatorValidateStageForm extends ModelForm<AuthenticatorValidateStage, string> {
|
export class AuthenticatorValidateStageForm extends BaseStageForm<AuthenticatorValidateStage> {
|
||||||
async loadInstance(pk: string): Promise<AuthenticatorValidateStage> {
|
async loadInstance(pk: string): Promise<AuthenticatorValidateStage> {
|
||||||
const stage = await new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateRetrieve({
|
const stage = await new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
|
@ -41,14 +41,6 @@ export class AuthenticatorValidateStageForm extends ModelForm<AuthenticatorValid
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
showConfigurationStages = true;
|
showConfigurationStages = true;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: AuthenticatorValidateStage): Promise<AuthenticatorValidateStage> {
|
async send(data: AuthenticatorValidateStage): Promise<AuthenticatorValidateStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateUpdate({
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
|
@ -23,21 +23,13 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-webauthn-form")
|
@customElement("ak-stage-authenticator-webauthn-form")
|
||||||
export class AuthenticateWebAuthnStageForm extends ModelForm<AuthenticateWebAuthnStage, string> {
|
export class AuthenticateWebAuthnStageForm extends BaseStageForm<AuthenticateWebAuthnStage> {
|
||||||
loadInstance(pk: string): Promise<AuthenticateWebAuthnStage> {
|
loadInstance(pk: string): Promise<AuthenticateWebAuthnStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorWebauthnRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorWebauthnRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: AuthenticateWebAuthnStage): Promise<AuthenticateWebAuthnStage> {
|
async send(data: AuthenticateWebAuthnStage): Promise<AuthenticateWebAuthnStage> {
|
||||||
if (data.authenticatorAttachment?.toString() === "") {
|
if (data.authenticatorAttachment?.toString() === "") {
|
||||||
data.authenticatorAttachment = null;
|
data.authenticatorAttachment = null;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -11,21 +11,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { CaptchaStage, CaptchaStageRequest, StagesApi } from "@goauthentik/api";
|
import { CaptchaStage, CaptchaStageRequest, StagesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-captcha-form")
|
@customElement("ak-stage-captcha-form")
|
||||||
export class CaptchaStageForm extends ModelForm<CaptchaStage, string> {
|
export class CaptchaStageForm extends BaseStageForm<CaptchaStage> {
|
||||||
loadInstance(pk: string): Promise<CaptchaStage> {
|
loadInstance(pk: string): Promise<CaptchaStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: CaptchaStage): Promise<CaptchaStage> {
|
async send(data: CaptchaStage): Promise<CaptchaStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaPartialUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaPartialUpdate({
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -12,7 +12,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { ConsentStage, ConsentStageModeEnum, StagesApi } from "@goauthentik/api";
|
import { ConsentStage, ConsentStageModeEnum, StagesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-consent-form")
|
@customElement("ak-stage-consent-form")
|
||||||
export class ConsentStageForm extends ModelForm<ConsentStage, string> {
|
export class ConsentStageForm extends BaseStageForm<ConsentStage> {
|
||||||
loadInstance(pk: string): Promise<ConsentStage> {
|
loadInstance(pk: string): Promise<ConsentStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG)
|
return new StagesApi(DEFAULT_CONFIG)
|
||||||
.stagesConsentRetrieve({
|
.stagesConsentRetrieve({
|
||||||
|
@ -27,14 +27,6 @@ export class ConsentStageForm extends ModelForm<ConsentStage, string> {
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
showExpiresIn = false;
|
showExpiresIn = false;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: ConsentStage): Promise<ConsentStage> {
|
async send(data: ConsentStage): Promise<ConsentStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesConsentUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesConsentUpdate({
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -10,21 +10,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { DenyStage, StagesApi } from "@goauthentik/api";
|
import { DenyStage, StagesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-deny-form")
|
@customElement("ak-stage-deny-form")
|
||||||
export class DenyStageForm extends ModelForm<DenyStage, string> {
|
export class DenyStageForm extends BaseStageForm<DenyStage> {
|
||||||
loadInstance(pk: string): Promise<DenyStage> {
|
loadInstance(pk: string): Promise<DenyStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesDenyRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesDenyRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: DenyStage): Promise<DenyStage> {
|
async send(data: DenyStage): Promise<DenyStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesDenyUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesDenyUpdate({
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -11,21 +11,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { DummyStage, StagesApi } from "@goauthentik/api";
|
import { DummyStage, StagesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-dummy-form")
|
@customElement("ak-stage-dummy-form")
|
||||||
export class DummyStageForm extends ModelForm<DummyStage, string> {
|
export class DummyStageForm extends BaseStageForm<DummyStage> {
|
||||||
loadInstance(pk: string): Promise<DummyStage> {
|
loadInstance(pk: string): Promise<DummyStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesDummyRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesDummyRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: DummyStage): Promise<DummyStage> {
|
async send(data: DummyStage): Promise<DummyStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesDummyUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesDummyUpdate({
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -12,7 +12,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { EmailStage, StagesApi, TypeCreate } from "@goauthentik/api";
|
import { EmailStage, StagesApi, TypeCreate } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-email-form")
|
@customElement("ak-stage-email-form")
|
||||||
export class EmailStageForm extends ModelForm<EmailStage, string> {
|
export class EmailStageForm extends BaseStageForm<EmailStage> {
|
||||||
async loadInstance(pk: string): Promise<EmailStage> {
|
async loadInstance(pk: string): Promise<EmailStage> {
|
||||||
const stage = await new StagesApi(DEFAULT_CONFIG).stagesEmailRetrieve({
|
const stage = await new StagesApi(DEFAULT_CONFIG).stagesEmailRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
|
@ -30,14 +30,6 @@ export class EmailStageForm extends ModelForm<EmailStage, string> {
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
showConnectionSettings = false;
|
showConnectionSettings = false;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: EmailStage): Promise<EmailStage> {
|
async send(data: EmailStage): Promise<EmailStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesEmailPartialUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesEmailPartialUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
|
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first, groupBy } from "@goauthentik/common/utils";
|
import { first, groupBy } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -23,7 +23,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-identification-form")
|
@customElement("ak-stage-identification-form")
|
||||||
export class IdentificationStageForm extends ModelForm<IdentificationStage, string> {
|
export class IdentificationStageForm extends BaseStageForm<IdentificationStage> {
|
||||||
loadInstance(pk: string): Promise<IdentificationStage> {
|
loadInstance(pk: string): Promise<IdentificationStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
|
@ -38,14 +38,6 @@ export class IdentificationStageForm extends ModelForm<IdentificationStage, stri
|
||||||
|
|
||||||
sources?: PaginatedSourceList;
|
sources?: PaginatedSourceList;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: IdentificationStage): Promise<IdentificationStage> {
|
async send(data: IdentificationStage): Promise<IdentificationStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationUpdate({
|
||||||
|
|
|
@ -23,11 +23,9 @@ export class InvitationForm extends ModelForm<Invitation, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated invitation.");
|
? msg("Successfully updated invitation.")
|
||||||
} else {
|
: msg("Successfully created invitation.");
|
||||||
return msg("Successfully created invitation.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: Invitation): Promise<Invitation> {
|
async send(data: Invitation): Promise<Invitation> {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -11,21 +11,13 @@ import { customElement } from "lit/decorators.js";
|
||||||
import { InvitationStage, StagesApi } from "@goauthentik/api";
|
import { InvitationStage, StagesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-invitation-form")
|
@customElement("ak-stage-invitation-form")
|
||||||
export class InvitationStageForm extends ModelForm<InvitationStage, string> {
|
export class InvitationStageForm extends BaseStageForm<InvitationStage> {
|
||||||
loadInstance(pk: string): Promise<InvitationStage> {
|
loadInstance(pk: string): Promise<InvitationStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: InvitationStage): Promise<InvitationStage> {
|
async send(data: InvitationStage): Promise<InvitationStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -22,21 +22,13 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-password-form")
|
@customElement("ak-stage-password-form")
|
||||||
export class PasswordStageForm extends ModelForm<PasswordStage, string> {
|
export class PasswordStageForm extends BaseStageForm<PasswordStage> {
|
||||||
loadInstance(pk: string): Promise<PasswordStage> {
|
loadInstance(pk: string): Promise<PasswordStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesPasswordRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesPasswordRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: PasswordStage): Promise<PasswordStage> {
|
async send(data: PasswordStage): Promise<PasswordStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesPasswordUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesPasswordUpdate({
|
||||||
|
|
|
@ -90,11 +90,9 @@ export class PromptForm extends ModelForm<Prompt, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated prompt.");
|
? msg("Successfully updated prompt.")
|
||||||
} else {
|
: msg("Successfully created prompt.");
|
||||||
return msg("Successfully created prompt.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles(): CSSResult[] {
|
static get styles(): CSSResult[] {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import "@goauthentik/admin/stages/prompt/PromptForm";
|
import "@goauthentik/admin/stages/prompt/PromptForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import "@goauthentik/elements/forms/ModalForm";
|
import "@goauthentik/elements/forms/ModalForm";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg, str } from "@lit/localize";
|
import { msg, str } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -19,7 +19,7 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-prompt-form")
|
@customElement("ak-stage-prompt-form")
|
||||||
export class PromptStageForm extends ModelForm<PromptStage, string> {
|
export class PromptStageForm extends BaseStageForm<PromptStage> {
|
||||||
loadInstance(pk: string): Promise<PromptStage> {
|
loadInstance(pk: string): Promise<PromptStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
|
@ -38,14 +38,6 @@ export class PromptStageForm extends ModelForm<PromptStage, string> {
|
||||||
prompts?: PaginatedPromptList;
|
prompts?: PaginatedPromptList;
|
||||||
policies?: PaginatedPolicyList;
|
policies?: PaginatedPolicyList;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: PromptStage): Promise<PromptStage> {
|
async send(data: PromptStage): Promise<PromptStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesUpdate({
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -10,21 +10,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { StagesApi, UserDeleteStage } from "@goauthentik/api";
|
import { StagesApi, UserDeleteStage } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-user-delete-form")
|
@customElement("ak-stage-user-delete-form")
|
||||||
export class UserDeleteStageForm extends ModelForm<UserDeleteStage, string> {
|
export class UserDeleteStageForm extends BaseStageForm<UserDeleteStage> {
|
||||||
loadInstance(pk: string): Promise<UserDeleteStage> {
|
loadInstance(pk: string): Promise<UserDeleteStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: UserDeleteStage): Promise<UserDeleteStage> {
|
async send(data: UserDeleteStage): Promise<UserDeleteStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/Alert";
|
import "@goauthentik/elements/Alert";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
import "@goauthentik/elements/utils/TimeDeltaHelp";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
|
@ -13,21 +13,13 @@ import { customElement } from "lit/decorators.js";
|
||||||
import { StagesApi, UserLoginStage } from "@goauthentik/api";
|
import { StagesApi, UserLoginStage } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-user-login-form")
|
@customElement("ak-stage-user-login-form")
|
||||||
export class UserLoginStageForm extends ModelForm<UserLoginStage, string> {
|
export class UserLoginStageForm extends BaseStageForm<UserLoginStage> {
|
||||||
loadInstance(pk: string): Promise<UserLoginStage> {
|
loadInstance(pk: string): Promise<UserLoginStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: UserLoginStage): Promise<UserLoginStage> {
|
async send(data: UserLoginStage): Promise<UserLoginStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginUpdate({
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { TemplateResult, html } from "lit";
|
import { TemplateResult, html } from "lit";
|
||||||
|
@ -10,21 +10,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import { StagesApi, UserLogoutStage } from "@goauthentik/api";
|
import { StagesApi, UserLogoutStage } from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-user-logout-form")
|
@customElement("ak-stage-user-logout-form")
|
||||||
export class UserLogoutStageForm extends ModelForm<UserLogoutStage, string> {
|
export class UserLogoutStageForm extends BaseStageForm<UserLogoutStage> {
|
||||||
loadInstance(pk: string): Promise<UserLogoutStage> {
|
loadInstance(pk: string): Promise<UserLogoutStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: UserLogoutStage): Promise<UserLogoutStage> {
|
async send(data: UserLogoutStage): Promise<UserLogoutStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutUpdate({
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
|
||||||
import { UserCreationModeEnum } from "@goauthentik/api/dist/models/UserCreationModeEnum";
|
import { UserCreationModeEnum } from "@goauthentik/api/dist/models/UserCreationModeEnum";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { first } from "@goauthentik/common/utils";
|
import { first } from "@goauthentik/common/utils";
|
||||||
import "@goauthentik/elements/forms/FormGroup";
|
import "@goauthentik/elements/forms/FormGroup";
|
||||||
import "@goauthentik/elements/forms/HorizontalFormElement";
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
||||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
|
|
||||||
import "@goauthentik/elements/forms/Radio";
|
import "@goauthentik/elements/forms/Radio";
|
||||||
import "@goauthentik/elements/forms/SearchSelect";
|
import "@goauthentik/elements/forms/SearchSelect";
|
||||||
|
|
||||||
|
@ -22,21 +22,13 @@ import {
|
||||||
} from "@goauthentik/api";
|
} from "@goauthentik/api";
|
||||||
|
|
||||||
@customElement("ak-stage-user-write-form")
|
@customElement("ak-stage-user-write-form")
|
||||||
export class UserWriteStageForm extends ModelForm<UserWriteStage, string> {
|
export class UserWriteStageForm extends BaseStageForm<UserWriteStage> {
|
||||||
loadInstance(pk: string): Promise<UserWriteStage> {
|
loadInstance(pk: string): Promise<UserWriteStage> {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteRetrieve({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteRetrieve({
|
||||||
stageUuid: pk,
|
stageUuid: pk,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
|
||||||
if (this.instance) {
|
|
||||||
return msg("Successfully updated stage.");
|
|
||||||
} else {
|
|
||||||
return msg("Successfully created stage.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async send(data: UserWriteStage): Promise<UserWriteStage> {
|
async send(data: UserWriteStage): Promise<UserWriteStage> {
|
||||||
if (this.instance) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteUpdate({
|
||||||
|
|
|
@ -26,11 +26,9 @@ export class TokenForm extends ModelForm<Token, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated token.");
|
? msg("Successfully updated token.")
|
||||||
} else {
|
: msg("Successfully created token.");
|
||||||
return msg("Successfully created token.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: Token): Promise<Token> {
|
async send(data: Token): Promise<Token> {
|
||||||
|
|
|
@ -14,6 +14,11 @@ import "@goauthentik/app/elements/rbac/ObjectPermissionsPage";
|
||||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import { EVENT_REFRESH } from "@goauthentik/common/constants";
|
import { EVENT_REFRESH } from "@goauthentik/common/constants";
|
||||||
import { userTypeToLabel } from "@goauthentik/common/labels";
|
import { userTypeToLabel } from "@goauthentik/common/labels";
|
||||||
|
import "@goauthentik/components/DescriptionList";
|
||||||
|
import {
|
||||||
|
type DescriptionPair,
|
||||||
|
renderDescriptionList,
|
||||||
|
} from "@goauthentik/components/DescriptionList";
|
||||||
import "@goauthentik/components/ak-status-label";
|
import "@goauthentik/components/ak-status-label";
|
||||||
import "@goauthentik/components/events/ObjectChangelog";
|
import "@goauthentik/components/events/ObjectChangelog";
|
||||||
import "@goauthentik/components/events/UserEvents";
|
import "@goauthentik/components/events/UserEvents";
|
||||||
|
@ -137,99 +142,36 @@ export class UserViewPage extends AKElement {
|
||||||
|
|
||||||
const user = this.user;
|
const user = this.user;
|
||||||
|
|
||||||
const canImpersonate =
|
// prettier-ignore
|
||||||
rootInterface()?.config?.capabilities.includes(CapabilitiesEnum.CanImpersonate) &&
|
const userInfo: DescriptionPair[] = [
|
||||||
this.user.pk !== this.me?.user.pk;
|
[msg("Username"), user.username],
|
||||||
|
[msg("Name"), user.name],
|
||||||
|
[msg("Email"), user.email || "-"],
|
||||||
|
[msg("Last login"), user.lastLogin?.toLocaleString()],
|
||||||
|
[msg("Active"), html`<ak-status-label type="warning" ?good=${user.isActive}></ak-status-label>`],
|
||||||
|
[msg("Type"), userTypeToLabel(user.type)],
|
||||||
|
[msg("Superuser"), html`<ak-status-label type="warning" ?good=${user.isSuperuser}></ak-status-label>`],
|
||||||
|
[msg("Actions"), this.renderActionButtons(user)],
|
||||||
|
[msg("Recovery"), this.renderRecoveryButtons(user)],
|
||||||
|
];
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
<div class="pf-c-card__title">${msg("User Info")}</div>
|
<div class="pf-c-card__title">${msg("User Info")}</div>
|
||||||
<div class="pf-c-card__body">
|
<div class="pf-c-card__body">${renderDescriptionList(userInfo)}</div>
|
||||||
<dl class="pf-c-description-list">
|
`;
|
||||||
<div class="pf-c-description-list__group">
|
}
|
||||||
<dt class="pf-c-description-list__term">
|
|
||||||
<span class="pf-c-description-list__text">${msg("Username")}</span>
|
renderActionButtons(user: User) {
|
||||||
</dt>
|
const canImpersonate =
|
||||||
<dd class="pf-c-description-list__description">
|
rootInterface()?.config?.capabilities.includes(CapabilitiesEnum.CanImpersonate) &&
|
||||||
<div class="pf-c-description-list__text">${user.username}</div>
|
user.pk !== this.me?.user.pk;
|
||||||
</dd>
|
|
||||||
</div>
|
return html`<div class="ak-button-collection">
|
||||||
<div class="pf-c-description-list__group">
|
|
||||||
<dt class="pf-c-description-list__term">
|
|
||||||
<span class="pf-c-description-list__text">${msg("Name")}</span>
|
|
||||||
</dt>
|
|
||||||
<dd class="pf-c-description-list__description">
|
|
||||||
<div class="pf-c-description-list__text">${user.name}</div>
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-description-list__group">
|
|
||||||
<dt class="pf-c-description-list__term">
|
|
||||||
<span class="pf-c-description-list__text">${msg("Email")}</span>
|
|
||||||
</dt>
|
|
||||||
<dd class="pf-c-description-list__description">
|
|
||||||
<div class="pf-c-description-list__text">${user.email || "-"}</div>
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-description-list__group">
|
|
||||||
<dt class="pf-c-description-list__term">
|
|
||||||
<span class="pf-c-description-list__text">${msg("Last login")}</span>
|
|
||||||
</dt>
|
|
||||||
<dd class="pf-c-description-list__description">
|
|
||||||
<div class="pf-c-description-list__text">
|
|
||||||
${user.lastLogin?.toLocaleString()}
|
|
||||||
</div>
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-description-list__group">
|
|
||||||
<dt class="pf-c-description-list__term">
|
|
||||||
<span class="pf-c-description-list__text">${msg("Active")}</span>
|
|
||||||
</dt>
|
|
||||||
<dd class="pf-c-description-list__description">
|
|
||||||
<div class="pf-c-description-list__text">
|
|
||||||
<ak-status-label
|
|
||||||
type="warning"
|
|
||||||
?good=${user.isActive}
|
|
||||||
></ak-status-label>
|
|
||||||
</div>
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-description-list__group">
|
|
||||||
<dt class="pf-c-description-list__term">
|
|
||||||
<span class="pf-c-description-list__text">${msg("Type")}</span>
|
|
||||||
</dt>
|
|
||||||
<dd class="pf-c-description-list__description">
|
|
||||||
<div class="pf-c-description-list__text">
|
|
||||||
${userTypeToLabel(user.type)}
|
|
||||||
</div>
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-description-list__group">
|
|
||||||
<dt class="pf-c-description-list__term">
|
|
||||||
<span class="pf-c-description-list__text">${msg("Superuser")}</span>
|
|
||||||
</dt>
|
|
||||||
<dd class="pf-c-description-list__description">
|
|
||||||
<div class="pf-c-description-list__text">
|
|
||||||
<ak-status-label
|
|
||||||
type="warning"
|
|
||||||
?good=${user.isSuperuser}
|
|
||||||
></ak-status-label>
|
|
||||||
</div>
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="pf-c-description-list__group">
|
|
||||||
<dt class="pf-c-description-list__term">
|
|
||||||
<span class="pf-c-description-list__text">${msg("Actions")}</span>
|
|
||||||
</dt>
|
|
||||||
<dd class="pf-c-description-list__description ak-button-collection">
|
|
||||||
<div class="pf-c-description-list__text">
|
|
||||||
<ak-forms-modal>
|
<ak-forms-modal>
|
||||||
<span slot="submit"> ${msg("Update")} </span>
|
<span slot="submit"> ${msg("Update")} </span>
|
||||||
<span slot="header"> ${msg("Update User")} </span>
|
<span slot="header"> ${msg("Update User")} </span>
|
||||||
<ak-user-form slot="form" .instancePk=${user.pk}>
|
<ak-user-form slot="form" .instancePk=${user.pk}> </ak-user-form>
|
||||||
</ak-user-form>
|
<button slot="trigger" class="pf-m-primary pf-c-button pf-m-block">
|
||||||
<button
|
|
||||||
slot="trigger"
|
|
||||||
class="pf-m-primary pf-c-button pf-m-block"
|
|
||||||
>
|
|
||||||
${msg("Edit")}
|
${msg("Edit")}
|
||||||
</button>
|
</button>
|
||||||
</ak-forms-modal>
|
</ak-forms-modal>
|
||||||
|
@ -245,17 +187,12 @@ export class UserViewPage extends AKElement {
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<button
|
<button slot="trigger" class="pf-c-button pf-m-warning pf-m-block">
|
||||||
slot="trigger"
|
|
||||||
class="pf-c-button pf-m-warning pf-m-block"
|
|
||||||
>
|
|
||||||
<pf-tooltip
|
<pf-tooltip
|
||||||
position="top"
|
position="top"
|
||||||
content=${user.isActive
|
content=${user.isActive
|
||||||
? msg("Lock the user out of this system")
|
? msg("Lock the user out of this system")
|
||||||
: msg(
|
: msg("Allow the user to log in and use this system")}
|
||||||
"Allow the user to log in and use this system",
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
${user.isActive ? msg("Deactivate") : msg("Activate")}
|
${user.isActive ? msg("Deactivate") : msg("Activate")}
|
||||||
</pf-tooltip>
|
</pf-tooltip>
|
||||||
|
@ -278,24 +215,18 @@ export class UserViewPage extends AKElement {
|
||||||
>
|
>
|
||||||
<pf-tooltip
|
<pf-tooltip
|
||||||
position="top"
|
position="top"
|
||||||
content=${msg(
|
content=${msg("Temporarily assume the identity of this user")}
|
||||||
"Temporarily assume the identity of this user",
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
${msg("Impersonate")}
|
${msg("Impersonate")}
|
||||||
</pf-tooltip>
|
</pf-tooltip>
|
||||||
</ak-action-button>
|
</ak-action-button>
|
||||||
`
|
`
|
||||||
: nothing}
|
: nothing}
|
||||||
</div>
|
</div> `;
|
||||||
</dd>
|
}
|
||||||
</div>
|
|
||||||
<div class="pf-c-description-list__group">
|
renderRecoveryButtons(user: User) {
|
||||||
<dt class="pf-c-description-list__term">
|
return html`<div class="ak-button-collection">
|
||||||
<span class="pf-c-description-list__text">${msg("Recovery")}</span>
|
|
||||||
</dt>
|
|
||||||
<dd class="pf-c-description-list__description">
|
|
||||||
<div class="pf-c-description-list__text ak-button-collection">
|
|
||||||
<ak-forms-modal size=${PFSize.Medium} id="update-password-request">
|
<ak-forms-modal size=${PFSize.Medium} id="update-password-request">
|
||||||
<span slot="submit">${msg("Update password")}</span>
|
<span slot="submit">${msg("Update password")}</span>
|
||||||
<span slot="header">${msg("Update password")}</span>
|
<span slot="header">${msg("Update password")}</span>
|
||||||
|
|
|
@ -310,6 +310,12 @@ select[multiple] option:checked {
|
||||||
--pf-c-wizard__nav-link--before--BackgroundColor: transparent;
|
--pf-c-wizard__nav-link--before--BackgroundColor: transparent;
|
||||||
}
|
}
|
||||||
/* tree view */
|
/* tree view */
|
||||||
|
.pf-c-tree-view__node {
|
||||||
|
--pf-c-tree-view__node--Color: var(--ak-dark-foreground);
|
||||||
|
}
|
||||||
|
.pf-c-tree-view__node-toggle {
|
||||||
|
--pf-c-tree-view__node-toggle--Color: var(--ak-dark-foreground);
|
||||||
|
}
|
||||||
.pf-c-tree-view__node:focus {
|
.pf-c-tree-view__node:focus {
|
||||||
--pf-c-tree-view__node--focus--BackgroundColor: var(--ak-dark-background-light-ish);
|
--pf-c-tree-view__node--focus--BackgroundColor: var(--ak-dark-background-light-ish);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
import { TemplateResult, html, nothing } from "lit";
|
||||||
|
import { classMap } from "lit/directives/class-map.js";
|
||||||
|
import { map } from "lit/directives/map.js";
|
||||||
|
|
||||||
|
export type DescriptionDesc = string | TemplateResult | undefined | typeof nothing;
|
||||||
|
export type DescriptionPair = [string, DescriptionDesc];
|
||||||
|
export type DescriptionRecord = { term: string; desc: DescriptionDesc };
|
||||||
|
|
||||||
|
interface DescriptionConfig {
|
||||||
|
horizontal: boolean;
|
||||||
|
compact: boolean;
|
||||||
|
twocolumn: boolean;
|
||||||
|
threecolumn: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isDescriptionRecordCollection = (v: Array<unknown>): v is DescriptionRecord[] =>
|
||||||
|
v.length > 0 && typeof v[0] === "object" && !Array.isArray(v[0]);
|
||||||
|
|
||||||
|
function renderDescriptionGroup([term, description]: DescriptionPair) {
|
||||||
|
return html` <div class="pf-c-description-list__group">
|
||||||
|
<dt class="pf-c-description-list__term">
|
||||||
|
<span class="pf-c-description-list__text">${term}</span>
|
||||||
|
</dt>
|
||||||
|
<dd class="pf-c-description-list__description">
|
||||||
|
<div class="pf-c-description-list__text">${description ?? nothing}</div>
|
||||||
|
</dd>
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function recordToPair({ term, desc }: DescriptionRecord): DescriptionPair {
|
||||||
|
return [term, desc];
|
||||||
|
}
|
||||||
|
|
||||||
|
function alignTermType(terms: DescriptionRecord[] | DescriptionPair[] = []) {
|
||||||
|
if (isDescriptionRecordCollection(terms)) {
|
||||||
|
return terms.map(recordToPair);
|
||||||
|
}
|
||||||
|
return terms ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* renderDescriptionList
|
||||||
|
*
|
||||||
|
* This function renders the most common form of the PatternFly description list used in our code.
|
||||||
|
* It expects either an array of term/description pairs or an array of `{ term: string, description:
|
||||||
|
* string | TemplateResult }`.
|
||||||
|
*
|
||||||
|
* An optional dictionary of configuration options is available. These enable the Patternfly
|
||||||
|
* "horizontal," "compact", "2 column on large," or "3 column on large" layouts that are (so far)
|
||||||
|
* the layouts used in Authentik's (and Gravity's, for that matter) code.
|
||||||
|
*
|
||||||
|
* This is not a web component and it does not bring its own styling ; calling code will still have
|
||||||
|
* to provide the styling necessary. It is only a function to replace the repetitious boilerplate of
|
||||||
|
* routine description lists. Its output is a standard TemplateResult that will be fully realized
|
||||||
|
* within the context of the DOM or ShadowDOM in which it is called.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const defaultConfig = {
|
||||||
|
horizontal: false,
|
||||||
|
compact: false,
|
||||||
|
twocolumn: false,
|
||||||
|
threecolumn: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
export function renderDescriptionList(
|
||||||
|
terms: DescriptionRecord[],
|
||||||
|
config?: DescriptionConfig,
|
||||||
|
): TemplateResult;
|
||||||
|
|
||||||
|
export function renderDescriptionList(
|
||||||
|
terms: DescriptionPair[],
|
||||||
|
config?: DescriptionConfig,
|
||||||
|
): TemplateResult;
|
||||||
|
|
||||||
|
export function renderDescriptionList(
|
||||||
|
terms: DescriptionRecord[] | DescriptionPair[] = [],
|
||||||
|
config: DescriptionConfig = defaultConfig,
|
||||||
|
) {
|
||||||
|
const checkedTerms = alignTermType(terms);
|
||||||
|
const classes = classMap({
|
||||||
|
"pf-m-horizontal": config.horizontal,
|
||||||
|
"pf-m-compact": config.compact,
|
||||||
|
"pf-m-2-col-on-lg": config.twocolumn,
|
||||||
|
"pf-m-3-col-on-lg": config.threecolumn,
|
||||||
|
});
|
||||||
|
|
||||||
|
return html`
|
||||||
|
<dl class="pf-c-description-list ${classes}">
|
||||||
|
${map(checkedTerms, renderDescriptionGroup)}
|
||||||
|
</dl>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default renderDescriptionList;
|
|
@ -79,6 +79,7 @@ export class PageHeader extends AKElement {
|
||||||
}
|
}
|
||||||
.pf-c-page__main-section {
|
.pf-c-page__main-section {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
flex-shrink: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
|
@ -13,6 +13,7 @@ import "@goauthentik/elements/table/TableSearch";
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { CSSResult, TemplateResult, css, html } from "lit";
|
import { CSSResult, TemplateResult, css, html } from "lit";
|
||||||
import { property, state } from "lit/decorators.js";
|
import { property, state } from "lit/decorators.js";
|
||||||
|
import { classMap } from "lit/directives/class-map.js";
|
||||||
import { ifDefined } from "lit/directives/if-defined.js";
|
import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
|
|
||||||
import PFButton from "@patternfly/patternfly/components/Button/button.css";
|
import PFButton from "@patternfly/patternfly/components/Button/button.css";
|
||||||
|
@ -41,11 +42,7 @@ export class TableColumn {
|
||||||
if (!this.orderBy) {
|
if (!this.orderBy) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (table.order === this.orderBy) {
|
table.order = table.order === this.orderBy ? `-${this.orderBy}` : this.orderBy;
|
||||||
table.order = `-${this.orderBy}`;
|
|
||||||
} else {
|
|
||||||
table.order = this.orderBy;
|
|
||||||
}
|
|
||||||
table.fetch();
|
table.fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,16 +72,12 @@ export class TableColumn {
|
||||||
}
|
}
|
||||||
|
|
||||||
render(table: Table<unknown>): TemplateResult {
|
render(table: Table<unknown>): TemplateResult {
|
||||||
return html`<th
|
const classes = {
|
||||||
role="columnheader"
|
"pf-c-table__sort": !!this.orderBy,
|
||||||
scope="col"
|
"pf-m-selected": table.order === this.orderBy || table.order === `-${this.orderBy}`,
|
||||||
class="
|
};
|
||||||
${this.orderBy ? "pf-c-table__sort " : " "}
|
|
||||||
${table.order === this.orderBy || table.order === `-${this.orderBy}`
|
return html`<th role="columnheader" scope="col" class="${classMap(classes)}">
|
||||||
? "pf-m-selected "
|
|
||||||
: ""}
|
|
||||||
"
|
|
||||||
>
|
|
||||||
${this.orderBy ? this.renderSortable(table) : html`${this.title}`}
|
${this.orderBy ? this.renderSortable(table) : html`${this.title}`}
|
||||||
</th>`;
|
</th>`;
|
||||||
}
|
}
|
||||||
|
@ -230,7 +223,7 @@ export abstract class Table<T> extends AKElement {
|
||||||
return html`<tr role="row">
|
return html`<tr role="row">
|
||||||
<td role="cell" colspan="25">
|
<td role="cell" colspan="25">
|
||||||
<div class="pf-l-bullseye">
|
<div class="pf-l-bullseye">
|
||||||
<ak-empty-state ?loading="${true}" header=${msg("Loading")}> </ak-empty-state>
|
<ak-empty-state loading header=${msg("Loading")}> </ak-empty-state>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>`;
|
</tr>`;
|
||||||
|
@ -241,9 +234,8 @@ export abstract class Table<T> extends AKElement {
|
||||||
<tr role="row">
|
<tr role="row">
|
||||||
<td role="cell" colspan="8">
|
<td role="cell" colspan="8">
|
||||||
<div class="pf-l-bullseye">
|
<div class="pf-l-bullseye">
|
||||||
${inner
|
${inner ??
|
||||||
? inner
|
html`<ak-empty-state header="${msg("No objects found.")}"
|
||||||
: html`<ak-empty-state header="${msg("No objects found.")}"
|
|
||||||
><div slot="primary">${this.renderObjectCreate()}</div>
|
><div slot="primary">${this.renderObjectCreate()}</div>
|
||||||
</ak-empty-state>`}
|
</ak-empty-state>`}
|
||||||
</div>
|
</div>
|
||||||
|
@ -257,14 +249,13 @@ export abstract class Table<T> extends AKElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderError(): TemplateResult {
|
renderError(): TemplateResult {
|
||||||
if (!this.error) {
|
return this.error
|
||||||
return html``;
|
? html`<ak-empty-state header="${msg("Failed to fetch objects.")}" icon="fa-times">
|
||||||
}
|
|
||||||
return html`<ak-empty-state header="${msg("Failed to fetch objects.")}" icon="fa-times">
|
|
||||||
${this.error instanceof ResponseError
|
${this.error instanceof ResponseError
|
||||||
? html` <div slot="body">${this.error.message}</div> `
|
? html` <div slot="body">${this.error.message}</div> `
|
||||||
: html`<div slot="body">${this.error.detail}</div>`}
|
: html`<div slot="body">${this.error.detail}</div>`}
|
||||||
</ak-empty-state>`;
|
</ak-empty-state>`
|
||||||
|
: html``;
|
||||||
}
|
}
|
||||||
|
|
||||||
private renderRows(): TemplateResult[] | undefined {
|
private renderRows(): TemplateResult[] | undefined {
|
||||||
|
@ -294,104 +285,89 @@ export abstract class Table<T> extends AKElement {
|
||||||
private renderRowGroup(items: T[]): TemplateResult[] {
|
private renderRowGroup(items: T[]): TemplateResult[] {
|
||||||
return items.map((item) => {
|
return items.map((item) => {
|
||||||
const itemSelectHandler = (ev: InputEvent | PointerEvent) => {
|
const itemSelectHandler = (ev: InputEvent | PointerEvent) => {
|
||||||
let checked = false;
|
|
||||||
const target = ev.target as HTMLElement;
|
const target = ev.target as HTMLElement;
|
||||||
if (ev.type === "input") {
|
if (ev instanceof PointerEvent && target.classList.contains("ignore-click")) {
|
||||||
checked = (target as HTMLInputElement).checked;
|
|
||||||
} else if (ev instanceof PointerEvent) {
|
|
||||||
if (target.classList.contains("ignore-click")) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
checked = this.selectedElements.indexOf(item) === -1;
|
|
||||||
|
const selected = this.selectedElements.includes(item);
|
||||||
|
const checked =
|
||||||
|
ev instanceof PointerEvent ? !selected : (target as HTMLInputElement).checked;
|
||||||
|
|
||||||
|
if ((checked && selected) || !(checked || selected)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.selectedElements = this.selectedElements.filter((i) => i !== item);
|
||||||
if (checked) {
|
if (checked) {
|
||||||
// Prevent double-adding the element to selected items
|
|
||||||
if (this.selectedElements.indexOf(item) !== -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Add item to selected
|
|
||||||
this.selectedElements.push(item);
|
this.selectedElements.push(item);
|
||||||
} else {
|
|
||||||
// Get index of item and remove if selected
|
|
||||||
const index = this.selectedElements.indexOf(item);
|
|
||||||
if (index <= -1) return;
|
|
||||||
this.selectedElements.splice(index, 1);
|
|
||||||
}
|
}
|
||||||
this.requestUpdate();
|
|
||||||
// Unset select-all if selectedElements is empty
|
|
||||||
const selectAllCheckbox =
|
const selectAllCheckbox =
|
||||||
this.shadowRoot?.querySelector<HTMLInputElement>("[name=select-all]");
|
this.shadowRoot?.querySelector<HTMLInputElement>("[name=select-all]");
|
||||||
if (!selectAllCheckbox) {
|
if (selectAllCheckbox && this.selectedElements.length < 1) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.selectedElements.length < 1) {
|
|
||||||
selectAllCheckbox.checked = false;
|
selectAllCheckbox.checked = false;
|
||||||
this.requestUpdate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.requestUpdate();
|
||||||
};
|
};
|
||||||
return html`<tbody
|
|
||||||
role="rowgroup"
|
const renderCheckbox = () =>
|
||||||
class="${this.expandedElements.indexOf(item) > -1 ? "pf-m-expanded" : ""}"
|
html`<td class="pf-c-table__check" role="cell">
|
||||||
>
|
|
||||||
<tr
|
|
||||||
role="row"
|
|
||||||
class="${this.checkbox ? "pf-m-hoverable" : ""}"
|
|
||||||
@click=${itemSelectHandler}
|
|
||||||
>
|
|
||||||
${this.checkbox
|
|
||||||
? html`<td class="pf-c-table__check" role="cell">
|
|
||||||
<label class="ignore-click"
|
<label class="ignore-click"
|
||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
class="ignore-click"
|
class="ignore-click"
|
||||||
.checked=${this.selectedElements.indexOf(item) >= 0}
|
.checked=${this.selectedElements.includes(item)}
|
||||||
@input=${itemSelectHandler}
|
@input=${itemSelectHandler}
|
||||||
@click=${(ev: Event) => {
|
@click=${(ev: Event) => {
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
}}
|
}}
|
||||||
/></label>
|
/></label>
|
||||||
</td>`
|
</td>`;
|
||||||
: html``}
|
|
||||||
${this.expandable
|
const handleExpansion = (ev: Event) => {
|
||||||
? html`<td class="pf-c-table__toggle" role="cell">
|
|
||||||
<button
|
|
||||||
class="pf-c-button pf-m-plain ${this.expandedElements.indexOf(
|
|
||||||
item,
|
|
||||||
) > -1
|
|
||||||
? "pf-m-expanded"
|
|
||||||
: ""}"
|
|
||||||
@click=${(ev: Event) => {
|
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
const idx = this.expandedElements.indexOf(item);
|
const expanded = this.expandedElements.includes(item);
|
||||||
if (idx <= -1) {
|
this.expandedElements = this.expandedElements.filter((i) => i !== item);
|
||||||
// Element is not expanded, add it
|
if (!expanded) {
|
||||||
this.expandedElements.push(item);
|
this.expandedElements.push(item);
|
||||||
} else {
|
|
||||||
// Element is expanded, remove it
|
|
||||||
this.expandedElements.splice(idx, 1);
|
|
||||||
}
|
}
|
||||||
this.requestUpdate();
|
this.requestUpdate();
|
||||||
}}
|
};
|
||||||
|
|
||||||
|
const expandedClass = {
|
||||||
|
"pf-m-expanded": this.expandedElements.includes(item),
|
||||||
|
};
|
||||||
|
|
||||||
|
const renderExpansion = () => {
|
||||||
|
return html`<td class="pf-c-table__toggle" role="cell">
|
||||||
|
<button
|
||||||
|
class="pf-c-button pf-m-plain ${classMap(expandedClass)}"
|
||||||
|
@click=${handleExpansion}
|
||||||
>
|
>
|
||||||
<div class="pf-c-table__toggle-icon">
|
<div class="pf-c-table__toggle-icon">
|
||||||
<i class="fas fa-angle-down" aria-hidden="true"></i
|
<i class="fas fa-angle-down" aria-hidden="true"></i>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
</td>`
|
</td>`;
|
||||||
: html``}
|
};
|
||||||
|
|
||||||
|
return html`<tbody role="rowgroup" class="${classMap(expandedClass)}">
|
||||||
|
<tr
|
||||||
|
role="row"
|
||||||
|
class="${this.checkbox ? "pf-m-hoverable" : ""}"
|
||||||
|
@click=${itemSelectHandler}
|
||||||
|
>
|
||||||
|
${this.checkbox ? renderCheckbox() : html``}
|
||||||
|
${this.expandable ? renderExpansion() : html``}
|
||||||
${this.row(item).map((col) => {
|
${this.row(item).map((col) => {
|
||||||
return html`<td role="cell">${col}</td>`;
|
return html`<td role="cell">${col}</td>`;
|
||||||
})}
|
})}
|
||||||
</tr>
|
</tr>
|
||||||
<tr
|
<tr class="pf-c-table__expandable-row ${classMap(expandedClass)}" role="row">
|
||||||
class="pf-c-table__expandable-row ${this.expandedElements.indexOf(item) > -1
|
|
||||||
? "pf-m-expanded"
|
|
||||||
: ""}"
|
|
||||||
role="row"
|
|
||||||
>
|
|
||||||
<td></td>
|
<td></td>
|
||||||
${this.expandedElements.indexOf(item) > -1 ? this.renderExpanded(item) : html``}
|
${this.expandedElements.includes(item) ? this.renderExpanded(item) : html``}
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>`;
|
</tbody>`;
|
||||||
});
|
});
|
||||||
|
@ -418,30 +394,26 @@ export abstract class Table<T> extends AKElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderSearch(): TemplateResult {
|
renderSearch(): TemplateResult {
|
||||||
if (!this.searchEnabled()) {
|
const runSearch = (value: string) => {
|
||||||
return html``;
|
|
||||||
}
|
|
||||||
return html`<div class="pf-c-toolbar__group pf-m-search-filter">
|
|
||||||
<ak-table-search
|
|
||||||
class="pf-c-toolbar__item pf-m-search-filter"
|
|
||||||
value=${ifDefined(this.search)}
|
|
||||||
.onSearch=${(value: string) => {
|
|
||||||
this.search = value;
|
this.search = value;
|
||||||
this.fetch();
|
|
||||||
updateURLParams({
|
updateURLParams({
|
||||||
search: value,
|
search: value,
|
||||||
});
|
});
|
||||||
}}
|
this.fetch();
|
||||||
|
};
|
||||||
|
|
||||||
|
return !this.searchEnabled()
|
||||||
|
? html``
|
||||||
|
: html`<div class="pf-c-toolbar__group pf-m-search-filter">
|
||||||
|
<ak-table-search
|
||||||
|
class="pf-c-toolbar__item pf-m-search-filter"
|
||||||
|
value=${ifDefined(this.search)}
|
||||||
|
.onSearch=${runSearch}
|
||||||
>
|
>
|
||||||
</ak-table-search>
|
</ak-table-search>
|
||||||
</div>`;
|
</div>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
renderSelectedChip(item: T): TemplateResult {
|
|
||||||
return html``;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderToolbarContainer(): TemplateResult {
|
renderToolbarContainer(): TemplateResult {
|
||||||
return html`<div class="pf-c-toolbar">
|
return html`<div class="pf-c-toolbar">
|
||||||
<div class="pf-c-toolbar__content">
|
<div class="pf-c-toolbar__content">
|
||||||
|
@ -449,18 +421,7 @@ export abstract class Table<T> extends AKElement {
|
||||||
<div class="pf-c-toolbar__bulk-select">${this.renderToolbar()}</div>
|
<div class="pf-c-toolbar__bulk-select">${this.renderToolbar()}</div>
|
||||||
<div class="pf-c-toolbar__group">${this.renderToolbarAfter()}</div>
|
<div class="pf-c-toolbar__group">${this.renderToolbarAfter()}</div>
|
||||||
<div class="pf-c-toolbar__group">${this.renderToolbarSelected()}</div>
|
<div class="pf-c-toolbar__group">${this.renderToolbarSelected()}</div>
|
||||||
${this.paginated
|
${this.paginated ? this.renderTablePagination() : html``}
|
||||||
? html`<ak-table-pagination
|
|
||||||
class="pf-c-toolbar__item pf-m-pagination"
|
|
||||||
.pages=${this.data?.pagination}
|
|
||||||
.pageChangeHandler=${(page: number) => {
|
|
||||||
this.page = page;
|
|
||||||
updateURLParams({ tablePage: page });
|
|
||||||
this.fetch();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
</ak-table-pagination>`
|
|
||||||
: html``}
|
|
||||||
</div>
|
</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
}
|
}
|
||||||
|
@ -469,57 +430,87 @@ export abstract class Table<T> extends AKElement {
|
||||||
this.fetch();
|
this.fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
renderTable(): TemplateResult {
|
/* The checkbox on the table header row that allows the user to "activate all on this page,"
|
||||||
return html` ${this.checkbox && this.checkboxChip
|
* "deactivate all on this page" with a single click.
|
||||||
? html`<ak-chip-group>
|
*/
|
||||||
${this.selectedElements.map((el) => {
|
renderAllOnThisPageCheckbox(): TemplateResult {
|
||||||
return html`<ak-chip>${this.renderSelectedChip(el)}</ak-chip>`;
|
const checked =
|
||||||
})}
|
this.selectedElements.length === this.data?.results.length &&
|
||||||
</ak-chip-group>`
|
this.selectedElements.length > 0;
|
||||||
: html``}
|
|
||||||
${this.renderToolbarContainer()}
|
const onInput = (ev: InputEvent) => {
|
||||||
<table class="pf-c-table pf-m-compact pf-m-grid-md pf-m-expandable">
|
this.selectedElements = (ev.target as HTMLInputElement).checked
|
||||||
<thead>
|
? this.data?.results.slice(0) || []
|
||||||
<tr role="row">
|
: [];
|
||||||
${this.checkbox
|
};
|
||||||
? html`<td class="pf-c-table__check" role="cell">
|
|
||||||
|
return html`<td class="pf-c-table__check" role="cell">
|
||||||
<input
|
<input
|
||||||
name="select-all"
|
name="select-all"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
aria-label=${msg("Select all rows")}
|
aria-label=${msg("Select all rows")}
|
||||||
.checked=${this.selectedElements.length ===
|
.checked=${checked}
|
||||||
this.data?.results.length &&
|
@input=${onInput}
|
||||||
this.selectedElements.length > 0}
|
|
||||||
@input=${(ev: InputEvent) => {
|
|
||||||
if ((ev.target as HTMLInputElement).checked) {
|
|
||||||
this.selectedElements =
|
|
||||||
this.data?.results.slice(0) || [];
|
|
||||||
} else {
|
|
||||||
this.selectedElements = [];
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
</td>`
|
</td>`;
|
||||||
: html``}
|
}
|
||||||
|
|
||||||
|
/* For very large tables where the user is selecting a limited number of entries, we provide a
|
||||||
|
* chip-based subtable at the top that shows the list of selected entries. Long text result in
|
||||||
|
* ellipsized chips, which is sub-optimal.
|
||||||
|
*/
|
||||||
|
renderSelectedChip(_item: T): TemplateResult {
|
||||||
|
// Override this for chip-based displays
|
||||||
|
return html``;
|
||||||
|
}
|
||||||
|
|
||||||
|
get needChipGroup() {
|
||||||
|
return this.checkbox && this.checkboxChip;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderChipGroup(): TemplateResult {
|
||||||
|
return html`<ak-chip-group>
|
||||||
|
${this.selectedElements.map((el) => {
|
||||||
|
return html`<ak-chip>${this.renderSelectedChip(el)}</ak-chip>`;
|
||||||
|
})}
|
||||||
|
</ak-chip-group>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A simple pagination display, shown at both the top and bottom of the page. */
|
||||||
|
renderTablePagination(): TemplateResult {
|
||||||
|
const handler = (page: number) => {
|
||||||
|
updateURLParams({ tablePage: page });
|
||||||
|
this.page = page;
|
||||||
|
this.fetch();
|
||||||
|
};
|
||||||
|
|
||||||
|
return html`
|
||||||
|
<ak-table-pagination
|
||||||
|
class="pf-c-toolbar__item pf-m-pagination"
|
||||||
|
.pages=${this.data?.pagination}
|
||||||
|
.pageChangeHandler=${handler}
|
||||||
|
>
|
||||||
|
</ak-table-pagination>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderTable(): TemplateResult {
|
||||||
|
const renderBottomPagination = () =>
|
||||||
|
html`<div class="pf-c-pagination pf-m-bottom">${this.renderTablePagination()}</div>`;
|
||||||
|
|
||||||
|
return html` ${this.needChipGroup ? this.renderChipGroup() : html``}
|
||||||
|
${this.renderToolbarContainer()}
|
||||||
|
<table class="pf-c-table pf-m-compact pf-m-grid-md pf-m-expandable">
|
||||||
|
<thead>
|
||||||
|
<tr role="row">
|
||||||
|
${this.checkbox ? this.renderAllOnThisPageCheckbox() : html``}
|
||||||
${this.expandable ? html`<td role="cell"></td>` : html``}
|
${this.expandable ? html`<td role="cell"></td>` : html``}
|
||||||
${this.columns().map((col) => col.render(this))}
|
${this.columns().map((col) => col.render(this))}
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
${this.renderRows()}
|
${this.renderRows()}
|
||||||
</table>
|
</table>
|
||||||
${this.paginated
|
${this.paginated ? renderBottomPagination() : html``}`;
|
||||||
? html` <div class="pf-c-pagination pf-m-bottom">
|
|
||||||
<ak-table-pagination
|
|
||||||
class="pf-c-toolbar__item pf-m-pagination"
|
|
||||||
.pages=${this.data?.pagination}
|
|
||||||
.pageChangeHandler=${(page: number) => {
|
|
||||||
this.page = page;
|
|
||||||
this.fetch();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
</ak-table-pagination>
|
|
||||||
</div>`
|
|
||||||
: html``}`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render(): TemplateResult {
|
render(): TemplateResult {
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
///<reference types="@hcaptcha/types"/>
|
///<reference types="@hcaptcha/types"/>
|
||||||
///<reference types="turnstile-types"/>
|
|
||||||
import "@goauthentik/elements/EmptyState";
|
import "@goauthentik/elements/EmptyState";
|
||||||
import { PFSize } from "@goauthentik/elements/Spinner";
|
import { PFSize } from "@goauthentik/elements/Spinner";
|
||||||
import "@goauthentik/elements/forms/FormElement";
|
import "@goauthentik/elements/forms/FormElement";
|
||||||
import "@goauthentik/flow/FormStatic";
|
import "@goauthentik/flow/FormStatic";
|
||||||
import "@goauthentik/flow/stages/access_denied/AccessDeniedStage";
|
import "@goauthentik/flow/stages/access_denied/AccessDeniedStage";
|
||||||
import { BaseStage } from "@goauthentik/flow/stages/base";
|
import { BaseStage } from "@goauthentik/flow/stages/base";
|
||||||
|
import type { TurnstileObject } from "turnstile-types";
|
||||||
|
|
||||||
import { msg } from "@lit/localize";
|
import { msg } from "@lit/localize";
|
||||||
import { CSSResult, TemplateResult, html } from "lit";
|
import { CSSResult, TemplateResult, html } from "lit";
|
||||||
|
@ -21,6 +21,10 @@ import PFBase from "@patternfly/patternfly/patternfly-base.css";
|
||||||
|
|
||||||
import { CaptchaChallenge, CaptchaChallengeResponseRequest } from "@goauthentik/api";
|
import { CaptchaChallenge, CaptchaChallengeResponseRequest } from "@goauthentik/api";
|
||||||
|
|
||||||
|
interface TurnstileWindow extends Window {
|
||||||
|
turnstile: TurnstileObject;
|
||||||
|
}
|
||||||
|
|
||||||
@customElement("ak-stage-captcha")
|
@customElement("ak-stage-captcha")
|
||||||
export class CaptchaStage extends BaseStage<CaptchaChallenge, CaptchaChallengeResponseRequest> {
|
export class CaptchaStage extends BaseStage<CaptchaChallenge, CaptchaChallengeResponseRequest> {
|
||||||
static get styles(): CSSResult[] {
|
static get styles(): CSSResult[] {
|
||||||
|
@ -110,9 +114,8 @@ export class CaptchaStage extends BaseStage<CaptchaChallenge, CaptchaChallengeRe
|
||||||
if (!Object.hasOwn(window, "turnstile")) {
|
if (!Object.hasOwn(window, "turnstile")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
window.turnstile.render(container, {
|
(window as unknown as TurnstileWindow).turnstile.render(container, {
|
||||||
sitekey: this.challenge.siteKey,
|
sitekey: this.challenge.siteKey,
|
||||||
size: "invisible",
|
|
||||||
callback: (token) => {
|
callback: (token) => {
|
||||||
this.host?.submit({
|
this.host?.submit({
|
||||||
token: token,
|
token: token,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
declare module "*.css";
|
declare module "*.css";
|
||||||
|
|
||||||
declare module "*.md" {
|
declare module "*.md" {
|
||||||
const html: string;
|
const html: string;
|
||||||
const metadata: { [key: string]: string };
|
const metadata: { [key: string]: string };
|
||||||
|
|
|
@ -82,9 +82,9 @@ export class UserInterface extends Interface {
|
||||||
:host([theme="dark"]) .pf-c-page__header {
|
:host([theme="dark"]) .pf-c-page__header {
|
||||||
color: var(--ak-dark-foreground) !important;
|
color: var(--ak-dark-foreground) !important;
|
||||||
}
|
}
|
||||||
.pf-c-page__header-tools-item .fas,
|
:host([theme="light"]) .pf-c-page__header-tools-item .fas,
|
||||||
.pf-c-notification-badge__count,
|
:host([theme="light"]) .pf-c-notification-badge__count,
|
||||||
.pf-c-page__header-tools-group .pf-c-button {
|
:host([theme="light"]) .pf-c-page__header-tools-group .pf-c-button {
|
||||||
color: var(--ak-global--Color--100) !important;
|
color: var(--ak-global--Color--100) !important;
|
||||||
}
|
}
|
||||||
.pf-c-page {
|
.pf-c-page {
|
||||||
|
@ -183,7 +183,7 @@ export class UserInterface extends Interface {
|
||||||
<ak-enterprise-status interface="user"></ak-enterprise-status>
|
<ak-enterprise-status interface="user"></ak-enterprise-status>
|
||||||
<div class="pf-c-page">
|
<div class="pf-c-page">
|
||||||
<div class="background-wrapper" style="${this.uiConfig.theme.background}">
|
<div class="background-wrapper" style="${this.uiConfig.theme.background}">
|
||||||
${this.uiConfig.theme.background === ""
|
${(this.uiConfig.theme.background || "") === ""
|
||||||
? html`<div class="background-default-slant"></div>`
|
? html`<div class="background-default-slant"></div>`
|
||||||
: html``}
|
: html``}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,11 +21,9 @@ export class UserTokenForm extends ModelForm<Token, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.instance) {
|
return this.instance
|
||||||
return msg("Successfully updated token.");
|
? msg("Successfully updated token.")
|
||||||
} else {
|
: msg("Successfully created token.");
|
||||||
return msg("Successfully created token.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async send(data: Token): Promise<Token> {
|
async send(data: Token): Promise<Token> {
|
||||||
|
|
|
@ -2885,10 +2885,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>Diese Einstellung betrifft nur neue Ereignisse, da die Ablaufzeit für jedes Ereignis gespeichert wird.</target>
|
<target>Diese Einstellung betrifft nur neue Ereignisse, da die Ablaufzeit für jedes Ereignis gespeichert wird.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>Format: "Wochen=3;Tage=2;Stunden=3,Sekunden=2".</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
<target>Konfiguriere visuelle Einstellungen und Standards für verschiedene Domains.</target>
|
<target>Konfiguriere visuelle Einstellungen und Standards für verschiedene Domains.</target>
|
||||||
|
|
|
@ -3020,10 +3020,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>This setting only affects new Events, as the expiration is saved per-event.</target>
|
<target>This setting only affects new Events, as the expiration is saved per-event.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>Format: "weeks=3;days=2;hours=3,seconds=2".</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
<target>Configure visual settings and defaults for different domains.</target>
|
<target>Configure visual settings and defaults for different domains.</target>
|
||||||
|
|
|
@ -2839,10 +2839,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>Esta configuración solo afecta a los eventos nuevos, ya que la caducidad se guarda por evento.</target>
|
<target>Esta configuración solo afecta a los eventos nuevos, ya que la caducidad se guarda por evento.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>Formato: «semanas = 3; días = 2; horas = 3, segundos = 2».</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
<target>Configure los ajustes visuales y los valores predeterminados para los diferentes dominios.</target>
|
<target>Configure los ajustes visuales y los valores predeterminados para los diferentes dominios.</target>
|
||||||
|
|
|
@ -3767,11 +3767,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>Ce paramètre n'affecte que les nouveaux événements, l'expiration étant enregistrée pour chaque événement.</target>
|
<target>Ce paramètre n'affecte que les nouveaux événements, l'expiration étant enregistrée pour chaque événement.</target>
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>Format : "weeks=3;days=2;hours=3,seconds=2".</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
|
@ -7927,51 +7922,67 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="scda8dc24b561e205">
|
<trans-unit id="scda8dc24b561e205">
|
||||||
<source>There was an error in the application.</source>
|
<source>There was an error in the application.</source>
|
||||||
|
<target>Une erreur a été rencontrée dans l'application.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sdaca9c2c0361ed3a">
|
<trans-unit id="sdaca9c2c0361ed3a">
|
||||||
<source>Review the application.</source>
|
<source>Review the application.</source>
|
||||||
|
<target>Passer en revue l'application.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sb50000a8fada5672">
|
<trans-unit id="sb50000a8fada5672">
|
||||||
<source>There was an error in the provider.</source>
|
<source>There was an error in the provider.</source>
|
||||||
|
<target>Une erreur a été rencontrée dans le fournisseur.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s21f95eaf151d4ce3">
|
<trans-unit id="s21f95eaf151d4ce3">
|
||||||
<source>Review the provider.</source>
|
<source>Review the provider.</source>
|
||||||
|
<target>Passer en revue le fournisseur.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s9fd39a5cb20b4e61">
|
<trans-unit id="s9fd39a5cb20b4e61">
|
||||||
<source>There was an error</source>
|
<source>There was an error</source>
|
||||||
|
<target>Il y a eu une erreur</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s7a6b3453209e1066">
|
<trans-unit id="s7a6b3453209e1066">
|
||||||
<source>There was an error creating the application, but no error message was sent. Please review the server logs.</source>
|
<source>There was an error creating the application, but no error message was sent. Please review the server logs.</source>
|
||||||
|
<target>Il y a eu une erreur lors de la création de l'application, mais aucun message d'erreur n'a été envoyé. Veuillez consulter les logs du serveur.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s1a711c19cda48375">
|
<trans-unit id="s1a711c19cda48375">
|
||||||
<source>Configure LDAP Provider</source>
|
<source>Configure LDAP Provider</source>
|
||||||
|
<target>Configurer le fournisseur LDAP</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s9368e965b5c292ab">
|
<trans-unit id="s9368e965b5c292ab">
|
||||||
<source>Configure OAuth2/OpenId Provider</source>
|
<source>Configure OAuth2/OpenId Provider</source>
|
||||||
|
<target>Configurer le fournisseur OAuth2/OpenID</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sf5cbccdc6254c8dc">
|
<trans-unit id="sf5cbccdc6254c8dc">
|
||||||
<source>Configure Proxy Provider</source>
|
<source>Configure Proxy Provider</source>
|
||||||
|
<target>Configurer le fournisseur Proxy</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sf6d46bb442b77e91">
|
<trans-unit id="sf6d46bb442b77e91">
|
||||||
<source>AdditionalScopes</source>
|
<source>AdditionalScopes</source>
|
||||||
|
<target>Scopes additionels</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s2c8c6f89089b31d4">
|
<trans-unit id="s2c8c6f89089b31d4">
|
||||||
<source>Configure Radius Provider</source>
|
<source>Configure Radius Provider</source>
|
||||||
|
<target>Configurer le fournisseur Radius</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfe906cde5dddc041">
|
<trans-unit id="sfe906cde5dddc041">
|
||||||
<source>Configure SAML Provider</source>
|
<source>Configure SAML Provider</source>
|
||||||
|
<target>Configurer le fournisseur SAML</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sb3defbacd01ad972">
|
<trans-unit id="sb3defbacd01ad972">
|
||||||
<source>Property mappings used for user mapping.</source>
|
<source>Property mappings used for user mapping.</source>
|
||||||
|
<target>Mappages de propriété utilisés pour la correspondance des utilisateurs.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s7ccce0ec8d228db6">
|
<trans-unit id="s7ccce0ec8d228db6">
|
||||||
<source>Configure SCIM Provider</source>
|
<source>Configure SCIM Provider</source>
|
||||||
|
<target>Configurer le fournisseur SCIM</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sd7728d2b6e1d25e9">
|
<trans-unit id="sd7728d2b6e1d25e9">
|
||||||
<source>Property mappings used for group creation.</source>
|
<source>Property mappings used for group creation.</source>
|
||||||
|
<target>Mappages de propriétés utilisés lors de la création des groupe</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s7513372fe60f6387">
|
<trans-unit id="s7513372fe60f6387">
|
||||||
<source>Event volume</source>
|
<source>Event volume</source>
|
||||||
|
<target>Volume d'événements</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s744401846fea6e76">
|
<trans-unit id="s744401846fea6e76">
|
||||||
<source>Brand</source>
|
<source>Brand</source>
|
||||||
|
|
|
@ -2935,10 +2935,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>To ustawienie ma wpływ tylko na nowe zdarzenia, ponieważ data wygaśnięcia jest zapisywana dla każdego zdarzenia.</target>
|
<target>To ustawienie ma wpływ tylko na nowe zdarzenia, ponieważ data wygaśnięcia jest zapisywana dla każdego zdarzenia.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>Format: "weeks=3;days=2;hours=3,seconds=2".</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
<target>Skonfiguruj ustawienia wizualne i domyślne dla różnych domen.</target>
|
<target>Skonfiguruj ustawienia wizualne i domyślne dla różnych domen.</target>
|
||||||
|
|
|
@ -3744,11 +3744,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>Ţĥĩś śēţţĩńĝ ōńĺŷ àƒƒēćţś ńēŵ Ēvēńţś, àś ţĥē ēxƥĩŕàţĩōń ĩś śàvēď ƥēŕ-ēvēńţ.</target>
|
<target>Ţĥĩś śēţţĩńĝ ōńĺŷ àƒƒēćţś ńēŵ Ēvēńţś, àś ţĥē ēxƥĩŕàţĩōń ĩś śàvēď ƥēŕ-ēvēńţ.</target>
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>Ƒōŕmàţ: "ŵēēķś=3;ďàŷś=2;ĥōũŕś=3,śēćōńďś=2".</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
|
|
|
@ -2838,10 +2838,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>Bu ayar, süre sonu olay başına kaydedildiğinden, yalnızca yeni Olayları etkiler.</target>
|
<target>Bu ayar, süre sonu olay başına kaydedildiğinden, yalnızca yeni Olayları etkiler.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>Biçim: “hafta=3; gün = 2; saat=3, ikincil=2".</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
<target>Farklı etki alanları için görsel ayarları ve varsayılanları yapılandırın.</target>
|
<target>Farklı etki alanları için görsel ayarları ve varsayılanları yapılandırın.</target>
|
||||||
|
|
|
@ -3769,11 +3769,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>此设置仅影响新事件,因为过期时间是分事件保存的。</target>
|
<target>此设置仅影响新事件,因为过期时间是分事件保存的。</target>
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>格式:"weeks=3;days=2;hours=3,seconds=2"。</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
|
|
|
@ -2864,10 +2864,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>此设置仅影响新事件,因为过期时间是按事件保存的。</target>
|
<target>此设置仅影响新事件,因为过期时间是按事件保存的。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>格式:"weeks=3;days=2;hours=3,seconds=2"。</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
<target>配置不同域的可视化设置和默认值。</target>
|
<target>配置不同域的可视化设置和默认值。</target>
|
||||||
|
|
|
@ -3743,11 +3743,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
<source>This setting only affects new Events, as the expiration is saved per-event.</source>
|
||||||
<target>此設定僅會影響新的事件紀錄,舊的紀錄到期時間已經設定。</target>
|
<target>此設定僅會影響新的事件紀錄,舊的紀錄到期時間已經設定。</target>
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
|
||||||
<target>格式:(weeks=3;days=2;hours=3,seconds=2)。</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s164be9a7537b99f6">
|
<trans-unit id="s164be9a7537b99f6">
|
||||||
<source>Configure visual settings and defaults for different domains.</source>
|
<source>Configure visual settings and defaults for different domains.</source>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
title: “Happy Birthday to Us!”
|
title: "Happy Birthday to Us!"
|
||||||
description: “We are celebrating our one-year anniversary since the founding of Authentik Security..”
|
description: "We are celebrating our one-year anniversary since the founding of Authentik Security.."
|
||||||
slug: 2023-11-1-happy-birthday-to-us
|
slug: 2023-11-1-happy-birthday-to-us
|
||||||
authors:
|
authors:
|
||||||
- name: Jens Langhammer and the authentik team
|
- name: Jens Langhammer and the authentik team
|
||||||
|
@ -56,7 +56,7 @@ Once you get to know Jens, you won’t be surprised to his answer about what he
|
||||||
|
|
||||||
That task alone will scare most of us. In software, team work is most definitely what makes the dream work, so finding the right talents and skills sets and experiences to compliment Jens’ deep technical skills and full-stack experience was of paramount importance. We now have developers with expertise in frontend and backend development, infrastructure, and security, a well as a content editor.
|
That task alone will scare most of us. In software, team work is most definitely what makes the dream work, so finding the right talents and skills sets and experiences to compliment Jens’ deep technical skills and full-stack experience was of paramount importance. We now have developers with expertise in frontend and backend development, infrastructure, and security, a well as a content editor.
|
||||||
|
|
||||||
Of course, it is not just the technical skills that a potential new hire needs; as important are less-measurable skills like collaboration, communication, and perhaps most importantly, what we call “technical curiosity”.
|
Of course, it is not just the technical skills that a potential new hire needs; as important are less-measurable skills like collaboration, communication, and perhaps most importantly, what we call "technical curiosity".
|
||||||
|
|
||||||
> How does this thing work, from whom can I learn more, and with whom can I share my knowledge?
|
> How does this thing work, from whom can I learn more, and with whom can I share my knowledge?
|
||||||
|
|
||||||
|
@ -90,10 +90,10 @@ An interesting offset to our shared love of building is the shared sense of humi
|
||||||
|
|
||||||
The tone and espirit of the company is one reason it’s so meaningful to celebrate our 1-year birthday; we can happily celebrate a hard year of doing things with full, enthusiastic engagement. At authentik, nerdiness is embraced, technical curiosity flourishes, and transparency is a big part of our nature. Speaking of how we communicate with our community, our Discord forum is (in addition to GitHub) an important place where transparency matters. For example, we recently asked our community what they preferred for a release cycle. Based on the answers, we lengthened the release time from from monthly to every two or three months.
|
The tone and espirit of the company is one reason it’s so meaningful to celebrate our 1-year birthday; we can happily celebrate a hard year of doing things with full, enthusiastic engagement. At authentik, nerdiness is embraced, technical curiosity flourishes, and transparency is a big part of our nature. Speaking of how we communicate with our community, our Discord forum is (in addition to GitHub) an important place where transparency matters. For example, we recently asked our community what they preferred for a release cycle. Based on the answers, we lengthened the release time from from monthly to every two or three months.
|
||||||
|
|
||||||
Moving from a role of solo creator of an open source project, to being primary maintainer of a popular, growing project, to suddenly being CTO of a company based on that project is a quite a transition. A natural question we wanted to ask Jens is “What’s been the hardest thing about building a company?” His answers:
|
Moving from a role of solo creator of an open source project, to being primary maintainer of a popular, growing project, to suddenly being CTO of a company based on that project is a quite a transition. A natural question we wanted to ask Jens is "What’s been the hardest thing about building a company?" His answers:
|
||||||
|
|
||||||
- “Recognizing and accepting that you don’t get to work on only what you want to, 100% of time… “
|
- "Recognizing and accepting that you don’t get to work on only what you want to, 100% of time… "
|
||||||
- “Learning to delegate, learning to let go a bit, trusting others to do it in their way, in the right spirit. Especially letting others get into the code… I’ve learned that instead of saying ‘I would not have done it this way’, I instead measure the success of the change itself.”
|
- "Learning to delegate, learning to let go a bit, trusting others to do it in their way, in the right spirit. Especially letting others get into the code… I’ve learned that instead of saying ‘I would not have done it this way’, I instead measure the success of the change itself."
|
||||||
|
|
||||||
### What’s up next?
|
### What’s up next?
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
title: Automated security versus the security mindset
|
title: Automated security versus the security mindset
|
||||||
description: “Automated security plays a key part in many cybersecurity tasks. But what are its failings and will a security mindset always require the human factor?”
|
description: "Automated security plays a key part in many cybersecurity tasks. But what are its failings and will a security mindset always require the human factor?"
|
||||||
slug: 2023-11-30-automated-security-versus-the-security-mindset
|
slug: 2023-11-30-automated-security-versus-the-security-mindset
|
||||||
authors:
|
authors:
|
||||||
- name: Jens Langhammer
|
- name: Jens Langhammer
|
||||||
|
@ -142,7 +142,7 @@ Once new and significant threats are detected by the automated security, it is h
|
||||||
|
|
||||||
### Human-centered cybersecurity
|
### Human-centered cybersecurity
|
||||||
|
|
||||||
Despite the growing technology around automated security, and the temptation to relax when it is deployed, there are human factors that are irreplaceable in the practice of cybersecurity. We recently wrote about the importance of the “Blue Team” and how [organizational and product hardening](https://goauthentik.io/blog/2023-11-22-how-we-saved-over-100k#hardening) are an integral part of our human-centered security mindset.
|
Despite the growing technology around automated security, and the temptation to relax when it is deployed, there are human factors that are irreplaceable in the practice of cybersecurity. We recently wrote about the importance of the "Blue Team" and how [organizational and product hardening](https://goauthentik.io/blog/2023-11-22-how-we-saved-over-100k#hardening) are an integral part of our human-centered security mindset.
|
||||||
|
|
||||||
- The human ability to think creatively and rapidly adapt to changing situations is invaluable to good security processes.
|
- The human ability to think creatively and rapidly adapt to changing situations is invaluable to good security processes.
|
||||||
- The higher the security risk, the more you need skilled security professionals to supervise the security process.
|
- The higher the security risk, the more you need skilled security professionals to supervise the security process.
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
---
|
||||||
|
title: "Okta's October breach part two: a delayed but slightly better response"
|
||||||
|
description: "Okta continues to revel more information about the HAR files breach first revealed in October; now we know that a service account was involved, and 100% of their customer support users were impacted."
|
||||||
|
slug: 2023-12-12-oktas-october-breach-part-two
|
||||||
|
authors:
|
||||||
|
- name: Jens Langhammer
|
||||||
|
title: CTO at Authentik Security Inc
|
||||||
|
url: https://github.com/BeryJu
|
||||||
|
image_url: https://github.com/BeryJu.png
|
||||||
|
tags:
|
||||||
|
- authentik
|
||||||
|
- security mindset
|
||||||
|
- incident response
|
||||||
|
- service account
|
||||||
|
- Okta
|
||||||
|
- SSO
|
||||||
|
- HAR files
|
||||||
|
- identity provider
|
||||||
|
- authentication
|
||||||
|
- Authentik Security
|
||||||
|
hide_table_of_contents: false
|
||||||
|
image: ./okta-timeline.png
|
||||||
|
---
|
||||||
|
|
||||||
|
> **_authentik is an open source Identity Provider that unifies your identity needs into a single platform, replacing Okta, Active Directory, and auth0. Authentik Security is a [public benefit company](https://github.com/OpenCoreVentures/ocv-public-benefit-company/blob/main/ocv-public-benefit-company-charter.md) building on top of the open source project._**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
On November 29th, 2023, Okta [revealed](https://sec.okta.com/harfiles) that a breach they announced in October was much worse than originally conveyed. The number of impacted users went from less than 1% of customers to every single customer who had every opened a Support ticket in the Okta Help Center.
|
||||||
|
|
||||||
|
> So the impact leapt from [134 users](https://sec.okta.com/articles/2023/11/unauthorized-access-oktas-support-case-management-system-root-cause) to [18,400 users](https://www.beyondtrust.com/blog/entry/okta-support-unit-breach-update).
|
||||||
|
|
||||||
|
We wrote in October about Okta’s poor response to breaches (see [Okta got breached again](https://goauthentik.io/blog/2023-10-23-another-okta-breach)), but since our blog doesn’t seem to be changing Okta’s behaviour, let’s take a closer look at the new revelations from Okta about what happened back in October, how it is impacting users now, and why Okta is still dealing with it in December.
|
||||||
|
|
||||||
|
> Now all of Okta’s customers are paying the price… with increased phishing and spam.
|
||||||
|
|
||||||
|
Our take is that any company can be hacked, but it is the response that matters. How quick is the response, how transparent are the details, how forthright are the acknowledgments? Okta’s initial announcement about the October breach (remember the [HAR file](https://goauthentik.io/blog/2023-10-23-another-okta-breach) that contained a session token?) was less-than-timely, devoid of details, and titled with one of the worst titles ever given such a serious announcement.
|
||||||
|
|
||||||
|
![screenshot of the timeline that Okta published](./okta-timeline.png)
|
||||||
|
|
||||||
|
<!--truncate-->
|
||||||
|
|
||||||
|
## Looking back at October’s breach
|
||||||
|
|
||||||
|
With the original incident, probably what most people now recall is not only the technical details of the session tokens that were exposed in HAR files, but also the very slow response time. Turns out 1Password reported the breach to Okta on September 29, and [BeyondTrust](https://www.beyondtrust.com/blog/entry/okta-support-unit-breach) reported the breach to Okta on October 2. But Okta waited three weeks before announcing the breach on October 20th.
|
||||||
|
|
||||||
|
In this October 20th announcement, Okta CISO David Bradbury stated that the malicious actor had gained access to Okta’s Support dashboard and retrieved only names and emails addresses for a very small number of customers. He explained that the hacker used session tokens that were not scrubbed from a HAR file (which Okta support routinely asks their customers to submit, for troubleshooting purposes) to gain access to specific customer’s accounts. But what wasn’t revealed at the time (because Okta themselves did not yet know) was _how_ the hacker obtained access to the Customer Support dashboard to access customer accounts and then download associated HAR files.
|
||||||
|
|
||||||
|
### The second **Okta shoe fell in early November**
|
||||||
|
|
||||||
|
As mentioned above, the new information revealed by Okta came from their security team retracing the steps of the original malicious actor. Okta’s research and analysis was greatly aided by the fact that [BeyondTrust shared a suspicious IP address with Okta](https://www.beyondtrust.com/blog/entry/okta-support-unit-breach-update); the IP address that BeyondTrust believed to be the hacker’s.
|
||||||
|
|
||||||
|
**Initial access gained via a service account**
|
||||||
|
|
||||||
|
This new finding, based on retracing the steps of that IP address, show that the initial breach occurred when the hacker obtained the credentials for a service account "stored in the system", which provided access to the Customer Support dashboard and had permissions to view and update customer support cases. The hacker then reviewed customer support cases, downloaded the associated HAR files, and retrieved the session tokens.
|
||||||
|
|
||||||
|
From the [November 3rd announcement](https://sec.okta.com/articles/2023/11/unauthorized-access-oktas-support-case-management-system-root-cause), we now know that the service account credentials were exposed through an Okta employee’s personal Google account, which the employee had accessed on the Okta-issued work laptop.
|
||||||
|
|
||||||
|
In announcing the service account’s role in the breach, Okta’s CISO stated:
|
||||||
|
|
||||||
|
> "During our investigation into suspicious use of this account, Okta Security identified that an employee had signed-in to their personal Google profile on the Chrome browser of their Okta-managed laptop. The username and password of the service account had been saved into the employee’s personal Google account."
|
||||||
|
|
||||||
|
The use of the service account was discovered on October 16, by examining the activities of the IP address of the hacker that BeyondTrust had supplied Okta. This begs the question of why Okta did not revel the malicious use of the service account in their October 20th announcement. Perhaps they did not yet want to show details of their internal investigation?
|
||||||
|
|
||||||
|
### And a third shoe in late November
|
||||||
|
|
||||||
|
Now fast-forward to Okta’s [November 29th announcement](https://sec.okta.com/harfiles). Back in October, it was known that after the hacker accessed Okta’s Support dashboard they ran queries on the support database to create reports containing customer data. In the November 3rd announcement Okta shared that the report was thought to be quite small is scope; this is the infamous "less than 1% of Okta customers" statement.
|
||||||
|
|
||||||
|
But after more internal investigation and recreating the reports that the malicious actor ran, Okta announced on November 29th that their original statement that less than 1% of their users were impacted by the October breach was incorrect. Instead, Okta revealed that the scope of the report was much larger, and indeed concluded that "[the report contained a list of all customer support system users](https://sec.okta.com/harfiles)". A total of 18,400 users. The only customers that were not impacted are those in FedRAMP and DoD IL4 environments, who are on a separate support platform.
|
||||||
|
|
||||||
|
> An aside, perhaps, but the timing of Okta’s update is interesting; the announcement was released on the same date as the quarterly earnings report. This could be seen as transparency, or it could be seen as damage control. (Also, why in the heck is Nov 29th within Okta’s 3rd quarter of **fiscal year 2024**? But we aren’t writing here about Okta’s financial schedules; I digress.)
|
||||||
|
|
||||||
|
**Filters removed from report**
|
||||||
|
|
||||||
|
Apparently when the hacker ran queries to gather customer data, they used a standard template available from the dashboard. However, they removed all filters on the templated report, thus grabbing much more data then the original template would have returned.
|
||||||
|
|
||||||
|
In addition to removing all filters on the report, it seems that Okta’s original analysis of the logs pertaining to the breach failed to take in to account exactly HOW the hacker accessed and downloaded data:
|
||||||
|
|
||||||
|
> "For a period of 14 days, while actively investigating, Okta did not identify suspicious downloads in our logs. When a user opens and views files attached to a support case, a specific log event type and ID is generated tied to that file. If a user instead navigates directly to the Files tab in the customer support system, as the threat actor did in this attack, they will instead generate an **entirely different log event** with a different record ID."
|
||||||
|
|
||||||
|
## Now what?
|
||||||
|
|
||||||
|
The third shoe has dropped, but it feels like there might still be a fourth. Maybe even more data was stolen, beyond just email addresses. Perhaps the malicious actor gained more sensitive customer data when they were able to log into specific customer’s accounts, but are sitting on it waiting to use it. Perhaps the explorations by the hacker form within the customer support system reveled other weaknesses that have yet to be exploited.
|
||||||
|
|
||||||
|
So while we are all waiting with baited breath to see if Okta can squeeze even more drama into 2023, here are a few tips to consider:
|
||||||
|
|
||||||
|
- If you are an Okta customer, do indeed follow each and every one of their recommendations, listed under the "**Implementing recommended best practices**" section of their [November 29th announcement](https://sec.okta.com/harfiles).
|
||||||
|
- Be aware of Okta’s plan for a 90-day pause on new features. During the [earning report call](https://seekingalpha.com/article/4655057-okta-inc-okta-q3-2024-earnings-call-transcript) on November 29th CEO Todd McKinnon stated "During this hyper-focused phase, no other project or even product development area is more important. In fact, the launch dates for the new products and features that we highlighted at Oktane last month will be pushed out approximately 90 days."
|
||||||
|
- As Okta advises, be on the lookout for more phishing attempts and stay hyper-vigilant.
|
||||||
|
- In general, across the board, be vigilant and adopt a "[security mindset](https://goauthentik.io/blog/2023-11-30-automated-security-versus-the-security-mindset)" (as valuable and maybe more than any technology).
|
||||||
|
- Consider breaking out of vendor lock-in and using an on-premise, open core solution such as [authentik](https://goauthentik.io/). We realize change is hard, but continual breaches and uncertainty around when a breach has been fully contained is also painful.
|
||||||
|
|
||||||
|
We’d be happy to talk with you more about your security and identity management needs; reach out to us with an email to [hello@goauthentik.io](mailto:hello@goauthentik.io) or on [Discord](https://discord.com/channels/809154715984199690/809154716507963434).
|
Binary file not shown.
After Width: | Height: | Size: 95 KiB |
|
@ -27,6 +27,8 @@ The following aspects can be configured:
|
||||||
|
|
||||||
Starting with authentik 2022.2, you can use placeholders in the launch url to build them dynamically based on logged in user. For example, you can set the Launch URL to `https://goauthentik.io/%(username)s`, which will be replaced with the currently logged in user's username.
|
Starting with authentik 2022.2, you can use placeholders in the launch url to build them dynamically based on logged in user. For example, you can set the Launch URL to `https://goauthentik.io/%(username)s`, which will be replaced with the currently logged in user's username.
|
||||||
|
|
||||||
|
Only applications whose launch URL starts with `http://` or `https://` or are relative URLs are shown on the users's **My applications** page. This can also be used to hide applications that shouldn't be visible on the **My applications** page but are still accessible by users, by setting the _Launch URL_ to `hidden://`.
|
||||||
|
|
||||||
- _Icon (URL)_: Optionally configure an Icon for the application
|
- _Icon (URL)_: Optionally configure an Icon for the application
|
||||||
|
|
||||||
If the authentik server does not have a volume mounted under `/media`, you'll get a text input. This accepts absolute URLs. If you've mounted single files into the container, you can reference them using `https://authentik.company/media/my-file.png`.
|
If the authentik server does not have a volume mounted under `/media`, you'll get a text input. This accepts absolute URLs. If you've mounted single files into the container, you can reference them using `https://authentik.company/media/my-file.png`.
|
||||||
|
|
|
@ -46,7 +46,7 @@ As first stage, add an _Authentication validation_ stage, with the WebAuthn devi
|
||||||
After this stage you can bind any additional verification stages.
|
After this stage you can bind any additional verification stages.
|
||||||
As final stage, bind a _User login_ stage.
|
As final stage, bind a _User login_ stage.
|
||||||
|
|
||||||
Users can either access this flow directly via it's URL, or you can modify any Identification stage to add a direct link to this flow.
|
Users can either access this flow directly via its URL, or you can modify any Identification stage's _Passwordless flow_ setting to add a direct link to this flow.
|
||||||
|
|
||||||
### Logging
|
### Logging
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,6 @@ Select which fields the user can use to identify themselves. Multiple fields can
|
||||||
|
|
||||||
UPN will attempt to identify the user based on the `upn` attribute, which can be imported with an [LDAP Source](/integrations/sources/ldap/index)
|
UPN will attempt to identify the user based on the `upn` attribute, which can be imported with an [LDAP Source](/integrations/sources/ldap/index)
|
||||||
|
|
||||||
:::info
|
|
||||||
Starting with authentik 2023.5, when no user fields are selected and only one source is selected, authentik will automatically redirect the user to that source.
|
|
||||||
:::
|
|
||||||
|
|
||||||
## Password stage
|
## Password stage
|
||||||
|
|
||||||
To prompt users for their password on the same step as identifying themselves, a password stage can be selected here. If a password stage is selected in the Identification stage, the password stage should not be bound to the flow.
|
To prompt users for their password on the same step as identifying themselves, a password stage can be selected here. If a password stage is selected in the Identification stage, the password stage should not be bound to the flow.
|
||||||
|
@ -33,3 +29,29 @@ Requires authentik 2024.1
|
||||||
:::
|
:::
|
||||||
|
|
||||||
When enabled, any user identifier will be accepted as valid (as long as they match the correct format, i.e. when [User fields](#user-fields) is set to only allow Emails, then the identifier still needs to be an Email). The stage will succeed and the flow will continue to the next stage. Stages like the [Password stage](../password/index.md) and [Email stage](../email/index.mdx) are aware of this "pretend" user and will behave the same as if the user would exist.
|
When enabled, any user identifier will be accepted as valid (as long as they match the correct format, i.e. when [User fields](#user-fields) is set to only allow Emails, then the identifier still needs to be an Email). The stage will succeed and the flow will continue to the next stage. Stages like the [Password stage](../password/index.md) and [Email stage](../email/index.mdx) are aware of this "pretend" user and will behave the same as if the user would exist.
|
||||||
|
|
||||||
|
## Source settings
|
||||||
|
|
||||||
|
Some sources (like the [OAuth Source](../../../../integrations/sources/oauth/) and [SAML Source](../../../../integrations/sources/saml/)) require user interaction. To make these sources available to users, they can be selected in the Identification stage settings, which will show them below the selected [user field](#user-fields).
|
||||||
|
|
||||||
|
By default, sources are only shown with their icon, which can be changed with the _Show sources' labels_ option.
|
||||||
|
|
||||||
|
Furthermore, it is also possible to deselect any [user field option](#user-fields) for an Identification stage, which will result in users only being able to use currently configured sources.
|
||||||
|
|
||||||
|
:::info
|
||||||
|
Starting with authentik 2023.5, when no user fields are selected and only one source is selected, authentik will automatically redirect the user to that source. This only applies when the **Passwordless flow** option is _not_ configured.
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Flow settings
|
||||||
|
|
||||||
|
### Passwordless flow
|
||||||
|
|
||||||
|
See [Passwordless authentication](../authenticator_validate/index.md#passwordless-authentication).
|
||||||
|
|
||||||
|
### Enrollment flow
|
||||||
|
|
||||||
|
Optionally can be set to a flow with the designation of _Enrollment_, which will allow users to sign up.
|
||||||
|
|
||||||
|
### Recovery flow
|
||||||
|
|
||||||
|
Optionally can be set to a flow with the designation of _Recovery_, which will allow users to recover their credentials.
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue