Compare commits
30 Commits
version/20
...
version-20
| Author | SHA1 | Date | |
|---|---|---|---|
| 619203c177 | |||
| 4ae476e58d | |||
| e444d0d640 | |||
| 3869965b4c | |||
| d4e1b95991 | |||
| 2b730dec54 | |||
| 2aacb311bc | |||
| 40055ef01b | |||
| 75608dce5c | |||
| b0f7083879 | |||
| 62bf79ce32 | |||
| 7a16c9cb14 | |||
| d29d161ac6 | |||
| 653631ac77 | |||
| cde303e780 | |||
| aa359a032c | |||
| 6491065aab | |||
| 79eec5a3a0 | |||
| cd5e091937 | |||
| 7ed8952803 | |||
| c1f302fb7c | |||
| cb31e52d0e | |||
| 782764ac73 | |||
| d0c56325ef | |||
| 73d57d6f82 | |||
| 2716a26887 | |||
| 0452537e8b | |||
| d1a1bfbbc5 | |||
| a69fcbca9a | |||
| 1ac4dacc3b |
@ -1,5 +1,5 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
current_version = 2021.9.5
|
current_version = 2021.9.8
|
||||||
tag = True
|
tag = True
|
||||||
commit = True
|
commit = True
|
||||||
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\-?(?P<release>.*)
|
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\-?(?P<release>.*)
|
||||||
|
|||||||
20
.github/workflows/release-publish.yml
vendored
20
.github/workflows/release-publish.yml
vendored
@ -33,14 +33,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
push: ${{ github.event_name == 'release' }}
|
push: ${{ github.event_name == 'release' }}
|
||||||
tags: |
|
tags: |
|
||||||
beryju/authentik:2021.9.5,
|
beryju/authentik:2021.9.8,
|
||||||
beryju/authentik:latest,
|
beryju/authentik:latest,
|
||||||
ghcr.io/goauthentik/server:2021.9.5,
|
ghcr.io/goauthentik/server:2021.9.8,
|
||||||
ghcr.io/goauthentik/server:latest
|
ghcr.io/goauthentik/server:latest
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
context: .
|
context: .
|
||||||
- name: Building Docker Image (stable)
|
- name: Building Docker Image (stable)
|
||||||
if: ${{ github.event_name == 'release' && !contains('2021.9.5', 'rc') }}
|
if: ${{ github.event_name == 'release' && !contains('2021.9.8', 'rc') }}
|
||||||
run: |
|
run: |
|
||||||
docker pull beryju/authentik:latest
|
docker pull beryju/authentik:latest
|
||||||
docker tag beryju/authentik:latest beryju/authentik:stable
|
docker tag beryju/authentik:latest beryju/authentik:stable
|
||||||
@ -75,14 +75,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
push: ${{ github.event_name == 'release' }}
|
push: ${{ github.event_name == 'release' }}
|
||||||
tags: |
|
tags: |
|
||||||
beryju/authentik-proxy:2021.9.5,
|
beryju/authentik-proxy:2021.9.8,
|
||||||
beryju/authentik-proxy:latest,
|
beryju/authentik-proxy:latest,
|
||||||
ghcr.io/goauthentik/proxy:2021.9.5,
|
ghcr.io/goauthentik/proxy:2021.9.8,
|
||||||
ghcr.io/goauthentik/proxy:latest
|
ghcr.io/goauthentik/proxy:latest
|
||||||
file: proxy.Dockerfile
|
file: proxy.Dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
- name: Building Docker Image (stable)
|
- name: Building Docker Image (stable)
|
||||||
if: ${{ github.event_name == 'release' && !contains('2021.9.5', 'rc') }}
|
if: ${{ github.event_name == 'release' && !contains('2021.9.8', 'rc') }}
|
||||||
run: |
|
run: |
|
||||||
docker pull beryju/authentik-proxy:latest
|
docker pull beryju/authentik-proxy:latest
|
||||||
docker tag beryju/authentik-proxy:latest beryju/authentik-proxy:stable
|
docker tag beryju/authentik-proxy:latest beryju/authentik-proxy:stable
|
||||||
@ -117,14 +117,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
push: ${{ github.event_name == 'release' }}
|
push: ${{ github.event_name == 'release' }}
|
||||||
tags: |
|
tags: |
|
||||||
beryju/authentik-ldap:2021.9.5,
|
beryju/authentik-ldap:2021.9.8,
|
||||||
beryju/authentik-ldap:latest,
|
beryju/authentik-ldap:latest,
|
||||||
ghcr.io/goauthentik/ldap:2021.9.5,
|
ghcr.io/goauthentik/ldap:2021.9.8,
|
||||||
ghcr.io/goauthentik/ldap:latest
|
ghcr.io/goauthentik/ldap:latest
|
||||||
file: ldap.Dockerfile
|
file: ldap.Dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
- name: Building Docker Image (stable)
|
- name: Building Docker Image (stable)
|
||||||
if: ${{ github.event_name == 'release' && !contains('2021.9.5', 'rc') }}
|
if: ${{ github.event_name == 'release' && !contains('2021.9.8', 'rc') }}
|
||||||
run: |
|
run: |
|
||||||
docker pull beryju/authentik-ldap:latest
|
docker pull beryju/authentik-ldap:latest
|
||||||
docker tag beryju/authentik-ldap:latest beryju/authentik-ldap:stable
|
docker tag beryju/authentik-ldap:latest beryju/authentik-ldap:stable
|
||||||
@ -175,7 +175,7 @@ jobs:
|
|||||||
SENTRY_PROJECT: authentik
|
SENTRY_PROJECT: authentik
|
||||||
SENTRY_URL: https://sentry.beryju.org
|
SENTRY_URL: https://sentry.beryju.org
|
||||||
with:
|
with:
|
||||||
version: authentik@2021.9.5
|
version: authentik@2021.9.8
|
||||||
environment: beryjuorg-prod
|
environment: beryjuorg-prod
|
||||||
sourcemaps: './web/dist'
|
sourcemaps: './web/dist'
|
||||||
url_prefix: '~/static/dist'
|
url_prefix: '~/static/dist'
|
||||||
|
|||||||
@ -80,8 +80,12 @@ COPY ./lifecycle/ /lifecycle
|
|||||||
COPY --from=builder /work/authentik /authentik-proxy
|
COPY --from=builder /work/authentik /authentik-proxy
|
||||||
|
|
||||||
USER authentik
|
USER authentik
|
||||||
|
|
||||||
ENV TMPDIR /dev/shm/
|
ENV TMPDIR /dev/shm/
|
||||||
ENV PYTHONUNBUFFERED 1
|
ENV PYTHONUNBUFFERED 1
|
||||||
ENV prometheus_multiproc_dir /dev/shm/
|
ENV prometheus_multiproc_dir /dev/shm/
|
||||||
ENV PATH "/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/lifecycle"
|
ENV PATH "/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/lifecycle"
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=30s --timeout=30s --start-period=60s --retries=3 CMD [ "/lifecycle/ak", "healthcheck" ]
|
||||||
|
|
||||||
ENTRYPOINT [ "/lifecycle/ak" ]
|
ENTRYPOINT [ "/lifecycle/ak" ]
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
"""authentik"""
|
"""authentik"""
|
||||||
__version__ = "2021.9.5"
|
__version__ = "2021.9.8"
|
||||||
ENV_GIT_HASH_KEY = "GIT_BUILD_HASH"
|
ENV_GIT_HASH_KEY = "GIT_BUILD_HASH"
|
||||||
|
|||||||
@ -8,3 +8,8 @@ class AuthentikAdminConfig(AppConfig):
|
|||||||
name = "authentik.admin"
|
name = "authentik.admin"
|
||||||
label = "authentik_admin"
|
label = "authentik_admin"
|
||||||
verbose_name = "authentik Admin"
|
verbose_name = "authentik Admin"
|
||||||
|
|
||||||
|
def ready(self):
|
||||||
|
from authentik.admin.tasks import clear_update_notifications
|
||||||
|
|
||||||
|
clear_update_notifications.delay()
|
||||||
|
|||||||
@ -10,7 +10,7 @@ from requests import RequestException
|
|||||||
from structlog.stdlib import get_logger
|
from structlog.stdlib import get_logger
|
||||||
|
|
||||||
from authentik import ENV_GIT_HASH_KEY, __version__
|
from authentik import ENV_GIT_HASH_KEY, __version__
|
||||||
from authentik.events.models import Event, EventAction
|
from authentik.events.models import Event, EventAction, Notification
|
||||||
from authentik.events.monitored_tasks import MonitoredTask, TaskResult, TaskResultStatus
|
from authentik.events.monitored_tasks import MonitoredTask, TaskResult, TaskResultStatus
|
||||||
from authentik.lib.config import CONFIG
|
from authentik.lib.config import CONFIG
|
||||||
from authentik.lib.utils.http import get_http_session
|
from authentik.lib.utils.http import get_http_session
|
||||||
@ -35,6 +35,18 @@ def _set_prom_info():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@CELERY_APP.task()
|
||||||
|
def clear_update_notifications():
|
||||||
|
"""Clear update notifications on startup if the notification was for the version
|
||||||
|
we're running now."""
|
||||||
|
for notification in Notification.objects.filter(event__action=EventAction.UPDATE_AVAILABLE):
|
||||||
|
if "new_version" not in notification.event.context:
|
||||||
|
continue
|
||||||
|
notification_version = notification.event.context["new_version"]
|
||||||
|
if notification_version == __version__:
|
||||||
|
notification.delete()
|
||||||
|
|
||||||
|
|
||||||
@CELERY_APP.task(bind=True, base=MonitoredTask)
|
@CELERY_APP.task(bind=True, base=MonitoredTask)
|
||||||
def update_latest_version(self: MonitoredTask):
|
def update_latest_version(self: MonitoredTask):
|
||||||
"""Update latest version info"""
|
"""Update latest version info"""
|
||||||
|
|||||||
@ -82,6 +82,7 @@ class TokenViewSet(UsedByMixin, ModelViewSet):
|
|||||||
"description",
|
"description",
|
||||||
"expires",
|
"expires",
|
||||||
"expiring",
|
"expiring",
|
||||||
|
"managed",
|
||||||
]
|
]
|
||||||
ordering = ["identifier", "expires"]
|
ordering = ["identifier", "expires"]
|
||||||
permission_classes = [OwnerSuperuserPermissions]
|
permission_classes = [OwnerSuperuserPermissions]
|
||||||
|
|||||||
@ -90,6 +90,9 @@ class UserSerializer(ModelSerializer):
|
|||||||
"attributes",
|
"attributes",
|
||||||
"uid",
|
"uid",
|
||||||
]
|
]
|
||||||
|
extra_kwargs = {
|
||||||
|
"name": {"allow_blank": True},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class UserSelfSerializer(ModelSerializer):
|
class UserSelfSerializer(ModelSerializer):
|
||||||
@ -98,9 +101,25 @@ class UserSelfSerializer(ModelSerializer):
|
|||||||
|
|
||||||
is_superuser = BooleanField(read_only=True)
|
is_superuser = BooleanField(read_only=True)
|
||||||
avatar = CharField(read_only=True)
|
avatar = CharField(read_only=True)
|
||||||
groups = ListSerializer(child=GroupSerializer(), read_only=True, source="ak_groups")
|
groups = SerializerMethodField()
|
||||||
uid = CharField(read_only=True)
|
uid = CharField(read_only=True)
|
||||||
|
|
||||||
|
@extend_schema_field(
|
||||||
|
ListSerializer(
|
||||||
|
child=inline_serializer(
|
||||||
|
"UserSelfGroups",
|
||||||
|
{"name": CharField(read_only=True), "pk": CharField(read_only=True)},
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
def get_groups(self, user: User):
|
||||||
|
"""Return only the group names a user is member of"""
|
||||||
|
for group in user.ak_groups.all():
|
||||||
|
yield {
|
||||||
|
"name": group.name,
|
||||||
|
"pk": group.pk,
|
||||||
|
}
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
||||||
model = User
|
model = User
|
||||||
@ -117,6 +136,7 @@ class UserSelfSerializer(ModelSerializer):
|
|||||||
]
|
]
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
"is_active": {"read_only": True},
|
"is_active": {"read_only": True},
|
||||||
|
"name": {"allow_blank": True},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -208,6 +228,7 @@ class UserViewSet(UsedByMixin, ModelViewSet):
|
|||||||
"""User Viewset"""
|
"""User Viewset"""
|
||||||
|
|
||||||
queryset = User.objects.none()
|
queryset = User.objects.none()
|
||||||
|
ordering = ["username"]
|
||||||
serializer_class = UserSerializer
|
serializer_class = UserSerializer
|
||||||
search_fields = ["username", "name", "is_active", "email"]
|
search_fields = ["username", "name", "is_active", "email"]
|
||||||
filterset_class = UsersFilter
|
filterset_class = UsersFilter
|
||||||
|
|||||||
@ -108,6 +108,7 @@ class FlowViewSet(UsedByMixin, ModelViewSet):
|
|||||||
queryset = Flow.objects.all()
|
queryset = Flow.objects.all()
|
||||||
serializer_class = FlowSerializer
|
serializer_class = FlowSerializer
|
||||||
lookup_field = "slug"
|
lookup_field = "slug"
|
||||||
|
ordering = ["slug", "name"]
|
||||||
search_fields = ["name", "slug", "designation", "title"]
|
search_fields = ["name", "slug", "designation", "title"]
|
||||||
filterset_fields = ["flow_uuid", "name", "slug", "designation"]
|
filterset_fields = ["flow_uuid", "name", "slug", "designation"]
|
||||||
|
|
||||||
|
|||||||
@ -76,6 +76,9 @@ class DockerController(BaseController):
|
|||||||
# {'HostIp': '0.0.0.0', 'HostPort': '389'},
|
# {'HostIp': '0.0.0.0', 'HostPort': '389'},
|
||||||
# {'HostIp': '::', 'HostPort': '389'}
|
# {'HostIp': '::', 'HostPort': '389'}
|
||||||
# ]}
|
# ]}
|
||||||
|
# If no ports are mapped (either mapping disabled, or host network)
|
||||||
|
if not container.ports:
|
||||||
|
return False
|
||||||
for port in self.deployment_ports:
|
for port in self.deployment_ports:
|
||||||
key = f"{port.inner_port or port.port}/{port.protocol.lower()}"
|
key = f"{port.inner_port or port.port}/{port.protocol.lower()}"
|
||||||
if key not in container.ports:
|
if key not in container.ports:
|
||||||
|
|||||||
@ -87,6 +87,7 @@ class PolicyViewSet(
|
|||||||
"promptstage": ["isnull"],
|
"promptstage": ["isnull"],
|
||||||
}
|
}
|
||||||
search_fields = ["name"]
|
search_fields = ["name"]
|
||||||
|
ordering = ["name"]
|
||||||
|
|
||||||
def get_queryset(self): # pragma: no cover
|
def get_queryset(self): # pragma: no cover
|
||||||
return Policy.objects.select_subclasses().prefetch_related("bindings", "promptstage_set")
|
return Policy.objects.select_subclasses().prefetch_related("bindings", "promptstage_set")
|
||||||
|
|||||||
@ -59,14 +59,14 @@ class MetricsView(View):
|
|||||||
|
|
||||||
|
|
||||||
class LiveView(View):
|
class LiveView(View):
|
||||||
"""View for liveness probe, always returns Http 201"""
|
"""View for liveness probe, always returns Http 204"""
|
||||||
|
|
||||||
def dispatch(self, request: HttpRequest) -> HttpResponse:
|
def dispatch(self, request: HttpRequest) -> HttpResponse:
|
||||||
return HttpResponse(status=201)
|
return HttpResponse(status=204)
|
||||||
|
|
||||||
|
|
||||||
class ReadyView(View):
|
class ReadyView(View):
|
||||||
"""View for readiness probe, always returns Http 201, unless sql or redis is down"""
|
"""View for readiness probe, always returns Http 204, unless sql or redis is down"""
|
||||||
|
|
||||||
def dispatch(self, request: HttpRequest) -> HttpResponse:
|
def dispatch(self, request: HttpRequest) -> HttpResponse:
|
||||||
try:
|
try:
|
||||||
@ -79,4 +79,4 @@ class ReadyView(View):
|
|||||||
redis_conn.ping()
|
redis_conn.ping()
|
||||||
except RedisError:
|
except RedisError:
|
||||||
return HttpResponse(status=503)
|
return HttpResponse(status=503)
|
||||||
return HttpResponse(status=201)
|
return HttpResponse(status=204)
|
||||||
|
|||||||
@ -45,6 +45,9 @@ func main() {
|
|||||||
defer common.Defer()
|
defer common.Defer()
|
||||||
|
|
||||||
ac := ak.NewAPIController(*akURLActual, akToken)
|
ac := ak.NewAPIController(*akURLActual, akToken)
|
||||||
|
if ac == nil {
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
ac.Server = ldap.NewServer(ac)
|
ac.Server = ldap.NewServer(ac)
|
||||||
|
|
||||||
|
|||||||
@ -59,6 +59,9 @@ func main() {
|
|||||||
defer common.Defer()
|
defer common.Defer()
|
||||||
|
|
||||||
ac := ak.NewAPIController(*akURLActual, akToken)
|
ac := ak.NewAPIController(*akURLActual, akToken)
|
||||||
|
if ac == nil {
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
ac.Server = proxyv2.NewProxyServer(ac, portOffset)
|
ac.Server = proxyv2.NewProxyServer(ac, portOffset)
|
||||||
|
|
||||||
|
|||||||
@ -54,7 +54,7 @@ func main() {
|
|||||||
u, _ := url.Parse("http://localhost:8000")
|
u, _ := url.Parse("http://localhost:8000")
|
||||||
|
|
||||||
g := gounicorn.NewGoUnicorn()
|
g := gounicorn.NewGoUnicorn()
|
||||||
ws := web.NewWebServer()
|
ws := web.NewWebServer(g)
|
||||||
defer g.Kill()
|
defer g.Kill()
|
||||||
defer ws.Shutdown()
|
defer ws.Shutdown()
|
||||||
go web.RunMetricsServer()
|
go web.RunMetricsServer()
|
||||||
|
|||||||
@ -7,8 +7,6 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- database:/var/lib/postgresql/data
|
- database:/var/lib/postgresql/data
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_PASSWORD=${PG_PASS:?database password required}
|
- POSTGRES_PASSWORD=${PG_PASS:?database password required}
|
||||||
- POSTGRES_USER=${PG_USER:-authentik}
|
- POSTGRES_USER=${PG_USER:-authentik}
|
||||||
@ -18,10 +16,8 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
server:
|
server:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2021.9.5}
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2021.9.8}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: server
|
command: server
|
||||||
environment:
|
environment:
|
||||||
@ -36,19 +32,15 @@ services:
|
|||||||
- ./media:/media
|
- ./media:/media
|
||||||
- ./custom-templates:/templates
|
- ./custom-templates:/templates
|
||||||
- geoip:/geoip
|
- geoip:/geoip
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
ports:
|
ports:
|
||||||
- "0.0.0.0:9000:9000"
|
- "0.0.0.0:9000:9000"
|
||||||
- "0.0.0.0:9443:9443"
|
- "0.0.0.0:9443:9443"
|
||||||
worker:
|
worker:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2021.9.5}
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2021.9.8}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: worker
|
command: worker
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
environment:
|
environment:
|
||||||
AUTHENTIK_REDIS__HOST: redis
|
AUTHENTIK_REDIS__HOST: redis
|
||||||
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||||
@ -83,6 +75,3 @@ volumes:
|
|||||||
driver: local
|
driver: local
|
||||||
geoip:
|
geoip:
|
||||||
driver: local
|
driver: local
|
||||||
|
|
||||||
networks:
|
|
||||||
internal: {}
|
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -34,7 +34,7 @@ require (
|
|||||||
github.com/recws-org/recws v1.3.1
|
github.com/recws-org/recws v1.3.1
|
||||||
github.com/sirupsen/logrus v1.8.1
|
github.com/sirupsen/logrus v1.8.1
|
||||||
go.mongodb.org/mongo-driver v1.5.2 // indirect
|
go.mongodb.org/mongo-driver v1.5.2 // indirect
|
||||||
goauthentik.io/api v0.202192.5
|
goauthentik.io/api v0.202195.4
|
||||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
|
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
|
||||||
golang.org/x/net v0.0.0-20210510120150-4163338589ed // indirect
|
golang.org/x/net v0.0.0-20210510120150-4163338589ed // indirect
|
||||||
golang.org/x/oauth2 v0.0.0-20210323180902-22b0adad7558
|
golang.org/x/oauth2 v0.0.0-20210323180902-22b0adad7558
|
||||||
|
|||||||
4
go.sum
4
go.sum
@ -554,8 +554,8 @@ 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=
|
||||||
goauthentik.io/api v0.202192.5 h1:BS4E71K2uZXy1vAdGVFLJJU0KwvAkkqKg42cYv46ud0=
|
goauthentik.io/api v0.202195.4 h1:UQMeaNW/MZsMUrmaJ3p19gve26RIn+y08m9M2QQBWek=
|
||||||
goauthentik.io/api v0.202192.5/go.mod h1:02nnD4FRd8lu8A1+ZuzqownBgvAhdCKzqkKX8v7JMTE=
|
goauthentik.io/api v0.202195.4/go.mod h1:02nnD4FRd8lu8A1+ZuzqownBgvAhdCKzqkKX8v7JMTE=
|
||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/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=
|
||||||
|
|||||||
@ -17,4 +17,4 @@ func OutpostUserAgent() string {
|
|||||||
return fmt.Sprintf("authentik-outpost@%s (build=%s)", VERSION, BUILD())
|
return fmt.Sprintf("authentik-outpost@%s (build=%s)", VERSION, BUILD())
|
||||||
}
|
}
|
||||||
|
|
||||||
const VERSION = "2021.9.5"
|
const VERSION = "2021.9.8"
|
||||||
|
|||||||
@ -1,10 +1,13 @@
|
|||||||
package gounicorn
|
package gounicorn
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"time"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
"goauthentik.io/internal/outpost/ak"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GoUnicorn struct {
|
type GoUnicorn struct {
|
||||||
@ -12,6 +15,7 @@ type GoUnicorn struct {
|
|||||||
p *exec.Cmd
|
p *exec.Cmd
|
||||||
started bool
|
started bool
|
||||||
killed bool
|
killed bool
|
||||||
|
alive bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewGoUnicorn() *GoUnicorn {
|
func NewGoUnicorn() *GoUnicorn {
|
||||||
@ -20,6 +24,7 @@ func NewGoUnicorn() *GoUnicorn {
|
|||||||
log: logger,
|
log: logger,
|
||||||
started: false,
|
started: false,
|
||||||
killed: false,
|
killed: false,
|
||||||
|
alive: false,
|
||||||
}
|
}
|
||||||
g.initCmd()
|
g.initCmd()
|
||||||
return g
|
return g
|
||||||
@ -35,6 +40,10 @@ func (g *GoUnicorn) initCmd() {
|
|||||||
g.p.Stderr = os.Stderr
|
g.p.Stderr = os.Stderr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *GoUnicorn) IsRunning() bool {
|
||||||
|
return g.alive
|
||||||
|
}
|
||||||
|
|
||||||
func (g *GoUnicorn) Start() error {
|
func (g *GoUnicorn) Start() error {
|
||||||
if g.killed {
|
if g.killed {
|
||||||
g.log.Debug("Not restarting gunicorn since we're killed")
|
g.log.Debug("Not restarting gunicorn since we're killed")
|
||||||
@ -44,9 +53,38 @@ func (g *GoUnicorn) Start() error {
|
|||||||
g.initCmd()
|
g.initCmd()
|
||||||
}
|
}
|
||||||
g.started = true
|
g.started = true
|
||||||
|
go g.healthcheck()
|
||||||
return g.p.Run()
|
return g.p.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *GoUnicorn) healthcheck() {
|
||||||
|
g.log.Debug("starting healthcheck")
|
||||||
|
h := &http.Client{
|
||||||
|
Transport: ak.NewUserAgentTransport("goauthentik.io go proxy healthcheck", http.DefaultTransport),
|
||||||
|
}
|
||||||
|
check := func() bool {
|
||||||
|
res, err := h.Get("http://localhost:8000/-/health/live/")
|
||||||
|
if err == nil && res.StatusCode == 204 {
|
||||||
|
g.alive = true
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default healthcheck is every 1 second on startup
|
||||||
|
// once we've been healthy once, increase to 30 seconds
|
||||||
|
for range time.Tick(time.Second) {
|
||||||
|
if check() {
|
||||||
|
g.log.Info("backend is alive, backing off with healthchecks")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
g.log.Debug("backend not alive yet")
|
||||||
|
}
|
||||||
|
for range time.Tick(30 * time.Second) {
|
||||||
|
check()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (g *GoUnicorn) Kill() {
|
func (g *GoUnicorn) Kill() {
|
||||||
g.killed = true
|
g.killed = true
|
||||||
err := g.p.Process.Kill()
|
err := g.p.Process.Kill()
|
||||||
|
|||||||
@ -40,6 +40,10 @@ func (ws *WebServer) configureProxy() {
|
|||||||
ws.proxyErrorHandler(rw, r, fmt.Errorf("proxy not running"))
|
ws.proxyErrorHandler(rw, r, fmt.Errorf("proxy not running"))
|
||||||
})
|
})
|
||||||
ws.m.PathPrefix("/").HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
|
ws.m.PathPrefix("/").HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
|
||||||
|
if !ws.p.IsRunning() {
|
||||||
|
ws.proxyErrorHandler(rw, r, fmt.Errorf("authentik core not running yet"))
|
||||||
|
return
|
||||||
|
}
|
||||||
host := web.GetHost(r)
|
host := web.GetHost(r)
|
||||||
before := time.Now()
|
before := time.Now()
|
||||||
if ws.ProxyServer != nil {
|
if ws.ProxyServer != nil {
|
||||||
@ -59,8 +63,12 @@ func (ws *WebServer) configureProxy() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ws *WebServer) proxyErrorHandler(rw http.ResponseWriter, req *http.Request, err error) {
|
func (ws *WebServer) proxyErrorHandler(rw http.ResponseWriter, req *http.Request, err error) {
|
||||||
ws.log.WithError(err).Warning("proxy error")
|
ws.log.Warning(err.Error())
|
||||||
rw.WriteHeader(http.StatusBadGateway)
|
rw.WriteHeader(http.StatusBadGateway)
|
||||||
|
_, err = rw.Write([]byte("authentik starting..."))
|
||||||
|
if err != nil {
|
||||||
|
ws.log.WithError(err).Warning("failed to write error message")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ws *WebServer) proxyModifyResponse(r *http.Response) error {
|
func (ws *WebServer) proxyModifyResponse(r *http.Response) error {
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import (
|
|||||||
"github.com/pires/go-proxyproto"
|
"github.com/pires/go-proxyproto"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"goauthentik.io/internal/config"
|
"goauthentik.io/internal/config"
|
||||||
|
"goauthentik.io/internal/gounicorn"
|
||||||
"goauthentik.io/internal/outpost/proxyv2"
|
"goauthentik.io/internal/outpost/proxyv2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -27,9 +28,10 @@ type WebServer struct {
|
|||||||
m *mux.Router
|
m *mux.Router
|
||||||
lh *mux.Router
|
lh *mux.Router
|
||||||
log *log.Entry
|
log *log.Entry
|
||||||
|
p *gounicorn.GoUnicorn
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewWebServer() *WebServer {
|
func NewWebServer(g *gounicorn.GoUnicorn) *WebServer {
|
||||||
l := log.WithField("logger", "authentik.g.web")
|
l := log.WithField("logger", "authentik.g.web")
|
||||||
mainHandler := mux.NewRouter()
|
mainHandler := mux.NewRouter()
|
||||||
if config.G.ErrorReporting.Enabled {
|
if config.G.ErrorReporting.Enabled {
|
||||||
@ -46,6 +48,7 @@ func NewWebServer() *WebServer {
|
|||||||
m: mainHandler,
|
m: mainHandler,
|
||||||
lh: logginRouter,
|
lh: logginRouter,
|
||||||
log: l,
|
log: l,
|
||||||
|
p: g,
|
||||||
}
|
}
|
||||||
ws.configureStatic()
|
ws.configureStatic()
|
||||||
ws.configureProxy()
|
ws.configureProxy()
|
||||||
|
|||||||
11
lifecycle/ak
11
lifecycle/ak
@ -26,10 +26,14 @@ function check_if_root {
|
|||||||
chpst -u authentik:$GROUP env HOME=/authentik $1
|
chpst -u authentik:$GROUP env HOME=/authentik $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MODE_FILE="/tmp/authentik-mode"
|
||||||
|
|
||||||
if [[ "$1" == "server" ]]; then
|
if [[ "$1" == "server" ]]; then
|
||||||
|
echo "server" > $MODE_FILE
|
||||||
python -m lifecycle.migrate
|
python -m lifecycle.migrate
|
||||||
/authentik-proxy
|
/authentik-proxy
|
||||||
elif [[ "$1" == "worker" ]]; then
|
elif [[ "$1" == "worker" ]]; then
|
||||||
|
echo "worker" > $MODE_FILE
|
||||||
check_if_root "celery -A authentik.root.celery worker --autoscale 3,1 -E -B -s /tmp/celerybeat-schedule -Q authentik,authentik_scheduled,authentik_events"
|
check_if_root "celery -A authentik.root.celery worker --autoscale 3,1 -E -B -s /tmp/celerybeat-schedule -Q authentik,authentik_scheduled,authentik_events"
|
||||||
elif [[ "$1" == "backup" ]]; then
|
elif [[ "$1" == "backup" ]]; then
|
||||||
python -m manage dbbackup --clean
|
python -m manage dbbackup --clean
|
||||||
@ -42,6 +46,13 @@ elif [[ "$1" == "test" ]]; then
|
|||||||
touch /unittest.xml
|
touch /unittest.xml
|
||||||
chown authentik:authentik /unittest.xml
|
chown authentik:authentik /unittest.xml
|
||||||
check_if_root "python -m manage test authentik"
|
check_if_root "python -m manage test authentik"
|
||||||
|
elif [[ "$1" == "healthcheck" ]]; then
|
||||||
|
mode=$(cat $MODE_FILE)
|
||||||
|
if [[ $mode == "server" ]]; then
|
||||||
|
curl --user-agent "goauthentik.io lifecycle Healthcheck" -I http://localhost:9000/-/health/ready/
|
||||||
|
elif [[ $mode == "worker" ]]; then
|
||||||
|
celery -A authentik.root.celery inspect ping -d celery@$HOSTNAME
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
python -m manage "$@"
|
python -m manage "$@"
|
||||||
fi
|
fi
|
||||||
|
|||||||
20
schema.yml
20
schema.yml
@ -1,7 +1,7 @@
|
|||||||
openapi: 3.0.3
|
openapi: 3.0.3
|
||||||
info:
|
info:
|
||||||
title: authentik
|
title: authentik
|
||||||
version: 2021.9.5
|
version: 2021.9.8
|
||||||
description: Making authentication simple.
|
description: Making authentication simple.
|
||||||
contact:
|
contact:
|
||||||
email: hello@beryju.org
|
email: hello@beryju.org
|
||||||
@ -2318,6 +2318,10 @@ paths:
|
|||||||
- app_password
|
- app_password
|
||||||
- recovery
|
- recovery
|
||||||
- verification
|
- verification
|
||||||
|
- in: query
|
||||||
|
name: managed
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
- name: ordering
|
- name: ordering
|
||||||
required: false
|
required: false
|
||||||
in: query
|
in: query
|
||||||
@ -29205,7 +29209,7 @@ components:
|
|||||||
groups:
|
groups:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Group'
|
$ref: '#/components/schemas/UserSelfGroups'
|
||||||
readOnly: true
|
readOnly: true
|
||||||
email:
|
email:
|
||||||
type: string
|
type: string
|
||||||
@ -29227,6 +29231,18 @@ components:
|
|||||||
- pk
|
- pk
|
||||||
- uid
|
- uid
|
||||||
- username
|
- username
|
||||||
|
UserSelfGroups:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
readOnly: true
|
||||||
|
pk:
|
||||||
|
type: string
|
||||||
|
readOnly: true
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- pk
|
||||||
UserSelfRequest:
|
UserSelfRequest:
|
||||||
type: object
|
type: object
|
||||||
description: |-
|
description: |-
|
||||||
|
|||||||
307
web/package-lock.json
generated
307
web/package-lock.json
generated
@ -15,10 +15,11 @@
|
|||||||
"@babel/preset-env": "^7.15.6",
|
"@babel/preset-env": "^7.15.6",
|
||||||
"@babel/preset-typescript": "^7.15.0",
|
"@babel/preset-typescript": "^7.15.0",
|
||||||
"@fortawesome/fontawesome-free": "^5.15.4",
|
"@fortawesome/fontawesome-free": "^5.15.4",
|
||||||
"@goauthentik/api": "^2021.9.4-1633366097",
|
"@goauthentik/api": "^2021.9.5-1633432270",
|
||||||
"@lingui/cli": "^3.11.1",
|
"@lingui/cli": "^3.12.1",
|
||||||
"@lingui/core": "^3.11.1",
|
"@lingui/core": "^3.12.1",
|
||||||
"@lingui/macro": "^3.11.1",
|
"@lingui/detect-locale": "^3.12.1",
|
||||||
|
"@lingui/macro": "^3.12.1",
|
||||||
"@patternfly/patternfly": "^4.135.2",
|
"@patternfly/patternfly": "^4.135.2",
|
||||||
"@polymer/iron-form": "^3.0.1",
|
"@polymer/iron-form": "^3.0.1",
|
||||||
"@polymer/paper-input": "^3.2.1",
|
"@polymer/paper-input": "^3.2.1",
|
||||||
@ -30,16 +31,16 @@
|
|||||||
"@squoosh/cli": "^0.7.2",
|
"@squoosh/cli": "^0.7.2",
|
||||||
"@trivago/prettier-plugin-sort-imports": "^2.0.4",
|
"@trivago/prettier-plugin-sort-imports": "^2.0.4",
|
||||||
"@types/chart.js": "^2.9.34",
|
"@types/chart.js": "^2.9.34",
|
||||||
"@types/codemirror": "5.60.3",
|
"@types/codemirror": "5.60.4",
|
||||||
"@types/grecaptcha": "^3.0.3",
|
"@types/grecaptcha": "^3.0.3",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.31.2",
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
||||||
"@typescript-eslint/parser": "^4.31.2",
|
"@typescript-eslint/parser": "^4.33.0",
|
||||||
"@webcomponents/webcomponentsjs": "^2.6.0",
|
"@webcomponents/webcomponentsjs": "^2.6.0",
|
||||||
"babel-plugin-macros": "^3.1.0",
|
"babel-plugin-macros": "^3.1.0",
|
||||||
"base64-js": "^1.5.1",
|
"base64-js": "^1.5.1",
|
||||||
"chart.js": "^3.5.1",
|
"chart.js": "^3.5.1",
|
||||||
"chartjs-adapter-moment": "^1.0.0",
|
"chartjs-adapter-moment": "^1.0.0",
|
||||||
"codemirror": "^5.63.0",
|
"codemirror": "^5.63.1",
|
||||||
"construct-style-sheets-polyfill": "^2.4.16",
|
"construct-style-sheets-polyfill": "^2.4.16",
|
||||||
"eslint": "^7.32.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-config-google": "^0.14.0",
|
"eslint-config-google": "^0.14.0",
|
||||||
@ -51,7 +52,7 @@
|
|||||||
"moment": "^2.29.1",
|
"moment": "^2.29.1",
|
||||||
"prettier": "^2.4.1",
|
"prettier": "^2.4.1",
|
||||||
"rapidoc": "^9.1.3",
|
"rapidoc": "^9.1.3",
|
||||||
"rollup": "^2.57.0",
|
"rollup": "^2.58.0",
|
||||||
"rollup-plugin-commonjs": "^10.1.0",
|
"rollup-plugin-commonjs": "^10.1.0",
|
||||||
"rollup-plugin-copy": "^3.4.0",
|
"rollup-plugin-copy": "^3.4.0",
|
||||||
"rollup-plugin-cssimport": "^1.0.2",
|
"rollup-plugin-cssimport": "^1.0.2",
|
||||||
@ -1691,9 +1692,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@goauthentik/api": {
|
"node_modules/@goauthentik/api": {
|
||||||
"version": "2021.9.4-1633366097",
|
"version": "2021.9.5-1633432270",
|
||||||
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.9.4-1633366097.tgz",
|
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.9.5-1633432270.tgz",
|
||||||
"integrity": "sha512-k0RX5kHNfkgmciwPD6a7o8Movj9nfYt/uqvuJ0+5ptttJTDkB177c+okS0hqBtZF8n1u662w85gMvffAYrvU/Q=="
|
"integrity": "sha512-uKhaYImCzX8BLWQZD5vY5mClfUtZeGEn7/o+dNztOs6viOCbWSRuYvE1tnTqxKjKw2Yoe2YaWURfA7zweSxUng=="
|
||||||
},
|
},
|
||||||
"node_modules/@humanwhocodes/config-array": {
|
"node_modules/@humanwhocodes/config-array": {
|
||||||
"version": "0.5.0",
|
"version": "0.5.0",
|
||||||
@ -1793,13 +1794,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@lingui/babel-plugin-extract-messages": {
|
"node_modules/@lingui/babel-plugin-extract-messages": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.12.1.tgz",
|
||||||
"integrity": "sha512-MAsZ0BYIsHh08dptT7bA6Jsh1ixO1sBU8eNDtobkZaZ78SXIUMUYCy9e3T9D/RYpecgDGaFUf2djctTqguMgmQ==",
|
"integrity": "sha512-5x119XBpWe3gYUDTgwkoTFqeI60beFRdEL1HnArFkrWfhaGqUK8SjzpqO7NtN335IIBU3SPtGXKsI4NPkJQ8TA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/generator": "^7.11.6",
|
"@babel/generator": "^7.11.6",
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"@lingui/conf": "^3.11.1",
|
"@lingui/conf": "^3.12.1",
|
||||||
"mkdirp": "^1.0.4"
|
"mkdirp": "^1.0.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1807,17 +1808,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@lingui/cli": {
|
"node_modules/@lingui/cli": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.12.1.tgz",
|
||||||
"integrity": "sha512-piKjrGjiornzX18Lt6EhyICAHEGH9wio0KaOXKyCjHqPw8sQnC4AZv0iyZqTACVYL+0ROsrtNd/xgDMYNSQgeA==",
|
"integrity": "sha512-Z3klth+zD3+oqkDEhm1cTuI1Z9K/lyZD615cUQXPxLZRn9dokZ+9enoJNiese412VMNvcp/dtYC+wfyMpYX2PQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/generator": "^7.11.6",
|
"@babel/generator": "^7.11.6",
|
||||||
"@babel/parser": "^7.11.5",
|
"@babel/parser": "^7.11.5",
|
||||||
"@babel/plugin-syntax-jsx": "^7.10.4",
|
"@babel/plugin-syntax-jsx": "^7.10.4",
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"@babel/types": "^7.11.5",
|
"@babel/types": "^7.11.5",
|
||||||
"@lingui/babel-plugin-extract-messages": "^3.11.1",
|
"@lingui/babel-plugin-extract-messages": "^3.12.1",
|
||||||
"@lingui/conf": "^3.11.1",
|
"@lingui/conf": "^3.12.1",
|
||||||
"babel-plugin-macros": "^3.0.1",
|
"babel-plugin-macros": "^3.0.1",
|
||||||
"bcp-47": "^1.0.7",
|
"bcp-47": "^1.0.7",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
@ -1920,9 +1921,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@lingui/conf": {
|
"node_modules/@lingui/conf": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.12.1.tgz",
|
||||||
"integrity": "sha512-WoEdtDAiI+TR7Gz2F7VMZQyIGZFP2b4qT3JO3gLuGzHY6a6DCqOMojqUuo6KHFQrUoUtebI/1Yn7gAxVH1xcWQ==",
|
"integrity": "sha512-asTFAUTf8zxYU+fI1MxggJD/o4BenT/rE4IJ/+ngaf1cbzBo71lXmhSYkIa8/vTZrdHDSuXGzIL43f1D9BF6YA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
|
"@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
|
||||||
@ -2000,9 +2001,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@lingui/core": {
|
"node_modules/@lingui/core": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.12.1.tgz",
|
||||||
"integrity": "sha512-qHMo47SbwFFx3IwXbMRafIMZH2tTYebrQhvAu5wH9OabI+bqbVWbTOLSAXzX/gDZqxMQWIrr2ndrah0aPZk6EQ==",
|
"integrity": "sha512-MkZgkaaBcFtmUXdck9YNMTMTwCRogUif8Ll4Wyqz0re2Ydo7fdwGFBkacYjOc787R5/UmZr2F21OtPqSbaoaJg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"make-plural": "^6.2.2",
|
"make-plural": "^6.2.2",
|
||||||
@ -2012,13 +2013,21 @@
|
|||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@lingui/detect-locale": {
|
||||||
|
"version": "3.12.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@lingui/detect-locale/-/detect-locale-3.12.1.tgz",
|
||||||
|
"integrity": "sha512-/apP+LscyRuh+CIf42+LNuYmEsceNA/rh6N3iqebNcEsOcIzLA8v6dq1llzDOlfd3SxEj7xP9Kfhn6Vnp+78+Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@lingui/macro": {
|
"node_modules/@lingui/macro": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-3.12.1.tgz",
|
||||||
"integrity": "sha512-rSzvBs4Gasn6VO8msYA0/Bw285jUOBoLAVxURt6XaH45NXnJiWnDtEOD/DhQcuggDKbaWwz13lXOiRfUP0zG6g==",
|
"integrity": "sha512-CszdqDnaCo5cnbg6RROYnYtYGOADPhJuRf9U9t2aL9IsN+N7pSQAMdMLbjYkEMT/V8Cjon33ZjLgeGihe0FhSA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"@lingui/conf": "^3.11.1",
|
"@lingui/conf": "^3.12.1",
|
||||||
"ramda": "^0.27.1"
|
"ramda": "^0.27.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2562,9 +2571,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/codemirror": {
|
"node_modules/@types/codemirror": {
|
||||||
"version": "5.60.3",
|
"version": "5.60.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.4.tgz",
|
||||||
"integrity": "sha512-dVX8Vsio70u4la9LGi1jjmaqtcdMMZUYalO5QY5EWy4XKrNjewNm9cy2K5XvP+puzLzum417gmJ9w7F6bVR1XA==",
|
"integrity": "sha512-SUQgBj9jZ+xj75zgwfgQZt0CManWBISN/YsE0xRmPwO6uDyLNpXO8bn2m59tpevsFw+eQdmx+qY1WjOrUgMDgw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/tern": "*"
|
"@types/tern": "*"
|
||||||
}
|
}
|
||||||
@ -2708,14 +2717,15 @@
|
|||||||
"integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw=="
|
"integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw=="
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
|
||||||
"integrity": "sha512-w63SCQ4bIwWN/+3FxzpnWrDjQRXVEGiTt9tJTRptRXeFvdZc/wLiz3FQUwNQ2CVoRGI6KUWMNUj/pk63noUfcA==",
|
"integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/experimental-utils": "4.31.2",
|
"@typescript-eslint/experimental-utils": "4.33.0",
|
||||||
"@typescript-eslint/scope-manager": "4.31.2",
|
"@typescript-eslint/scope-manager": "4.33.0",
|
||||||
"debug": "^4.3.1",
|
"debug": "^4.3.1",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
|
"ignore": "^5.1.8",
|
||||||
"regexpp": "^3.1.0",
|
"regexpp": "^3.1.0",
|
||||||
"semver": "^7.3.5",
|
"semver": "^7.3.5",
|
||||||
"tsutils": "^3.21.0"
|
"tsutils": "^3.21.0"
|
||||||
@ -2737,6 +2747,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
|
||||||
|
"version": "5.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
|
||||||
|
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
|
"node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
|
||||||
"version": "7.3.5",
|
"version": "7.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
||||||
@ -2752,14 +2770,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/experimental-utils": {
|
"node_modules/@typescript-eslint/experimental-utils": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
|
||||||
"integrity": "sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q==",
|
"integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/json-schema": "^7.0.7",
|
"@types/json-schema": "^7.0.7",
|
||||||
"@typescript-eslint/scope-manager": "4.31.2",
|
"@typescript-eslint/scope-manager": "4.33.0",
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"@typescript-eslint/typescript-estree": "4.31.2",
|
"@typescript-eslint/typescript-estree": "4.33.0",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0"
|
"eslint-utils": "^3.0.0"
|
||||||
},
|
},
|
||||||
@ -2775,13 +2793,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
|
||||||
"integrity": "sha512-EcdO0E7M/sv23S/rLvenHkb58l3XhuSZzKf6DBvLgHqOYdL6YFMYVtreGFWirxaU2mS1GYDby3Lyxco7X5+Vjw==",
|
"integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "4.31.2",
|
"@typescript-eslint/scope-manager": "4.33.0",
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"@typescript-eslint/typescript-estree": "4.31.2",
|
"@typescript-eslint/typescript-estree": "4.33.0",
|
||||||
"debug": "^4.3.1"
|
"debug": "^4.3.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2801,12 +2819,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
|
||||||
"integrity": "sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w==",
|
"integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"@typescript-eslint/visitor-keys": "4.31.2"
|
"@typescript-eslint/visitor-keys": "4.33.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^8.10.0 || ^10.13.0 || >=11.10.1"
|
"node": "^8.10.0 || ^10.13.0 || >=11.10.1"
|
||||||
@ -2817,9 +2835,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz",
|
||||||
"integrity": "sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w==",
|
"integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^8.10.0 || ^10.13.0 || >=11.10.1"
|
"node": "^8.10.0 || ^10.13.0 || >=11.10.1"
|
||||||
},
|
},
|
||||||
@ -2829,12 +2847,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
|
||||||
"integrity": "sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA==",
|
"integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"@typescript-eslint/visitor-keys": "4.31.2",
|
"@typescript-eslint/visitor-keys": "4.33.0",
|
||||||
"debug": "^4.3.1",
|
"debug": "^4.3.1",
|
||||||
"globby": "^11.0.3",
|
"globby": "^11.0.3",
|
||||||
"is-glob": "^4.0.1",
|
"is-glob": "^4.0.1",
|
||||||
@ -2869,11 +2887,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
|
||||||
"integrity": "sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug==",
|
"integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"eslint-visitor-keys": "^2.0.0"
|
"eslint-visitor-keys": "^2.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -3605,9 +3623,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/codemirror": {
|
"node_modules/codemirror": {
|
||||||
"version": "5.63.0",
|
"version": "5.63.1",
|
||||||
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.0.tgz",
|
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.1.tgz",
|
||||||
"integrity": "sha512-KlLWRPggDg2rBD1Mx7/EqEhaBdy+ybBCVh/efgjBDsPpMeEu6MbTAJzIT4TuCzvmbTEgvKOGzVT6wdBTNusqrg=="
|
"integrity": "sha512-baivaNZreZOGh1/tYyTvCupC9NeWk7qlZeGUDi4nFKj/J0JU8FYKZND4QqLw70P7HOttlCt4JJAOj9GoIhHEkA=="
|
||||||
},
|
},
|
||||||
"node_modules/collection-visit": {
|
"node_modules/collection-visit": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@ -7080,9 +7098,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rollup": {
|
"node_modules/rollup": {
|
||||||
"version": "2.57.0",
|
"version": "2.58.0",
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.57.0.tgz",
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz",
|
||||||
"integrity": "sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg==",
|
"integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==",
|
||||||
"bin": {
|
"bin": {
|
||||||
"rollup": "dist/bin/rollup"
|
"rollup": "dist/bin/rollup"
|
||||||
},
|
},
|
||||||
@ -9760,9 +9778,9 @@
|
|||||||
"integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg=="
|
"integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg=="
|
||||||
},
|
},
|
||||||
"@goauthentik/api": {
|
"@goauthentik/api": {
|
||||||
"version": "2021.9.4-1633366097",
|
"version": "2021.9.5-1633432270",
|
||||||
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.9.4-1633366097.tgz",
|
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.9.5-1633432270.tgz",
|
||||||
"integrity": "sha512-k0RX5kHNfkgmciwPD6a7o8Movj9nfYt/uqvuJ0+5ptttJTDkB177c+okS0hqBtZF8n1u662w85gMvffAYrvU/Q=="
|
"integrity": "sha512-uKhaYImCzX8BLWQZD5vY5mClfUtZeGEn7/o+dNztOs6viOCbWSRuYvE1tnTqxKjKw2Yoe2YaWURfA7zweSxUng=="
|
||||||
},
|
},
|
||||||
"@humanwhocodes/config-array": {
|
"@humanwhocodes/config-array": {
|
||||||
"version": "0.5.0",
|
"version": "0.5.0",
|
||||||
@ -9837,28 +9855,28 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@lingui/babel-plugin-extract-messages": {
|
"@lingui/babel-plugin-extract-messages": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.12.1.tgz",
|
||||||
"integrity": "sha512-MAsZ0BYIsHh08dptT7bA6Jsh1ixO1sBU8eNDtobkZaZ78SXIUMUYCy9e3T9D/RYpecgDGaFUf2djctTqguMgmQ==",
|
"integrity": "sha512-5x119XBpWe3gYUDTgwkoTFqeI60beFRdEL1HnArFkrWfhaGqUK8SjzpqO7NtN335IIBU3SPtGXKsI4NPkJQ8TA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/generator": "^7.11.6",
|
"@babel/generator": "^7.11.6",
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"@lingui/conf": "^3.11.1",
|
"@lingui/conf": "^3.12.1",
|
||||||
"mkdirp": "^1.0.4"
|
"mkdirp": "^1.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@lingui/cli": {
|
"@lingui/cli": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.12.1.tgz",
|
||||||
"integrity": "sha512-piKjrGjiornzX18Lt6EhyICAHEGH9wio0KaOXKyCjHqPw8sQnC4AZv0iyZqTACVYL+0ROsrtNd/xgDMYNSQgeA==",
|
"integrity": "sha512-Z3klth+zD3+oqkDEhm1cTuI1Z9K/lyZD615cUQXPxLZRn9dokZ+9enoJNiese412VMNvcp/dtYC+wfyMpYX2PQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/generator": "^7.11.6",
|
"@babel/generator": "^7.11.6",
|
||||||
"@babel/parser": "^7.11.5",
|
"@babel/parser": "^7.11.5",
|
||||||
"@babel/plugin-syntax-jsx": "^7.10.4",
|
"@babel/plugin-syntax-jsx": "^7.10.4",
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"@babel/types": "^7.11.5",
|
"@babel/types": "^7.11.5",
|
||||||
"@lingui/babel-plugin-extract-messages": "^3.11.1",
|
"@lingui/babel-plugin-extract-messages": "^3.12.1",
|
||||||
"@lingui/conf": "^3.11.1",
|
"@lingui/conf": "^3.12.1",
|
||||||
"babel-plugin-macros": "^3.0.1",
|
"babel-plugin-macros": "^3.0.1",
|
||||||
"bcp-47": "^1.0.7",
|
"bcp-47": "^1.0.7",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
@ -9931,9 +9949,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@lingui/conf": {
|
"@lingui/conf": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.12.1.tgz",
|
||||||
"integrity": "sha512-WoEdtDAiI+TR7Gz2F7VMZQyIGZFP2b4qT3JO3gLuGzHY6a6DCqOMojqUuo6KHFQrUoUtebI/1Yn7gAxVH1xcWQ==",
|
"integrity": "sha512-asTFAUTf8zxYU+fI1MxggJD/o4BenT/rE4IJ/+ngaf1cbzBo71lXmhSYkIa8/vTZrdHDSuXGzIL43f1D9BF6YA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
|
"@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
|
||||||
@ -9989,22 +10007,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@lingui/core": {
|
"@lingui/core": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.12.1.tgz",
|
||||||
"integrity": "sha512-qHMo47SbwFFx3IwXbMRafIMZH2tTYebrQhvAu5wH9OabI+bqbVWbTOLSAXzX/gDZqxMQWIrr2ndrah0aPZk6EQ==",
|
"integrity": "sha512-MkZgkaaBcFtmUXdck9YNMTMTwCRogUif8Ll4Wyqz0re2Ydo7fdwGFBkacYjOc787R5/UmZr2F21OtPqSbaoaJg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"make-plural": "^6.2.2",
|
"make-plural": "^6.2.2",
|
||||||
"messageformat-parser": "^4.1.3"
|
"messageformat-parser": "^4.1.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@lingui/detect-locale": {
|
||||||
|
"version": "3.12.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@lingui/detect-locale/-/detect-locale-3.12.1.tgz",
|
||||||
|
"integrity": "sha512-/apP+LscyRuh+CIf42+LNuYmEsceNA/rh6N3iqebNcEsOcIzLA8v6dq1llzDOlfd3SxEj7xP9Kfhn6Vnp+78+Q=="
|
||||||
|
},
|
||||||
"@lingui/macro": {
|
"@lingui/macro": {
|
||||||
"version": "3.11.1",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-3.12.1.tgz",
|
||||||
"integrity": "sha512-rSzvBs4Gasn6VO8msYA0/Bw285jUOBoLAVxURt6XaH45NXnJiWnDtEOD/DhQcuggDKbaWwz13lXOiRfUP0zG6g==",
|
"integrity": "sha512-CszdqDnaCo5cnbg6RROYnYtYGOADPhJuRf9U9t2aL9IsN+N7pSQAMdMLbjYkEMT/V8Cjon33ZjLgeGihe0FhSA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.11.2",
|
"@babel/runtime": "^7.11.2",
|
||||||
"@lingui/conf": "^3.11.1",
|
"@lingui/conf": "^3.12.1",
|
||||||
"ramda": "^0.27.1"
|
"ramda": "^0.27.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -10465,9 +10488,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/codemirror": {
|
"@types/codemirror": {
|
||||||
"version": "5.60.3",
|
"version": "5.60.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.4.tgz",
|
||||||
"integrity": "sha512-dVX8Vsio70u4la9LGi1jjmaqtcdMMZUYalO5QY5EWy4XKrNjewNm9cy2K5XvP+puzLzum417gmJ9w7F6bVR1XA==",
|
"integrity": "sha512-SUQgBj9jZ+xj75zgwfgQZt0CManWBISN/YsE0xRmPwO6uDyLNpXO8bn2m59tpevsFw+eQdmx+qY1WjOrUgMDgw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/tern": "*"
|
"@types/tern": "*"
|
||||||
}
|
}
|
||||||
@ -10610,19 +10633,25 @@
|
|||||||
"integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw=="
|
"integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw=="
|
||||||
},
|
},
|
||||||
"@typescript-eslint/eslint-plugin": {
|
"@typescript-eslint/eslint-plugin": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
|
||||||
"integrity": "sha512-w63SCQ4bIwWN/+3FxzpnWrDjQRXVEGiTt9tJTRptRXeFvdZc/wLiz3FQUwNQ2CVoRGI6KUWMNUj/pk63noUfcA==",
|
"integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/experimental-utils": "4.31.2",
|
"@typescript-eslint/experimental-utils": "4.33.0",
|
||||||
"@typescript-eslint/scope-manager": "4.31.2",
|
"@typescript-eslint/scope-manager": "4.33.0",
|
||||||
"debug": "^4.3.1",
|
"debug": "^4.3.1",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
|
"ignore": "^5.1.8",
|
||||||
"regexpp": "^3.1.0",
|
"regexpp": "^3.1.0",
|
||||||
"semver": "^7.3.5",
|
"semver": "^7.3.5",
|
||||||
"tsutils": "^3.21.0"
|
"tsutils": "^3.21.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"ignore": {
|
||||||
|
"version": "5.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
|
||||||
|
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw=="
|
||||||
|
},
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "7.3.5",
|
"version": "7.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
||||||
@ -10634,50 +10663,50 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/experimental-utils": {
|
"@typescript-eslint/experimental-utils": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
|
||||||
"integrity": "sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q==",
|
"integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/json-schema": "^7.0.7",
|
"@types/json-schema": "^7.0.7",
|
||||||
"@typescript-eslint/scope-manager": "4.31.2",
|
"@typescript-eslint/scope-manager": "4.33.0",
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"@typescript-eslint/typescript-estree": "4.31.2",
|
"@typescript-eslint/typescript-estree": "4.33.0",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0"
|
"eslint-utils": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/parser": {
|
"@typescript-eslint/parser": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
|
||||||
"integrity": "sha512-EcdO0E7M/sv23S/rLvenHkb58l3XhuSZzKf6DBvLgHqOYdL6YFMYVtreGFWirxaU2mS1GYDby3Lyxco7X5+Vjw==",
|
"integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/scope-manager": "4.31.2",
|
"@typescript-eslint/scope-manager": "4.33.0",
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"@typescript-eslint/typescript-estree": "4.31.2",
|
"@typescript-eslint/typescript-estree": "4.33.0",
|
||||||
"debug": "^4.3.1"
|
"debug": "^4.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/scope-manager": {
|
"@typescript-eslint/scope-manager": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
|
||||||
"integrity": "sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w==",
|
"integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"@typescript-eslint/visitor-keys": "4.31.2"
|
"@typescript-eslint/visitor-keys": "4.33.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/types": {
|
"@typescript-eslint/types": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz",
|
||||||
"integrity": "sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w=="
|
"integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ=="
|
||||||
},
|
},
|
||||||
"@typescript-eslint/typescript-estree": {
|
"@typescript-eslint/typescript-estree": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
|
||||||
"integrity": "sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA==",
|
"integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"@typescript-eslint/visitor-keys": "4.31.2",
|
"@typescript-eslint/visitor-keys": "4.33.0",
|
||||||
"debug": "^4.3.1",
|
"debug": "^4.3.1",
|
||||||
"globby": "^11.0.3",
|
"globby": "^11.0.3",
|
||||||
"is-glob": "^4.0.1",
|
"is-glob": "^4.0.1",
|
||||||
@ -10696,11 +10725,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/visitor-keys": {
|
"@typescript-eslint/visitor-keys": {
|
||||||
"version": "4.31.2",
|
"version": "4.33.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.2.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
|
||||||
"integrity": "sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug==",
|
"integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "4.31.2",
|
"@typescript-eslint/types": "4.33.0",
|
||||||
"eslint-visitor-keys": "^2.0.0"
|
"eslint-visitor-keys": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -11215,9 +11244,9 @@
|
|||||||
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
|
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
|
||||||
},
|
},
|
||||||
"codemirror": {
|
"codemirror": {
|
||||||
"version": "5.63.0",
|
"version": "5.63.1",
|
||||||
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.0.tgz",
|
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.1.tgz",
|
||||||
"integrity": "sha512-KlLWRPggDg2rBD1Mx7/EqEhaBdy+ybBCVh/efgjBDsPpMeEu6MbTAJzIT4TuCzvmbTEgvKOGzVT6wdBTNusqrg=="
|
"integrity": "sha512-baivaNZreZOGh1/tYyTvCupC9NeWk7qlZeGUDi4nFKj/J0JU8FYKZND4QqLw70P7HOttlCt4JJAOj9GoIhHEkA=="
|
||||||
},
|
},
|
||||||
"collection-visit": {
|
"collection-visit": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@ -13816,9 +13845,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rollup": {
|
"rollup": {
|
||||||
"version": "2.57.0",
|
"version": "2.58.0",
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.57.0.tgz",
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz",
|
||||||
"integrity": "sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg==",
|
"integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"fsevents": "~2.3.2"
|
"fsevents": "~2.3.2"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,8 @@
|
|||||||
"sourceLocale": "en",
|
"sourceLocale": "en",
|
||||||
"locales": [
|
"locales": [
|
||||||
"en",
|
"en",
|
||||||
"pseudo-LOCALE"
|
"pseudo-LOCALE",
|
||||||
|
"fr_FR"
|
||||||
],
|
],
|
||||||
"formatOptions": {
|
"formatOptions": {
|
||||||
"lineNumbers": false
|
"lineNumbers": false
|
||||||
@ -47,10 +48,11 @@
|
|||||||
"@babel/preset-env": "^7.15.6",
|
"@babel/preset-env": "^7.15.6",
|
||||||
"@babel/preset-typescript": "^7.15.0",
|
"@babel/preset-typescript": "^7.15.0",
|
||||||
"@fortawesome/fontawesome-free": "^5.15.4",
|
"@fortawesome/fontawesome-free": "^5.15.4",
|
||||||
"@goauthentik/api": "^2021.9.4-1633366097",
|
"@goauthentik/api": "^2021.9.5-1633432270",
|
||||||
"@lingui/cli": "^3.11.1",
|
"@lingui/cli": "^3.12.1",
|
||||||
"@lingui/core": "^3.11.1",
|
"@lingui/core": "^3.12.1",
|
||||||
"@lingui/macro": "^3.11.1",
|
"@lingui/detect-locale": "^3.12.1",
|
||||||
|
"@lingui/macro": "^3.12.1",
|
||||||
"@patternfly/patternfly": "^4.135.2",
|
"@patternfly/patternfly": "^4.135.2",
|
||||||
"@polymer/iron-form": "^3.0.1",
|
"@polymer/iron-form": "^3.0.1",
|
||||||
"@polymer/paper-input": "^3.2.1",
|
"@polymer/paper-input": "^3.2.1",
|
||||||
@ -62,16 +64,16 @@
|
|||||||
"@squoosh/cli": "^0.7.2",
|
"@squoosh/cli": "^0.7.2",
|
||||||
"@trivago/prettier-plugin-sort-imports": "^2.0.4",
|
"@trivago/prettier-plugin-sort-imports": "^2.0.4",
|
||||||
"@types/chart.js": "^2.9.34",
|
"@types/chart.js": "^2.9.34",
|
||||||
"@types/codemirror": "5.60.3",
|
"@types/codemirror": "5.60.4",
|
||||||
"@types/grecaptcha": "^3.0.3",
|
"@types/grecaptcha": "^3.0.3",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.31.2",
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
||||||
"@typescript-eslint/parser": "^4.31.2",
|
"@typescript-eslint/parser": "^4.33.0",
|
||||||
"@webcomponents/webcomponentsjs": "^2.6.0",
|
"@webcomponents/webcomponentsjs": "^2.6.0",
|
||||||
"babel-plugin-macros": "^3.1.0",
|
"babel-plugin-macros": "^3.1.0",
|
||||||
"base64-js": "^1.5.1",
|
"base64-js": "^1.5.1",
|
||||||
"chart.js": "^3.5.1",
|
"chart.js": "^3.5.1",
|
||||||
"chartjs-adapter-moment": "^1.0.0",
|
"chartjs-adapter-moment": "^1.0.0",
|
||||||
"codemirror": "^5.63.0",
|
"codemirror": "^5.63.1",
|
||||||
"construct-style-sheets-polyfill": "^2.4.16",
|
"construct-style-sheets-polyfill": "^2.4.16",
|
||||||
"eslint": "^7.32.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-config-google": "^0.14.0",
|
"eslint-config-google": "^0.14.0",
|
||||||
@ -83,7 +85,7 @@
|
|||||||
"moment": "^2.29.1",
|
"moment": "^2.29.1",
|
||||||
"prettier": "^2.4.1",
|
"prettier": "^2.4.1",
|
||||||
"rapidoc": "^9.1.3",
|
"rapidoc": "^9.1.3",
|
||||||
"rollup": "^2.57.0",
|
"rollup": "^2.58.0",
|
||||||
"rollup-plugin-commonjs": "^10.1.0",
|
"rollup-plugin-commonjs": "^10.1.0",
|
||||||
"rollup-plugin-copy": "^3.4.0",
|
"rollup-plugin-copy": "^3.4.0",
|
||||||
"rollup-plugin-cssimport": "^1.0.2",
|
"rollup-plugin-cssimport": "^1.0.2",
|
||||||
|
|||||||
@ -3,7 +3,7 @@ export const SUCCESS_CLASS = "pf-m-success";
|
|||||||
export const ERROR_CLASS = "pf-m-danger";
|
export const ERROR_CLASS = "pf-m-danger";
|
||||||
export const PROGRESS_CLASS = "pf-m-in-progress";
|
export const PROGRESS_CLASS = "pf-m-in-progress";
|
||||||
export const CURRENT_CLASS = "pf-m-current";
|
export const CURRENT_CLASS = "pf-m-current";
|
||||||
export const VERSION = "2021.9.5";
|
export const VERSION = "2021.9.8";
|
||||||
export const PAGE_SIZE = 20;
|
export const PAGE_SIZE = 20;
|
||||||
export const TITLE_DEFAULT = "authentik";
|
export const TITLE_DEFAULT = "authentik";
|
||||||
export const ROUTE_SEPARATOR = ";";
|
export const ROUTE_SEPARATOR = ";";
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
import { ChartData } from "chart.js";
|
import { ChartData } from "chart.js";
|
||||||
|
|
||||||
|
import { t } from "@lingui/macro";
|
||||||
|
|
||||||
import { customElement } from "lit/decorators";
|
import { customElement } from "lit/decorators";
|
||||||
|
|
||||||
import { AdminApi, LoginMetrics } from "@goauthentik/api";
|
import { AdminApi, LoginMetrics } from "@goauthentik/api";
|
||||||
@ -17,7 +19,7 @@ export class AdminLoginsChart extends AKChart<LoginMetrics> {
|
|||||||
return {
|
return {
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
label: "Failed Logins",
|
label: t`Failed Logins`,
|
||||||
backgroundColor: "rgba(201, 25, 11, .5)",
|
backgroundColor: "rgba(201, 25, 11, .5)",
|
||||||
spanGaps: true,
|
spanGaps: true,
|
||||||
data:
|
data:
|
||||||
@ -29,7 +31,7 @@ export class AdminLoginsChart extends AKChart<LoginMetrics> {
|
|||||||
}) || [],
|
}) || [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Successful Logins",
|
label: t`Successful Logins`,
|
||||||
backgroundColor: "rgba(189, 229, 184, .5)",
|
backgroundColor: "rgba(189, 229, 184, .5)",
|
||||||
spanGaps: true,
|
spanGaps: true,
|
||||||
data:
|
data:
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
import { ChartData } from "chart.js";
|
import { ChartData } from "chart.js";
|
||||||
|
|
||||||
|
import { t } from "@lingui/macro";
|
||||||
|
|
||||||
import { customElement, property } from "lit/decorators";
|
import { customElement, property } from "lit/decorators";
|
||||||
|
|
||||||
import { Coordinate, CoreApi } from "@goauthentik/api";
|
import { Coordinate, CoreApi } from "@goauthentik/api";
|
||||||
@ -22,7 +24,7 @@ export class ApplicationAuthorizeChart extends AKChart<Coordinate[]> {
|
|||||||
return {
|
return {
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
label: "Authorizations",
|
label: t`Authorizations`,
|
||||||
backgroundColor: "rgba(189, 229, 184, .5)",
|
backgroundColor: "rgba(189, 229, 184, .5)",
|
||||||
spanGaps: true,
|
spanGaps: true,
|
||||||
data:
|
data:
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
import { ChartData } from "chart.js";
|
import { ChartData } from "chart.js";
|
||||||
|
|
||||||
|
import { t } from "@lingui/macro";
|
||||||
|
|
||||||
import { customElement, property } from "lit/decorators";
|
import { customElement, property } from "lit/decorators";
|
||||||
|
|
||||||
import { CoreApi, UserMetrics } from "@goauthentik/api";
|
import { CoreApi, UserMetrics } from "@goauthentik/api";
|
||||||
@ -22,7 +24,7 @@ export class UserChart extends AKChart<UserMetrics> {
|
|||||||
return {
|
return {
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
label: "Failed Logins",
|
label: t`Failed Logins`,
|
||||||
backgroundColor: "rgba(201, 25, 11, .5)",
|
backgroundColor: "rgba(201, 25, 11, .5)",
|
||||||
spanGaps: true,
|
spanGaps: true,
|
||||||
data:
|
data:
|
||||||
@ -34,7 +36,7 @@ export class UserChart extends AKChart<UserMetrics> {
|
|||||||
}) || [],
|
}) || [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Successful Logins",
|
label: t`Successful Logins`,
|
||||||
backgroundColor: "rgba(189, 229, 184, .5)",
|
backgroundColor: "rgba(189, 229, 184, .5)",
|
||||||
spanGaps: true,
|
spanGaps: true,
|
||||||
data:
|
data:
|
||||||
@ -46,7 +48,7 @@ export class UserChart extends AKChart<UserMetrics> {
|
|||||||
}) || [],
|
}) || [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Application authorizations",
|
label: t`Application authorizations`,
|
||||||
backgroundColor: "rgba(43, 154, 243, .5)",
|
backgroundColor: "rgba(43, 154, 243, .5)",
|
||||||
spanGaps: true,
|
spanGaps: true,
|
||||||
data:
|
data:
|
||||||
|
|||||||
@ -48,10 +48,10 @@ export abstract class ModelForm<T, PKT extends string | number> extends Form<T>
|
|||||||
}
|
}
|
||||||
|
|
||||||
render(): TemplateResult {
|
render(): TemplateResult {
|
||||||
if (this._instancePk) {
|
if (this._instancePk && !this._initialLoad) {
|
||||||
if (
|
if (
|
||||||
// if we're in viewport now and haven't loaded AND have a PK set, load now
|
// if we're in viewport now and haven't loaded AND have a PK set, load now
|
||||||
(this.isInViewport && !this._initialLoad) ||
|
this.isInViewport ||
|
||||||
// Or if we don't check for viewport in some cases
|
// Or if we don't check for viewport in some cases
|
||||||
!this.viewportCheck
|
!this.viewportCheck
|
||||||
) {
|
) {
|
||||||
|
|||||||
@ -37,7 +37,7 @@ export class EmailStage extends BaseStage<EmailChallenge, EmailChallengeResponse
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div class="pf-c-form__group">
|
<div class="pf-c-form__group">
|
||||||
<p>${t`Check your Emails for a password reset link.`}</p>
|
<p>${t`Check your Inbox for a verification email.`}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="pf-c-form__group pf-m-action">
|
<div class="pf-c-form__group pf-m-action">
|
||||||
|
|||||||
@ -1,16 +1,28 @@
|
|||||||
import { en } from "make-plural/plurals";
|
import { en, fr } from "make-plural/plurals";
|
||||||
|
|
||||||
import { i18n } from "@lingui/core";
|
import { i18n } from "@lingui/core";
|
||||||
|
import { detect, fromUrl, fromStorage, fromNavigator } from "@lingui/detect-locale";
|
||||||
|
|
||||||
import { messages as localeEN } from "../locales/en";
|
import { messages as localeEN } from "../locales/en";
|
||||||
|
import { messages as localeFR_FR } from "../locales/fr_FR";
|
||||||
import { messages as localeDEBUG } from "../locales/pseudo-LOCALE";
|
import { messages as localeDEBUG } from "../locales/pseudo-LOCALE";
|
||||||
|
|
||||||
i18n.loadLocaleData("en", { plurals: en });
|
i18n.loadLocaleData("en", { plurals: en });
|
||||||
i18n.loadLocaleData("debug", { plurals: en });
|
i18n.loadLocaleData("debug", { plurals: en });
|
||||||
|
i18n.loadLocaleData("fr_FR", { plurals: fr });
|
||||||
i18n.load("en", localeEN);
|
i18n.load("en", localeEN);
|
||||||
|
i18n.load("fr_FR", localeFR_FR);
|
||||||
i18n.load("debug", localeDEBUG);
|
i18n.load("debug", localeDEBUG);
|
||||||
i18n.activate("en");
|
|
||||||
|
|
||||||
if (window.location.search.includes("debugLocale")) {
|
const DEFAULT_FALLBACK = () => "en";
|
||||||
i18n.activate("debug");
|
|
||||||
|
const detected =
|
||||||
|
detect(fromUrl("lang"), fromStorage("lang"), fromNavigator(), DEFAULT_FALLBACK) ||
|
||||||
|
DEFAULT_FALLBACK();
|
||||||
|
if (detected in i18n._messages) {
|
||||||
|
console.debug(`authentik/locale: Activating detected locale '${detected}'`);
|
||||||
|
i18n.activate(detected);
|
||||||
|
} else {
|
||||||
|
console.debug(`authentik/locale: No locale for '${detected}', falling back to en`);
|
||||||
|
i18n.activate(DEFAULT_FALLBACK());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,6 +44,10 @@ msgstr "(Format: hours=-1;minutes=-2;seconds=-3)."
|
|||||||
msgid "-"
|
msgid "-"
|
||||||
msgstr "-"
|
msgstr "-"
|
||||||
|
|
||||||
|
#: src/pages/flows/FlowImportForm.ts
|
||||||
|
msgid ".akflow files, which can be found on goauthentik.io and can be exported by authentik."
|
||||||
|
msgstr ".akflow files, which can be found on goauthentik.io and can be exported by authentik."
|
||||||
|
|
||||||
#: src/pages/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts
|
#: src/pages/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts
|
||||||
msgid "6 digits, widely compatible"
|
msgid "6 digits, widely compatible"
|
||||||
msgstr "6 digits, widely compatible"
|
msgstr "6 digits, widely compatible"
|
||||||
@ -478,7 +482,6 @@ msgstr "Background image"
|
|||||||
|
|
||||||
#: src/pages/flows/FlowForm.ts
|
#: src/pages/flows/FlowForm.ts
|
||||||
#: src/pages/flows/FlowForm.ts
|
#: src/pages/flows/FlowForm.ts
|
||||||
#: src/pages/flows/FlowImportForm.ts
|
|
||||||
msgid "Background shown during execution."
|
msgid "Background shown during execution."
|
||||||
msgstr "Background shown during execution."
|
msgstr "Background shown during execution."
|
||||||
|
|
||||||
@ -706,9 +709,13 @@ msgstr "Check outposts."
|
|||||||
msgid "Check status"
|
msgid "Check status"
|
||||||
msgstr "Check status"
|
msgstr "Check status"
|
||||||
|
|
||||||
|
#:
|
||||||
|
#~ msgid "Check your Emails for a password reset link."
|
||||||
|
#~ msgstr "Check your Emails for a password reset link."
|
||||||
|
|
||||||
#: src/flows/stages/email/EmailStage.ts
|
#: src/flows/stages/email/EmailStage.ts
|
||||||
msgid "Check your Emails for a password reset link."
|
msgid "Check your Inbox for a verification email."
|
||||||
msgstr "Check your Emails for a password reset link."
|
msgstr "Check your Inbox for a verification email."
|
||||||
|
|
||||||
#: src/pages/stages/prompt/PromptForm.ts
|
#: src/pages/stages/prompt/PromptForm.ts
|
||||||
msgid "Checkbox"
|
msgid "Checkbox"
|
||||||
@ -978,9 +985,9 @@ msgstr "Cookie domain"
|
|||||||
msgid "Copy"
|
msgid "Copy"
|
||||||
msgstr "Copy"
|
msgstr "Copy"
|
||||||
|
|
||||||
#: src/user/user-settings/tokens/UserTokenList.ts
|
#:
|
||||||
msgid "Copy Key"
|
#~ msgid "Copy Key"
|
||||||
msgstr "Copy Key"
|
#~ msgstr "Copy Key"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderViewPage.ts
|
#: src/pages/providers/saml/SAMLProviderViewPage.ts
|
||||||
msgid "Copy download URL"
|
msgid "Copy download URL"
|
||||||
@ -4630,6 +4637,10 @@ msgstr "Token count"
|
|||||||
msgid "Token expiry"
|
msgid "Token expiry"
|
||||||
msgstr "Token expiry"
|
msgstr "Token expiry"
|
||||||
|
|
||||||
|
#: src/pages/tokens/TokenListPage.ts
|
||||||
|
msgid "Token is managed by authentik."
|
||||||
|
msgstr "Token is managed by authentik."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts
|
#: src/pages/providers/proxy/ProxyProviderForm.ts
|
||||||
msgid "Token validity"
|
msgid "Token validity"
|
||||||
|
|||||||
5898
web/src/locales/fr_FR.po
Normal file
5898
web/src/locales/fr_FR.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -44,6 +44,10 @@ msgstr ""
|
|||||||
msgid "-"
|
msgid "-"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/flows/FlowImportForm.ts
|
||||||
|
msgid ".akflow files, which can be found on goauthentik.io and can be exported by authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts
|
#: src/pages/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts
|
||||||
msgid "6 digits, widely compatible"
|
msgid "6 digits, widely compatible"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -474,7 +478,6 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/pages/flows/FlowForm.ts
|
#: src/pages/flows/FlowForm.ts
|
||||||
#: src/pages/flows/FlowForm.ts
|
#: src/pages/flows/FlowForm.ts
|
||||||
#: src/pages/flows/FlowImportForm.ts
|
|
||||||
msgid "Background shown during execution."
|
msgid "Background shown during execution."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -702,8 +705,12 @@ msgstr ""
|
|||||||
msgid "Check status"
|
msgid "Check status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#:
|
||||||
|
#~ msgid "Check your Emails for a password reset link."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
#: src/flows/stages/email/EmailStage.ts
|
#: src/flows/stages/email/EmailStage.ts
|
||||||
msgid "Check your Emails for a password reset link."
|
msgid "Check your Inbox for a verification email."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/stages/prompt/PromptForm.ts
|
#: src/pages/stages/prompt/PromptForm.ts
|
||||||
@ -972,9 +979,9 @@ msgstr ""
|
|||||||
msgid "Copy"
|
msgid "Copy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/tokens/UserTokenList.ts
|
#:
|
||||||
msgid "Copy Key"
|
#~ msgid "Copy Key"
|
||||||
msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderViewPage.ts
|
#: src/pages/providers/saml/SAMLProviderViewPage.ts
|
||||||
msgid "Copy download URL"
|
msgid "Copy download URL"
|
||||||
@ -4615,6 +4622,10 @@ msgstr ""
|
|||||||
msgid "Token expiry"
|
msgid "Token expiry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/tokens/TokenListPage.ts
|
||||||
|
msgid "Token is managed by authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts
|
#: src/pages/providers/proxy/ProxyProviderForm.ts
|
||||||
msgid "Token validity"
|
msgid "Token validity"
|
||||||
|
|||||||
@ -30,7 +30,9 @@ export class FlowImportForm extends Form<Flow> {
|
|||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html`<form class="pf-c-form pf-m-horizontal">
|
||||||
<ak-form-element-horizontal label=${t`Flow`} name="flow">
|
<ak-form-element-horizontal label=${t`Flow`} name="flow">
|
||||||
<input type="file" value="" class="pf-c-form-control" />
|
<input type="file" value="" class="pf-c-form-control" />
|
||||||
<p class="pf-c-form__helper-text">${t`Background shown during execution.`}</p>
|
<p class="pf-c-form__helper-text">
|
||||||
|
${t`.akflow files, which can be found on goauthentik.io and can be exported by authentik.`}
|
||||||
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -103,11 +103,13 @@ export class OutpostListPage extends TablePage<Outpost> {
|
|||||||
<i class="fas fa-edit"></i>
|
<i class="fas fa-edit"></i>
|
||||||
</button>
|
</button>
|
||||||
</ak-forms-modal>
|
</ak-forms-modal>
|
||||||
<ak-outpost-deployment-modal .outpost=${item} size=${PFSize.Medium}>
|
${item.managed !== "goauthentik.io/outposts/embedded"
|
||||||
|
? html`<ak-outpost-deployment-modal .outpost=${item} size=${PFSize.Medium}>
|
||||||
<button slot="trigger" class="pf-c-button pf-m-tertiary">
|
<button slot="trigger" class="pf-c-button pf-m-tertiary">
|
||||||
${t`View Deployment Info`}
|
${t`View Deployment Info`}
|
||||||
</button>
|
</button>
|
||||||
</ak-outpost-deployment-modal>`,
|
</ak-outpost-deployment-modal>`
|
||||||
|
: html``}`,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -105,7 +105,10 @@ export class TokenListPage extends TablePage<Token> {
|
|||||||
|
|
||||||
row(item: Token): TemplateResult[] {
|
row(item: Token): TemplateResult[] {
|
||||||
return [
|
return [
|
||||||
html`${item.identifier}`,
|
html`<div>
|
||||||
|
<div>${item.identifier}</div>
|
||||||
|
${item.managed ? html`<small>${t`Token is managed by authentik.`}</small>` : html``}
|
||||||
|
</div>`,
|
||||||
html`<a href="#/identity/users/${item.userObj?.pk}">${item.userObj?.username}</a>`,
|
html`<a href="#/identity/users/${item.userObj?.pk}">${item.userObj?.username}</a>`,
|
||||||
html`${item.expiring ? t`Yes` : t`No`}`,
|
html`${item.expiring ? t`Yes` : t`No`}`,
|
||||||
html`${item.expiring ? item.expires?.toLocaleString() : t`-`}`,
|
html`${item.expiring ? item.expires?.toLocaleString() : t`-`}`,
|
||||||
@ -123,7 +126,10 @@ export class TokenListPage extends TablePage<Token> {
|
|||||||
<i class="fas fa-edit"></i>
|
<i class="fas fa-edit"></i>
|
||||||
</button>
|
</button>
|
||||||
</ak-forms-modal>
|
</ak-forms-modal>
|
||||||
<ak-token-copy-button identifier="${item.identifier}">
|
<ak-token-copy-button
|
||||||
|
class="pf-c-button pf-m-plain"
|
||||||
|
identifier="${item.identifier}"
|
||||||
|
>
|
||||||
<i class="fas fa-copy"></i>
|
<i class="fas fa-copy"></i>
|
||||||
</ak-token-copy-button>
|
</ak-token-copy-button>
|
||||||
`,
|
`,
|
||||||
|
|||||||
@ -58,12 +58,11 @@ export class UserForm extends ModelForm<User, number> {
|
|||||||
${t`Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.`}
|
${t`Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.`}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal label=${t`Name`} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${t`Name`} name="name">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
class="pf-c-form-control"
|
class="pf-c-form-control"
|
||||||
required
|
|
||||||
/>
|
/>
|
||||||
<p class="pf-c-form__helper-text">${t`User's display name.`}</p>
|
<p class="pf-c-form__helper-text">${t`User's display name.`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
|
|||||||
@ -55,12 +55,11 @@ export class UserSelfForm extends ModelForm<UserSelf, number> {
|
|||||||
${t`Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.`}
|
${t`Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.`}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal label=${t`Name`} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${t`Name`} name="name">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
class="pf-c-form-control"
|
class="pf-c-form-control"
|
||||||
required
|
|
||||||
/>
|
/>
|
||||||
<p class="pf-c-form__helper-text">${t`User's display name.`}</p>
|
<p class="pf-c-form__helper-text">${t`User's display name.`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
|
|||||||
@ -37,6 +37,7 @@ export class UserTokenList extends Table<Token> {
|
|||||||
page: page,
|
page: page,
|
||||||
pageSize: PAGE_SIZE,
|
pageSize: PAGE_SIZE,
|
||||||
search: this.search || "",
|
search: this.search || "",
|
||||||
|
managed: "",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,8 +152,11 @@ export class UserTokenList extends Table<Token> {
|
|||||||
<i class="fas fa-edit"></i>
|
<i class="fas fa-edit"></i>
|
||||||
</button>
|
</button>
|
||||||
</ak-forms-modal>
|
</ak-forms-modal>
|
||||||
<ak-token-copy-button identifier="${item.identifier}">
|
<ak-token-copy-button
|
||||||
${t`Copy Key`}
|
class="pf-c-button pf-m-plain"
|
||||||
|
identifier="${item.identifier}"
|
||||||
|
>
|
||||||
|
<i class="fas fa-copy"></i>
|
||||||
</ak-token-copy-button>
|
</ak-token-copy-button>
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
|
|||||||
@ -12,9 +12,9 @@ This installation method is for test-setups and small-scale productive setups.
|
|||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
Download the latest `docker-compose.yml` from [here](https://raw.githubusercontent.com/goauthentik/authentik/version/2021.9.5/docker-compose.yml). Place it in a directory of your choice.
|
Download the latest `docker-compose.yml` from [here](https://raw.githubusercontent.com/goauthentik/authentik/version/2021.9.8/docker-compose.yml). Place it in a directory of your choice.
|
||||||
|
|
||||||
To optionally deploy a different version run `echo AUTHENTIK_TAG=2021.9.5 >> .env`
|
To optionally deploy a different version run `echo AUTHENTIK_TAG=2021.9.8 >> .env`
|
||||||
|
|
||||||
If this is a fresh authentik install run the following commands to generate a password:
|
If this is a fresh authentik install run the following commands to generate a password:
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ version: "3.5"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
authentik_proxy:
|
authentik_proxy:
|
||||||
image: ghcr.io/goauthentik/proxy:2021.9.5
|
image: ghcr.io/goauthentik/proxy:2021.9.8
|
||||||
# Optionally specify which networks the container should be
|
# Optionally specify which networks the container should be
|
||||||
# might be needed to reach the core authentik server
|
# might be needed to reach the core authentik server
|
||||||
# networks:
|
# networks:
|
||||||
@ -40,7 +40,7 @@ version: "3.5"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
authentik_ldap:
|
authentik_ldap:
|
||||||
image: ghcr.io/goauthentik/ldap:2021.9.5
|
image: ghcr.io/goauthentik/ldap:2021.9.8
|
||||||
# Optionally specify which networks the container should be
|
# Optionally specify which networks the container should be
|
||||||
# might be needed to reach the core authentik server
|
# might be needed to reach the core authentik server
|
||||||
# networks:
|
# networks:
|
||||||
|
|||||||
@ -14,7 +14,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: __OUTPOST_NAME__
|
app.kubernetes.io/instance: __OUTPOST_NAME__
|
||||||
app.kubernetes.io/managed-by: goauthentik.io
|
app.kubernetes.io/managed-by: goauthentik.io
|
||||||
app.kubernetes.io/name: authentik-proxy
|
app.kubernetes.io/name: authentik-proxy
|
||||||
app.kubernetes.io/version: 2021.9.5
|
app.kubernetes.io/version: 2021.9.8
|
||||||
name: authentik-outpost-api
|
name: authentik-outpost-api
|
||||||
stringData:
|
stringData:
|
||||||
authentik_host: "__AUTHENTIK_URL__"
|
authentik_host: "__AUTHENTIK_URL__"
|
||||||
@ -29,7 +29,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: __OUTPOST_NAME__
|
app.kubernetes.io/instance: __OUTPOST_NAME__
|
||||||
app.kubernetes.io/managed-by: goauthentik.io
|
app.kubernetes.io/managed-by: goauthentik.io
|
||||||
app.kubernetes.io/name: authentik-proxy
|
app.kubernetes.io/name: authentik-proxy
|
||||||
app.kubernetes.io/version: 2021.9.5
|
app.kubernetes.io/version: 2021.9.8
|
||||||
name: authentik-outpost
|
name: authentik-outpost
|
||||||
spec:
|
spec:
|
||||||
ports:
|
ports:
|
||||||
@ -54,7 +54,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: __OUTPOST_NAME__
|
app.kubernetes.io/instance: __OUTPOST_NAME__
|
||||||
app.kubernetes.io/managed-by: goauthentik.io
|
app.kubernetes.io/managed-by: goauthentik.io
|
||||||
app.kubernetes.io/name: authentik-proxy
|
app.kubernetes.io/name: authentik-proxy
|
||||||
app.kubernetes.io/version: 2021.9.5
|
app.kubernetes.io/version: 2021.9.8
|
||||||
name: authentik-outpost
|
name: authentik-outpost
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
@ -62,14 +62,14 @@ spec:
|
|||||||
app.kubernetes.io/instance: __OUTPOST_NAME__
|
app.kubernetes.io/instance: __OUTPOST_NAME__
|
||||||
app.kubernetes.io/managed-by: goauthentik.io
|
app.kubernetes.io/managed-by: goauthentik.io
|
||||||
app.kubernetes.io/name: authentik-proxy
|
app.kubernetes.io/name: authentik-proxy
|
||||||
app.kubernetes.io/version: 2021.9.5
|
app.kubernetes.io/version: 2021.9.8
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/instance: __OUTPOST_NAME__
|
app.kubernetes.io/instance: __OUTPOST_NAME__
|
||||||
app.kubernetes.io/managed-by: goauthentik.io
|
app.kubernetes.io/managed-by: goauthentik.io
|
||||||
app.kubernetes.io/name: authentik-proxy
|
app.kubernetes.io/name: authentik-proxy
|
||||||
app.kubernetes.io/version: 2021.9.5
|
app.kubernetes.io/version: 2021.9.8
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- env:
|
- env:
|
||||||
@ -88,7 +88,7 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
key: authentik_host_insecure
|
key: authentik_host_insecure
|
||||||
name: authentik-outpost-api
|
name: authentik-outpost-api
|
||||||
image: ghcr.io/goauthentik/proxy:2021.9.5
|
image: ghcr.io/goauthentik/proxy:2021.9.8
|
||||||
name: proxy
|
name: proxy
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 9000
|
- containerPort: 9000
|
||||||
@ -110,7 +110,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: __OUTPOST_NAME__
|
app.kubernetes.io/instance: __OUTPOST_NAME__
|
||||||
app.kubernetes.io/managed-by: goauthentik.io
|
app.kubernetes.io/managed-by: goauthentik.io
|
||||||
app.kubernetes.io/name: authentik-proxy
|
app.kubernetes.io/name: authentik-proxy
|
||||||
app.kubernetes.io/version: 2021.9.5
|
app.kubernetes.io/version: 2021.9.8
|
||||||
name: authentik-outpost
|
name: authentik-outpost
|
||||||
spec:
|
spec:
|
||||||
rules:
|
rules:
|
||||||
|
|||||||
Reference in New Issue
Block a user