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] | ||||
| current_version = 2021.9.5 | ||||
| current_version = 2021.9.8 | ||||
| tag = True | ||||
| commit = True | ||||
| 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: | ||||
|           push: ${{ github.event_name == 'release' }} | ||||
|           tags: | | ||||
|             beryju/authentik:2021.9.5, | ||||
|             beryju/authentik:2021.9.8, | ||||
|             beryju/authentik:latest, | ||||
|             ghcr.io/goauthentik/server:2021.9.5, | ||||
|             ghcr.io/goauthentik/server:2021.9.8, | ||||
|             ghcr.io/goauthentik/server:latest | ||||
|           platforms: linux/amd64,linux/arm64 | ||||
|           context: . | ||||
|       - 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: | | ||||
|           docker pull beryju/authentik:latest | ||||
|           docker tag beryju/authentik:latest beryju/authentik:stable | ||||
| @ -75,14 +75,14 @@ jobs: | ||||
|         with: | ||||
|           push: ${{ github.event_name == 'release' }} | ||||
|           tags: | | ||||
|             beryju/authentik-proxy:2021.9.5, | ||||
|             beryju/authentik-proxy:2021.9.8, | ||||
|             beryju/authentik-proxy:latest, | ||||
|             ghcr.io/goauthentik/proxy:2021.9.5, | ||||
|             ghcr.io/goauthentik/proxy:2021.9.8, | ||||
|             ghcr.io/goauthentik/proxy:latest | ||||
|           file: proxy.Dockerfile | ||||
|           platforms: linux/amd64,linux/arm64 | ||||
|       - 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: | | ||||
|           docker pull beryju/authentik-proxy:latest | ||||
|           docker tag beryju/authentik-proxy:latest beryju/authentik-proxy:stable | ||||
| @ -117,14 +117,14 @@ jobs: | ||||
|         with: | ||||
|           push: ${{ github.event_name == 'release' }} | ||||
|           tags: | | ||||
|             beryju/authentik-ldap:2021.9.5, | ||||
|             beryju/authentik-ldap:2021.9.8, | ||||
|             beryju/authentik-ldap:latest, | ||||
|             ghcr.io/goauthentik/ldap:2021.9.5, | ||||
|             ghcr.io/goauthentik/ldap:2021.9.8, | ||||
|             ghcr.io/goauthentik/ldap:latest | ||||
|           file: ldap.Dockerfile | ||||
|           platforms: linux/amd64,linux/arm64 | ||||
|       - 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: | | ||||
|           docker pull beryju/authentik-ldap:latest | ||||
|           docker tag beryju/authentik-ldap:latest beryju/authentik-ldap:stable | ||||
| @ -175,7 +175,7 @@ jobs: | ||||
|           SENTRY_PROJECT: authentik | ||||
|           SENTRY_URL: https://sentry.beryju.org | ||||
|         with: | ||||
|           version: authentik@2021.9.5 | ||||
|           version: authentik@2021.9.8 | ||||
|           environment: beryjuorg-prod | ||||
|           sourcemaps: './web/dist' | ||||
|           url_prefix: '~/static/dist' | ||||
|  | ||||
| @ -80,8 +80,12 @@ COPY ./lifecycle/ /lifecycle | ||||
| COPY --from=builder /work/authentik /authentik-proxy | ||||
|  | ||||
| USER authentik | ||||
|  | ||||
| ENV TMPDIR /dev/shm/ | ||||
| ENV PYTHONUNBUFFERED 1 | ||||
| ENV prometheus_multiproc_dir /dev/shm/ | ||||
| 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" ] | ||||
|  | ||||
| @ -1,3 +1,3 @@ | ||||
| """authentik""" | ||||
| __version__ = "2021.9.5" | ||||
| __version__ = "2021.9.8" | ||||
| ENV_GIT_HASH_KEY = "GIT_BUILD_HASH" | ||||
|  | ||||
| @ -8,3 +8,8 @@ class AuthentikAdminConfig(AppConfig): | ||||
|     name = "authentik.admin" | ||||
|     label = "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 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.lib.config import CONFIG | ||||
| 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) | ||||
| def update_latest_version(self: MonitoredTask): | ||||
|     """Update latest version info""" | ||||
|  | ||||
| @ -82,6 +82,7 @@ class TokenViewSet(UsedByMixin, ModelViewSet): | ||||
|         "description", | ||||
|         "expires", | ||||
|         "expiring", | ||||
|         "managed", | ||||
|     ] | ||||
|     ordering = ["identifier", "expires"] | ||||
|     permission_classes = [OwnerSuperuserPermissions] | ||||
|  | ||||
| @ -90,6 +90,9 @@ class UserSerializer(ModelSerializer): | ||||
|             "attributes", | ||||
|             "uid", | ||||
|         ] | ||||
|         extra_kwargs = { | ||||
|             "name": {"allow_blank": True}, | ||||
|         } | ||||
|  | ||||
|  | ||||
| class UserSelfSerializer(ModelSerializer): | ||||
| @ -98,9 +101,25 @@ class UserSelfSerializer(ModelSerializer): | ||||
|  | ||||
|     is_superuser = BooleanField(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) | ||||
|  | ||||
|     @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: | ||||
|  | ||||
|         model = User | ||||
| @ -117,6 +136,7 @@ class UserSelfSerializer(ModelSerializer): | ||||
|         ] | ||||
|         extra_kwargs = { | ||||
|             "is_active": {"read_only": True}, | ||||
|             "name": {"allow_blank": True}, | ||||
|         } | ||||
|  | ||||
|  | ||||
| @ -208,6 +228,7 @@ class UserViewSet(UsedByMixin, ModelViewSet): | ||||
|     """User Viewset""" | ||||
|  | ||||
|     queryset = User.objects.none() | ||||
|     ordering = ["username"] | ||||
|     serializer_class = UserSerializer | ||||
|     search_fields = ["username", "name", "is_active", "email"] | ||||
|     filterset_class = UsersFilter | ||||
|  | ||||
| @ -108,6 +108,7 @@ class FlowViewSet(UsedByMixin, ModelViewSet): | ||||
|     queryset = Flow.objects.all() | ||||
|     serializer_class = FlowSerializer | ||||
|     lookup_field = "slug" | ||||
|     ordering = ["slug", "name"] | ||||
|     search_fields = ["name", "slug", "designation", "title"] | ||||
|     filterset_fields = ["flow_uuid", "name", "slug", "designation"] | ||||
|  | ||||
|  | ||||
| @ -76,6 +76,9 @@ class DockerController(BaseController): | ||||
|         #   {'HostIp': '0.0.0.0', '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: | ||||
|             key = f"{port.inner_port or port.port}/{port.protocol.lower()}" | ||||
|             if key not in container.ports: | ||||
|  | ||||
| @ -87,6 +87,7 @@ class PolicyViewSet( | ||||
|         "promptstage": ["isnull"], | ||||
|     } | ||||
|     search_fields = ["name"] | ||||
|     ordering = ["name"] | ||||
|  | ||||
|     def get_queryset(self):  # pragma: no cover | ||||
|         return Policy.objects.select_subclasses().prefetch_related("bindings", "promptstage_set") | ||||
|  | ||||
| @ -59,14 +59,14 @@ class MetricsView(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: | ||||
|         return HttpResponse(status=201) | ||||
|         return HttpResponse(status=204) | ||||
|  | ||||
|  | ||||
| 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: | ||||
|         try: | ||||
| @ -79,4 +79,4 @@ class ReadyView(View): | ||||
|             redis_conn.ping() | ||||
|         except RedisError: | ||||
|             return HttpResponse(status=503) | ||||
|         return HttpResponse(status=201) | ||||
|         return HttpResponse(status=204) | ||||
|  | ||||
| @ -45,6 +45,9 @@ func main() { | ||||
| 	defer common.Defer() | ||||
|  | ||||
| 	ac := ak.NewAPIController(*akURLActual, akToken) | ||||
| 	if ac == nil { | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
|  | ||||
| 	ac.Server = ldap.NewServer(ac) | ||||
|  | ||||
|  | ||||
| @ -59,6 +59,9 @@ func main() { | ||||
| 	defer common.Defer() | ||||
|  | ||||
| 	ac := ak.NewAPIController(*akURLActual, akToken) | ||||
| 	if ac == nil { | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
|  | ||||
| 	ac.Server = proxyv2.NewProxyServer(ac, portOffset) | ||||
|  | ||||
|  | ||||
| @ -54,7 +54,7 @@ func main() { | ||||
| 	u, _ := url.Parse("http://localhost:8000") | ||||
|  | ||||
| 	g := gounicorn.NewGoUnicorn() | ||||
| 	ws := web.NewWebServer() | ||||
| 	ws := web.NewWebServer(g) | ||||
| 	defer g.Kill() | ||||
| 	defer ws.Shutdown() | ||||
| 	go web.RunMetricsServer() | ||||
|  | ||||
| @ -7,8 +7,6 @@ services: | ||||
|     restart: unless-stopped | ||||
|     volumes: | ||||
|       - database:/var/lib/postgresql/data | ||||
|     networks: | ||||
|       - internal | ||||
|     environment: | ||||
|       - POSTGRES_PASSWORD=${PG_PASS:?database password required} | ||||
|       - POSTGRES_USER=${PG_USER:-authentik} | ||||
| @ -18,10 +16,8 @@ services: | ||||
|   redis: | ||||
|     image: redis:alpine | ||||
|     restart: unless-stopped | ||||
|     networks: | ||||
|       - internal | ||||
|   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 | ||||
|     command: server | ||||
|     environment: | ||||
| @ -36,19 +32,15 @@ services: | ||||
|       - ./media:/media | ||||
|       - ./custom-templates:/templates | ||||
|       - geoip:/geoip | ||||
|     networks: | ||||
|       - internal | ||||
|     env_file: | ||||
|       - .env | ||||
|     ports: | ||||
|       - "0.0.0.0:9000:9000" | ||||
|       - "0.0.0.0:9443:9443" | ||||
|   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 | ||||
|     command: worker | ||||
|     networks: | ||||
|       - internal | ||||
|     environment: | ||||
|       AUTHENTIK_REDIS__HOST: redis | ||||
|       AUTHENTIK_POSTGRESQL__HOST: postgresql | ||||
| @ -83,6 +75,3 @@ volumes: | ||||
|     driver: local | ||||
|   geoip: | ||||
|     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/sirupsen/logrus v1.8.1 | ||||
| 	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/net v0.0.0-20210510120150-4163338589ed // indirect | ||||
| 	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.3/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.202192.5/go.mod h1:02nnD4FRd8lu8A1+ZuzqownBgvAhdCKzqkKX8v7JMTE= | ||||
| goauthentik.io/api v0.202195.4 h1:UQMeaNW/MZsMUrmaJ3p19gve26RIn+y08m9M2QQBWek= | ||||
| 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-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
| 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()) | ||||
| } | ||||
|  | ||||
| const VERSION = "2021.9.5" | ||||
| const VERSION = "2021.9.8" | ||||
|  | ||||
| @ -1,10 +1,13 @@ | ||||
| package gounicorn | ||||
|  | ||||
| import ( | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
| 	"time" | ||||
|  | ||||
| 	log "github.com/sirupsen/logrus" | ||||
| 	"goauthentik.io/internal/outpost/ak" | ||||
| ) | ||||
|  | ||||
| type GoUnicorn struct { | ||||
| @ -12,6 +15,7 @@ type GoUnicorn struct { | ||||
| 	p       *exec.Cmd | ||||
| 	started bool | ||||
| 	killed  bool | ||||
| 	alive   bool | ||||
| } | ||||
|  | ||||
| func NewGoUnicorn() *GoUnicorn { | ||||
| @ -20,6 +24,7 @@ func NewGoUnicorn() *GoUnicorn { | ||||
| 		log:     logger, | ||||
| 		started: false, | ||||
| 		killed:  false, | ||||
| 		alive:   false, | ||||
| 	} | ||||
| 	g.initCmd() | ||||
| 	return g | ||||
| @ -35,6 +40,10 @@ func (g *GoUnicorn) initCmd() { | ||||
| 	g.p.Stderr = os.Stderr | ||||
| } | ||||
|  | ||||
| func (g *GoUnicorn) IsRunning() bool { | ||||
| 	return g.alive | ||||
| } | ||||
|  | ||||
| func (g *GoUnicorn) Start() error { | ||||
| 	if g.killed { | ||||
| 		g.log.Debug("Not restarting gunicorn since we're killed") | ||||
| @ -44,9 +53,38 @@ func (g *GoUnicorn) Start() error { | ||||
| 		g.initCmd() | ||||
| 	} | ||||
| 	g.started = true | ||||
| 	go g.healthcheck() | ||||
| 	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() { | ||||
| 	g.killed = true | ||||
| 	err := g.p.Process.Kill() | ||||
|  | ||||
| @ -40,6 +40,10 @@ func (ws *WebServer) configureProxy() { | ||||
| 		ws.proxyErrorHandler(rw, r, fmt.Errorf("proxy not running")) | ||||
| 	}) | ||||
| 	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) | ||||
| 		before := time.Now() | ||||
| 		if ws.ProxyServer != nil { | ||||
| @ -59,8 +63,12 @@ func (ws *WebServer) configureProxy() { | ||||
| } | ||||
|  | ||||
| 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) | ||||
| 	_, 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 { | ||||
|  | ||||
| @ -11,6 +11,7 @@ import ( | ||||
| 	"github.com/pires/go-proxyproto" | ||||
| 	log "github.com/sirupsen/logrus" | ||||
| 	"goauthentik.io/internal/config" | ||||
| 	"goauthentik.io/internal/gounicorn" | ||||
| 	"goauthentik.io/internal/outpost/proxyv2" | ||||
| ) | ||||
|  | ||||
| @ -27,9 +28,10 @@ type WebServer struct { | ||||
| 	m   *mux.Router | ||||
| 	lh  *mux.Router | ||||
| 	log *log.Entry | ||||
| 	p   *gounicorn.GoUnicorn | ||||
| } | ||||
|  | ||||
| func NewWebServer() *WebServer { | ||||
| func NewWebServer(g *gounicorn.GoUnicorn) *WebServer { | ||||
| 	l := log.WithField("logger", "authentik.g.web") | ||||
| 	mainHandler := mux.NewRouter() | ||||
| 	if config.G.ErrorReporting.Enabled { | ||||
| @ -46,6 +48,7 @@ func NewWebServer() *WebServer { | ||||
| 		m:   mainHandler, | ||||
| 		lh:  logginRouter, | ||||
| 		log: l, | ||||
| 		p:   g, | ||||
| 	} | ||||
| 	ws.configureStatic() | ||||
| 	ws.configureProxy() | ||||
|  | ||||
							
								
								
									
										11
									
								
								lifecycle/ak
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								lifecycle/ak
									
									
									
									
									
								
							| @ -26,10 +26,14 @@ function check_if_root { | ||||
|     chpst -u authentik:$GROUP env HOME=/authentik $1 | ||||
| } | ||||
|  | ||||
| MODE_FILE="/tmp/authentik-mode" | ||||
|  | ||||
| if [[ "$1" == "server" ]]; then | ||||
|     echo "server" > $MODE_FILE | ||||
|     python -m lifecycle.migrate | ||||
|     /authentik-proxy | ||||
| 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" | ||||
| elif [[ "$1" == "backup" ]]; then | ||||
|     python -m manage dbbackup --clean | ||||
| @ -42,6 +46,13 @@ elif [[ "$1" == "test" ]]; then | ||||
|     touch /unittest.xml | ||||
|     chown authentik:authentik /unittest.xml | ||||
|     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 | ||||
|     python -m manage "$@" | ||||
| fi | ||||
|  | ||||
							
								
								
									
										20
									
								
								schema.yml
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								schema.yml
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| openapi: 3.0.3 | ||||
| info: | ||||
|   title: authentik | ||||
|   version: 2021.9.5 | ||||
|   version: 2021.9.8 | ||||
|   description: Making authentication simple. | ||||
|   contact: | ||||
|     email: hello@beryju.org | ||||
| @ -2318,6 +2318,10 @@ paths: | ||||
|           - app_password | ||||
|           - recovery | ||||
|           - verification | ||||
|       - in: query | ||||
|         name: managed | ||||
|         schema: | ||||
|           type: string | ||||
|       - name: ordering | ||||
|         required: false | ||||
|         in: query | ||||
| @ -29205,7 +29209,7 @@ components: | ||||
|         groups: | ||||
|           type: array | ||||
|           items: | ||||
|             $ref: '#/components/schemas/Group' | ||||
|             $ref: '#/components/schemas/UserSelfGroups' | ||||
|           readOnly: true | ||||
|         email: | ||||
|           type: string | ||||
| @ -29227,6 +29231,18 @@ components: | ||||
|       - pk | ||||
|       - uid | ||||
|       - username | ||||
|     UserSelfGroups: | ||||
|       type: object | ||||
|       properties: | ||||
|         name: | ||||
|           type: string | ||||
|           readOnly: true | ||||
|         pk: | ||||
|           type: string | ||||
|           readOnly: true | ||||
|       required: | ||||
|       - name | ||||
|       - pk | ||||
|     UserSelfRequest: | ||||
|       type: object | ||||
|       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-typescript": "^7.15.0", | ||||
|                 "@fortawesome/fontawesome-free": "^5.15.4", | ||||
|                 "@goauthentik/api": "^2021.9.4-1633366097", | ||||
|                 "@lingui/cli": "^3.11.1", | ||||
|                 "@lingui/core": "^3.11.1", | ||||
|                 "@lingui/macro": "^3.11.1", | ||||
|                 "@goauthentik/api": "^2021.9.5-1633432270", | ||||
|                 "@lingui/cli": "^3.12.1", | ||||
|                 "@lingui/core": "^3.12.1", | ||||
|                 "@lingui/detect-locale": "^3.12.1", | ||||
|                 "@lingui/macro": "^3.12.1", | ||||
|                 "@patternfly/patternfly": "^4.135.2", | ||||
|                 "@polymer/iron-form": "^3.0.1", | ||||
|                 "@polymer/paper-input": "^3.2.1", | ||||
| @ -30,16 +31,16 @@ | ||||
|                 "@squoosh/cli": "^0.7.2", | ||||
|                 "@trivago/prettier-plugin-sort-imports": "^2.0.4", | ||||
|                 "@types/chart.js": "^2.9.34", | ||||
|                 "@types/codemirror": "5.60.3", | ||||
|                 "@types/codemirror": "5.60.4", | ||||
|                 "@types/grecaptcha": "^3.0.3", | ||||
|                 "@typescript-eslint/eslint-plugin": "^4.31.2", | ||||
|                 "@typescript-eslint/parser": "^4.31.2", | ||||
|                 "@typescript-eslint/eslint-plugin": "^4.33.0", | ||||
|                 "@typescript-eslint/parser": "^4.33.0", | ||||
|                 "@webcomponents/webcomponentsjs": "^2.6.0", | ||||
|                 "babel-plugin-macros": "^3.1.0", | ||||
|                 "base64-js": "^1.5.1", | ||||
|                 "chart.js": "^3.5.1", | ||||
|                 "chartjs-adapter-moment": "^1.0.0", | ||||
|                 "codemirror": "^5.63.0", | ||||
|                 "codemirror": "^5.63.1", | ||||
|                 "construct-style-sheets-polyfill": "^2.4.16", | ||||
|                 "eslint": "^7.32.0", | ||||
|                 "eslint-config-google": "^0.14.0", | ||||
| @ -51,7 +52,7 @@ | ||||
|                 "moment": "^2.29.1", | ||||
|                 "prettier": "^2.4.1", | ||||
|                 "rapidoc": "^9.1.3", | ||||
|                 "rollup": "^2.57.0", | ||||
|                 "rollup": "^2.58.0", | ||||
|                 "rollup-plugin-commonjs": "^10.1.0", | ||||
|                 "rollup-plugin-copy": "^3.4.0", | ||||
|                 "rollup-plugin-cssimport": "^1.0.2", | ||||
| @ -1691,9 +1692,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@goauthentik/api": { | ||||
|             "version": "2021.9.4-1633366097", | ||||
|             "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.9.4-1633366097.tgz", | ||||
|             "integrity": "sha512-k0RX5kHNfkgmciwPD6a7o8Movj9nfYt/uqvuJ0+5ptttJTDkB177c+okS0hqBtZF8n1u662w85gMvffAYrvU/Q==" | ||||
|             "version": "2021.9.5-1633432270", | ||||
|             "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.9.5-1633432270.tgz", | ||||
|             "integrity": "sha512-uKhaYImCzX8BLWQZD5vY5mClfUtZeGEn7/o+dNztOs6viOCbWSRuYvE1tnTqxKjKw2Yoe2YaWURfA7zweSxUng==" | ||||
|         }, | ||||
|         "node_modules/@humanwhocodes/config-array": { | ||||
|             "version": "0.5.0", | ||||
| @ -1793,13 +1794,13 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@lingui/babel-plugin-extract-messages": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.11.1.tgz", | ||||
|             "integrity": "sha512-MAsZ0BYIsHh08dptT7bA6Jsh1ixO1sBU8eNDtobkZaZ78SXIUMUYCy9e3T9D/RYpecgDGaFUf2djctTqguMgmQ==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.12.1.tgz", | ||||
|             "integrity": "sha512-5x119XBpWe3gYUDTgwkoTFqeI60beFRdEL1HnArFkrWfhaGqUK8SjzpqO7NtN335IIBU3SPtGXKsI4NPkJQ8TA==", | ||||
|             "dependencies": { | ||||
|                 "@babel/generator": "^7.11.6", | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "@lingui/conf": "^3.11.1", | ||||
|                 "@lingui/conf": "^3.12.1", | ||||
|                 "mkdirp": "^1.0.4" | ||||
|             }, | ||||
|             "engines": { | ||||
| @ -1807,17 +1808,17 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@lingui/cli": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.11.1.tgz", | ||||
|             "integrity": "sha512-piKjrGjiornzX18Lt6EhyICAHEGH9wio0KaOXKyCjHqPw8sQnC4AZv0iyZqTACVYL+0ROsrtNd/xgDMYNSQgeA==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.12.1.tgz", | ||||
|             "integrity": "sha512-Z3klth+zD3+oqkDEhm1cTuI1Z9K/lyZD615cUQXPxLZRn9dokZ+9enoJNiese412VMNvcp/dtYC+wfyMpYX2PQ==", | ||||
|             "dependencies": { | ||||
|                 "@babel/generator": "^7.11.6", | ||||
|                 "@babel/parser": "^7.11.5", | ||||
|                 "@babel/plugin-syntax-jsx": "^7.10.4", | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "@babel/types": "^7.11.5", | ||||
|                 "@lingui/babel-plugin-extract-messages": "^3.11.1", | ||||
|                 "@lingui/conf": "^3.11.1", | ||||
|                 "@lingui/babel-plugin-extract-messages": "^3.12.1", | ||||
|                 "@lingui/conf": "^3.12.1", | ||||
|                 "babel-plugin-macros": "^3.0.1", | ||||
|                 "bcp-47": "^1.0.7", | ||||
|                 "chalk": "^4.1.0", | ||||
| @ -1920,9 +1921,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@lingui/conf": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.11.1.tgz", | ||||
|             "integrity": "sha512-WoEdtDAiI+TR7Gz2F7VMZQyIGZFP2b4qT3JO3gLuGzHY6a6DCqOMojqUuo6KHFQrUoUtebI/1Yn7gAxVH1xcWQ==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.12.1.tgz", | ||||
|             "integrity": "sha512-asTFAUTf8zxYU+fI1MxggJD/o4BenT/rE4IJ/+ngaf1cbzBo71lXmhSYkIa8/vTZrdHDSuXGzIL43f1D9BF6YA==", | ||||
|             "dependencies": { | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", | ||||
| @ -2000,9 +2001,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@lingui/core": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.11.1.tgz", | ||||
|             "integrity": "sha512-qHMo47SbwFFx3IwXbMRafIMZH2tTYebrQhvAu5wH9OabI+bqbVWbTOLSAXzX/gDZqxMQWIrr2ndrah0aPZk6EQ==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.12.1.tgz", | ||||
|             "integrity": "sha512-MkZgkaaBcFtmUXdck9YNMTMTwCRogUif8Ll4Wyqz0re2Ydo7fdwGFBkacYjOc787R5/UmZr2F21OtPqSbaoaJg==", | ||||
|             "dependencies": { | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "make-plural": "^6.2.2", | ||||
| @ -2012,13 +2013,21 @@ | ||||
|                 "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": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-3.11.1.tgz", | ||||
|             "integrity": "sha512-rSzvBs4Gasn6VO8msYA0/Bw285jUOBoLAVxURt6XaH45NXnJiWnDtEOD/DhQcuggDKbaWwz13lXOiRfUP0zG6g==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-3.12.1.tgz", | ||||
|             "integrity": "sha512-CszdqDnaCo5cnbg6RROYnYtYGOADPhJuRf9U9t2aL9IsN+N7pSQAMdMLbjYkEMT/V8Cjon33ZjLgeGihe0FhSA==", | ||||
|             "dependencies": { | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "@lingui/conf": "^3.11.1", | ||||
|                 "@lingui/conf": "^3.12.1", | ||||
|                 "ramda": "^0.27.1" | ||||
|             }, | ||||
|             "engines": { | ||||
| @ -2562,9 +2571,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@types/codemirror": { | ||||
|             "version": "5.60.3", | ||||
|             "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.3.tgz", | ||||
|             "integrity": "sha512-dVX8Vsio70u4la9LGi1jjmaqtcdMMZUYalO5QY5EWy4XKrNjewNm9cy2K5XvP+puzLzum417gmJ9w7F6bVR1XA==", | ||||
|             "version": "5.60.4", | ||||
|             "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.4.tgz", | ||||
|             "integrity": "sha512-SUQgBj9jZ+xj75zgwfgQZt0CManWBISN/YsE0xRmPwO6uDyLNpXO8bn2m59tpevsFw+eQdmx+qY1WjOrUgMDgw==", | ||||
|             "dependencies": { | ||||
|                 "@types/tern": "*" | ||||
|             } | ||||
| @ -2708,14 +2717,15 @@ | ||||
|             "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" | ||||
|         }, | ||||
|         "node_modules/@typescript-eslint/eslint-plugin": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.2.tgz", | ||||
|             "integrity": "sha512-w63SCQ4bIwWN/+3FxzpnWrDjQRXVEGiTt9tJTRptRXeFvdZc/wLiz3FQUwNQ2CVoRGI6KUWMNUj/pk63noUfcA==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", | ||||
|             "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", | ||||
|             "dependencies": { | ||||
|                 "@typescript-eslint/experimental-utils": "4.31.2", | ||||
|                 "@typescript-eslint/scope-manager": "4.31.2", | ||||
|                 "@typescript-eslint/experimental-utils": "4.33.0", | ||||
|                 "@typescript-eslint/scope-manager": "4.33.0", | ||||
|                 "debug": "^4.3.1", | ||||
|                 "functional-red-black-tree": "^1.0.1", | ||||
|                 "ignore": "^5.1.8", | ||||
|                 "regexpp": "^3.1.0", | ||||
|                 "semver": "^7.3.5", | ||||
|                 "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": { | ||||
|             "version": "7.3.5", | ||||
|             "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", | ||||
| @ -2752,14 +2770,14 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@typescript-eslint/experimental-utils": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.2.tgz", | ||||
|             "integrity": "sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", | ||||
|             "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", | ||||
|             "dependencies": { | ||||
|                 "@types/json-schema": "^7.0.7", | ||||
|                 "@typescript-eslint/scope-manager": "4.31.2", | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/typescript-estree": "4.31.2", | ||||
|                 "@typescript-eslint/scope-manager": "4.33.0", | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "@typescript-eslint/typescript-estree": "4.33.0", | ||||
|                 "eslint-scope": "^5.1.1", | ||||
|                 "eslint-utils": "^3.0.0" | ||||
|             }, | ||||
| @ -2775,13 +2793,13 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@typescript-eslint/parser": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.2.tgz", | ||||
|             "integrity": "sha512-EcdO0E7M/sv23S/rLvenHkb58l3XhuSZzKf6DBvLgHqOYdL6YFMYVtreGFWirxaU2mS1GYDby3Lyxco7X5+Vjw==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", | ||||
|             "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", | ||||
|             "dependencies": { | ||||
|                 "@typescript-eslint/scope-manager": "4.31.2", | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/typescript-estree": "4.31.2", | ||||
|                 "@typescript-eslint/scope-manager": "4.33.0", | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "@typescript-eslint/typescript-estree": "4.33.0", | ||||
|                 "debug": "^4.3.1" | ||||
|             }, | ||||
|             "engines": { | ||||
| @ -2801,12 +2819,12 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@typescript-eslint/scope-manager": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.2.tgz", | ||||
|             "integrity": "sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", | ||||
|             "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", | ||||
|             "dependencies": { | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/visitor-keys": "4.31.2" | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "@typescript-eslint/visitor-keys": "4.33.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": "^8.10.0 || ^10.13.0 || >=11.10.1" | ||||
| @ -2817,9 +2835,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@typescript-eslint/types": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.2.tgz", | ||||
|             "integrity": "sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", | ||||
|             "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", | ||||
|             "engines": { | ||||
|                 "node": "^8.10.0 || ^10.13.0 || >=11.10.1" | ||||
|             }, | ||||
| @ -2829,12 +2847,12 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@typescript-eslint/typescript-estree": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.2.tgz", | ||||
|             "integrity": "sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", | ||||
|             "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", | ||||
|             "dependencies": { | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/visitor-keys": "4.31.2", | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "@typescript-eslint/visitor-keys": "4.33.0", | ||||
|                 "debug": "^4.3.1", | ||||
|                 "globby": "^11.0.3", | ||||
|                 "is-glob": "^4.0.1", | ||||
| @ -2869,11 +2887,11 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@typescript-eslint/visitor-keys": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.2.tgz", | ||||
|             "integrity": "sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", | ||||
|             "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", | ||||
|             "dependencies": { | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "eslint-visitor-keys": "^2.0.0" | ||||
|             }, | ||||
|             "engines": { | ||||
| @ -3605,9 +3623,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/codemirror": { | ||||
|             "version": "5.63.0", | ||||
|             "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.0.tgz", | ||||
|             "integrity": "sha512-KlLWRPggDg2rBD1Mx7/EqEhaBdy+ybBCVh/efgjBDsPpMeEu6MbTAJzIT4TuCzvmbTEgvKOGzVT6wdBTNusqrg==" | ||||
|             "version": "5.63.1", | ||||
|             "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.1.tgz", | ||||
|             "integrity": "sha512-baivaNZreZOGh1/tYyTvCupC9NeWk7qlZeGUDi4nFKj/J0JU8FYKZND4QqLw70P7HOttlCt4JJAOj9GoIhHEkA==" | ||||
|         }, | ||||
|         "node_modules/collection-visit": { | ||||
|             "version": "1.0.0", | ||||
| @ -7080,9 +7098,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/rollup": { | ||||
|             "version": "2.57.0", | ||||
|             "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.57.0.tgz", | ||||
|             "integrity": "sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg==", | ||||
|             "version": "2.58.0", | ||||
|             "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", | ||||
|             "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", | ||||
|             "bin": { | ||||
|                 "rollup": "dist/bin/rollup" | ||||
|             }, | ||||
| @ -9760,9 +9778,9 @@ | ||||
|             "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==" | ||||
|         }, | ||||
|         "@goauthentik/api": { | ||||
|             "version": "2021.9.4-1633366097", | ||||
|             "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.9.4-1633366097.tgz", | ||||
|             "integrity": "sha512-k0RX5kHNfkgmciwPD6a7o8Movj9nfYt/uqvuJ0+5ptttJTDkB177c+okS0hqBtZF8n1u662w85gMvffAYrvU/Q==" | ||||
|             "version": "2021.9.5-1633432270", | ||||
|             "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.9.5-1633432270.tgz", | ||||
|             "integrity": "sha512-uKhaYImCzX8BLWQZD5vY5mClfUtZeGEn7/o+dNztOs6viOCbWSRuYvE1tnTqxKjKw2Yoe2YaWURfA7zweSxUng==" | ||||
|         }, | ||||
|         "@humanwhocodes/config-array": { | ||||
|             "version": "0.5.0", | ||||
| @ -9837,28 +9855,28 @@ | ||||
|             } | ||||
|         }, | ||||
|         "@lingui/babel-plugin-extract-messages": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.11.1.tgz", | ||||
|             "integrity": "sha512-MAsZ0BYIsHh08dptT7bA6Jsh1ixO1sBU8eNDtobkZaZ78SXIUMUYCy9e3T9D/RYpecgDGaFUf2djctTqguMgmQ==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.12.1.tgz", | ||||
|             "integrity": "sha512-5x119XBpWe3gYUDTgwkoTFqeI60beFRdEL1HnArFkrWfhaGqUK8SjzpqO7NtN335IIBU3SPtGXKsI4NPkJQ8TA==", | ||||
|             "requires": { | ||||
|                 "@babel/generator": "^7.11.6", | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "@lingui/conf": "^3.11.1", | ||||
|                 "@lingui/conf": "^3.12.1", | ||||
|                 "mkdirp": "^1.0.4" | ||||
|             } | ||||
|         }, | ||||
|         "@lingui/cli": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.11.1.tgz", | ||||
|             "integrity": "sha512-piKjrGjiornzX18Lt6EhyICAHEGH9wio0KaOXKyCjHqPw8sQnC4AZv0iyZqTACVYL+0ROsrtNd/xgDMYNSQgeA==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.12.1.tgz", | ||||
|             "integrity": "sha512-Z3klth+zD3+oqkDEhm1cTuI1Z9K/lyZD615cUQXPxLZRn9dokZ+9enoJNiese412VMNvcp/dtYC+wfyMpYX2PQ==", | ||||
|             "requires": { | ||||
|                 "@babel/generator": "^7.11.6", | ||||
|                 "@babel/parser": "^7.11.5", | ||||
|                 "@babel/plugin-syntax-jsx": "^7.10.4", | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "@babel/types": "^7.11.5", | ||||
|                 "@lingui/babel-plugin-extract-messages": "^3.11.1", | ||||
|                 "@lingui/conf": "^3.11.1", | ||||
|                 "@lingui/babel-plugin-extract-messages": "^3.12.1", | ||||
|                 "@lingui/conf": "^3.12.1", | ||||
|                 "babel-plugin-macros": "^3.0.1", | ||||
|                 "bcp-47": "^1.0.7", | ||||
|                 "chalk": "^4.1.0", | ||||
| @ -9931,9 +9949,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "@lingui/conf": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.11.1.tgz", | ||||
|             "integrity": "sha512-WoEdtDAiI+TR7Gz2F7VMZQyIGZFP2b4qT3JO3gLuGzHY6a6DCqOMojqUuo6KHFQrUoUtebI/1Yn7gAxVH1xcWQ==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.12.1.tgz", | ||||
|             "integrity": "sha512-asTFAUTf8zxYU+fI1MxggJD/o4BenT/rE4IJ/+ngaf1cbzBo71lXmhSYkIa8/vTZrdHDSuXGzIL43f1D9BF6YA==", | ||||
|             "requires": { | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", | ||||
| @ -9989,22 +10007,27 @@ | ||||
|             } | ||||
|         }, | ||||
|         "@lingui/core": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.11.1.tgz", | ||||
|             "integrity": "sha512-qHMo47SbwFFx3IwXbMRafIMZH2tTYebrQhvAu5wH9OabI+bqbVWbTOLSAXzX/gDZqxMQWIrr2ndrah0aPZk6EQ==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.12.1.tgz", | ||||
|             "integrity": "sha512-MkZgkaaBcFtmUXdck9YNMTMTwCRogUif8Ll4Wyqz0re2Ydo7fdwGFBkacYjOc787R5/UmZr2F21OtPqSbaoaJg==", | ||||
|             "requires": { | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "make-plural": "^6.2.2", | ||||
|                 "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": { | ||||
|             "version": "3.11.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-3.11.1.tgz", | ||||
|             "integrity": "sha512-rSzvBs4Gasn6VO8msYA0/Bw285jUOBoLAVxURt6XaH45NXnJiWnDtEOD/DhQcuggDKbaWwz13lXOiRfUP0zG6g==", | ||||
|             "version": "3.12.1", | ||||
|             "resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-3.12.1.tgz", | ||||
|             "integrity": "sha512-CszdqDnaCo5cnbg6RROYnYtYGOADPhJuRf9U9t2aL9IsN+N7pSQAMdMLbjYkEMT/V8Cjon33ZjLgeGihe0FhSA==", | ||||
|             "requires": { | ||||
|                 "@babel/runtime": "^7.11.2", | ||||
|                 "@lingui/conf": "^3.11.1", | ||||
|                 "@lingui/conf": "^3.12.1", | ||||
|                 "ramda": "^0.27.1" | ||||
|             } | ||||
|         }, | ||||
| @ -10465,9 +10488,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "@types/codemirror": { | ||||
|             "version": "5.60.3", | ||||
|             "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.3.tgz", | ||||
|             "integrity": "sha512-dVX8Vsio70u4la9LGi1jjmaqtcdMMZUYalO5QY5EWy4XKrNjewNm9cy2K5XvP+puzLzum417gmJ9w7F6bVR1XA==", | ||||
|             "version": "5.60.4", | ||||
|             "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.4.tgz", | ||||
|             "integrity": "sha512-SUQgBj9jZ+xj75zgwfgQZt0CManWBISN/YsE0xRmPwO6uDyLNpXO8bn2m59tpevsFw+eQdmx+qY1WjOrUgMDgw==", | ||||
|             "requires": { | ||||
|                 "@types/tern": "*" | ||||
|             } | ||||
| @ -10610,19 +10633,25 @@ | ||||
|             "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" | ||||
|         }, | ||||
|         "@typescript-eslint/eslint-plugin": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.2.tgz", | ||||
|             "integrity": "sha512-w63SCQ4bIwWN/+3FxzpnWrDjQRXVEGiTt9tJTRptRXeFvdZc/wLiz3FQUwNQ2CVoRGI6KUWMNUj/pk63noUfcA==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", | ||||
|             "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", | ||||
|             "requires": { | ||||
|                 "@typescript-eslint/experimental-utils": "4.31.2", | ||||
|                 "@typescript-eslint/scope-manager": "4.31.2", | ||||
|                 "@typescript-eslint/experimental-utils": "4.33.0", | ||||
|                 "@typescript-eslint/scope-manager": "4.33.0", | ||||
|                 "debug": "^4.3.1", | ||||
|                 "functional-red-black-tree": "^1.0.1", | ||||
|                 "ignore": "^5.1.8", | ||||
|                 "regexpp": "^3.1.0", | ||||
|                 "semver": "^7.3.5", | ||||
|                 "tsutils": "^3.21.0" | ||||
|             }, | ||||
|             "dependencies": { | ||||
|                 "ignore": { | ||||
|                     "version": "5.1.8", | ||||
|                     "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", | ||||
|                     "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" | ||||
|                 }, | ||||
|                 "semver": { | ||||
|                     "version": "7.3.5", | ||||
|                     "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", | ||||
| @ -10634,50 +10663,50 @@ | ||||
|             } | ||||
|         }, | ||||
|         "@typescript-eslint/experimental-utils": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.2.tgz", | ||||
|             "integrity": "sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", | ||||
|             "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", | ||||
|             "requires": { | ||||
|                 "@types/json-schema": "^7.0.7", | ||||
|                 "@typescript-eslint/scope-manager": "4.31.2", | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/typescript-estree": "4.31.2", | ||||
|                 "@typescript-eslint/scope-manager": "4.33.0", | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "@typescript-eslint/typescript-estree": "4.33.0", | ||||
|                 "eslint-scope": "^5.1.1", | ||||
|                 "eslint-utils": "^3.0.0" | ||||
|             } | ||||
|         }, | ||||
|         "@typescript-eslint/parser": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.2.tgz", | ||||
|             "integrity": "sha512-EcdO0E7M/sv23S/rLvenHkb58l3XhuSZzKf6DBvLgHqOYdL6YFMYVtreGFWirxaU2mS1GYDby3Lyxco7X5+Vjw==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", | ||||
|             "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", | ||||
|             "requires": { | ||||
|                 "@typescript-eslint/scope-manager": "4.31.2", | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/typescript-estree": "4.31.2", | ||||
|                 "@typescript-eslint/scope-manager": "4.33.0", | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "@typescript-eslint/typescript-estree": "4.33.0", | ||||
|                 "debug": "^4.3.1" | ||||
|             } | ||||
|         }, | ||||
|         "@typescript-eslint/scope-manager": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.2.tgz", | ||||
|             "integrity": "sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", | ||||
|             "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", | ||||
|             "requires": { | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/visitor-keys": "4.31.2" | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "@typescript-eslint/visitor-keys": "4.33.0" | ||||
|             } | ||||
|         }, | ||||
|         "@typescript-eslint/types": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.2.tgz", | ||||
|             "integrity": "sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w==" | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", | ||||
|             "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==" | ||||
|         }, | ||||
|         "@typescript-eslint/typescript-estree": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.2.tgz", | ||||
|             "integrity": "sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", | ||||
|             "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", | ||||
|             "requires": { | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/visitor-keys": "4.31.2", | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "@typescript-eslint/visitor-keys": "4.33.0", | ||||
|                 "debug": "^4.3.1", | ||||
|                 "globby": "^11.0.3", | ||||
|                 "is-glob": "^4.0.1", | ||||
| @ -10696,11 +10725,11 @@ | ||||
|             } | ||||
|         }, | ||||
|         "@typescript-eslint/visitor-keys": { | ||||
|             "version": "4.31.2", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.2.tgz", | ||||
|             "integrity": "sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug==", | ||||
|             "version": "4.33.0", | ||||
|             "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", | ||||
|             "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", | ||||
|             "requires": { | ||||
|                 "@typescript-eslint/types": "4.31.2", | ||||
|                 "@typescript-eslint/types": "4.33.0", | ||||
|                 "eslint-visitor-keys": "^2.0.0" | ||||
|             } | ||||
|         }, | ||||
| @ -11215,9 +11244,9 @@ | ||||
|             "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" | ||||
|         }, | ||||
|         "codemirror": { | ||||
|             "version": "5.63.0", | ||||
|             "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.0.tgz", | ||||
|             "integrity": "sha512-KlLWRPggDg2rBD1Mx7/EqEhaBdy+ybBCVh/efgjBDsPpMeEu6MbTAJzIT4TuCzvmbTEgvKOGzVT6wdBTNusqrg==" | ||||
|             "version": "5.63.1", | ||||
|             "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.1.tgz", | ||||
|             "integrity": "sha512-baivaNZreZOGh1/tYyTvCupC9NeWk7qlZeGUDi4nFKj/J0JU8FYKZND4QqLw70P7HOttlCt4JJAOj9GoIhHEkA==" | ||||
|         }, | ||||
|         "collection-visit": { | ||||
|             "version": "1.0.0", | ||||
| @ -13816,9 +13845,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "rollup": { | ||||
|             "version": "2.57.0", | ||||
|             "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.57.0.tgz", | ||||
|             "integrity": "sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg==", | ||||
|             "version": "2.58.0", | ||||
|             "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", | ||||
|             "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", | ||||
|             "requires": { | ||||
|                 "fsevents": "~2.3.2" | ||||
|             } | ||||
|  | ||||
| @ -17,7 +17,8 @@ | ||||
|         "sourceLocale": "en", | ||||
|         "locales": [ | ||||
|             "en", | ||||
|             "pseudo-LOCALE" | ||||
|             "pseudo-LOCALE", | ||||
|             "fr_FR" | ||||
|         ], | ||||
|         "formatOptions": { | ||||
|             "lineNumbers": false | ||||
| @ -47,10 +48,11 @@ | ||||
|         "@babel/preset-env": "^7.15.6", | ||||
|         "@babel/preset-typescript": "^7.15.0", | ||||
|         "@fortawesome/fontawesome-free": "^5.15.4", | ||||
|         "@goauthentik/api": "^2021.9.4-1633366097", | ||||
|         "@lingui/cli": "^3.11.1", | ||||
|         "@lingui/core": "^3.11.1", | ||||
|         "@lingui/macro": "^3.11.1", | ||||
|         "@goauthentik/api": "^2021.9.5-1633432270", | ||||
|         "@lingui/cli": "^3.12.1", | ||||
|         "@lingui/core": "^3.12.1", | ||||
|         "@lingui/detect-locale": "^3.12.1", | ||||
|         "@lingui/macro": "^3.12.1", | ||||
|         "@patternfly/patternfly": "^4.135.2", | ||||
|         "@polymer/iron-form": "^3.0.1", | ||||
|         "@polymer/paper-input": "^3.2.1", | ||||
| @ -62,16 +64,16 @@ | ||||
|         "@squoosh/cli": "^0.7.2", | ||||
|         "@trivago/prettier-plugin-sort-imports": "^2.0.4", | ||||
|         "@types/chart.js": "^2.9.34", | ||||
|         "@types/codemirror": "5.60.3", | ||||
|         "@types/codemirror": "5.60.4", | ||||
|         "@types/grecaptcha": "^3.0.3", | ||||
|         "@typescript-eslint/eslint-plugin": "^4.31.2", | ||||
|         "@typescript-eslint/parser": "^4.31.2", | ||||
|         "@typescript-eslint/eslint-plugin": "^4.33.0", | ||||
|         "@typescript-eslint/parser": "^4.33.0", | ||||
|         "@webcomponents/webcomponentsjs": "^2.6.0", | ||||
|         "babel-plugin-macros": "^3.1.0", | ||||
|         "base64-js": "^1.5.1", | ||||
|         "chart.js": "^3.5.1", | ||||
|         "chartjs-adapter-moment": "^1.0.0", | ||||
|         "codemirror": "^5.63.0", | ||||
|         "codemirror": "^5.63.1", | ||||
|         "construct-style-sheets-polyfill": "^2.4.16", | ||||
|         "eslint": "^7.32.0", | ||||
|         "eslint-config-google": "^0.14.0", | ||||
| @ -83,7 +85,7 @@ | ||||
|         "moment": "^2.29.1", | ||||
|         "prettier": "^2.4.1", | ||||
|         "rapidoc": "^9.1.3", | ||||
|         "rollup": "^2.57.0", | ||||
|         "rollup": "^2.58.0", | ||||
|         "rollup-plugin-commonjs": "^10.1.0", | ||||
|         "rollup-plugin-copy": "^3.4.0", | ||||
|         "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 PROGRESS_CLASS = "pf-m-in-progress"; | ||||
| 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 TITLE_DEFAULT = "authentik"; | ||||
| export const ROUTE_SEPARATOR = ";"; | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| import { ChartData } from "chart.js"; | ||||
|  | ||||
| import { t } from "@lingui/macro"; | ||||
|  | ||||
| import { customElement } from "lit/decorators"; | ||||
|  | ||||
| import { AdminApi, LoginMetrics } from "@goauthentik/api"; | ||||
| @ -17,7 +19,7 @@ export class AdminLoginsChart extends AKChart<LoginMetrics> { | ||||
|         return { | ||||
|             datasets: [ | ||||
|                 { | ||||
|                     label: "Failed Logins", | ||||
|                     label: t`Failed Logins`, | ||||
|                     backgroundColor: "rgba(201, 25, 11, .5)", | ||||
|                     spanGaps: true, | ||||
|                     data: | ||||
| @ -29,7 +31,7 @@ export class AdminLoginsChart extends AKChart<LoginMetrics> { | ||||
|                         }) || [], | ||||
|                 }, | ||||
|                 { | ||||
|                     label: "Successful Logins", | ||||
|                     label: t`Successful Logins`, | ||||
|                     backgroundColor: "rgba(189, 229, 184, .5)", | ||||
|                     spanGaps: true, | ||||
|                     data: | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| import { ChartData } from "chart.js"; | ||||
|  | ||||
| import { t } from "@lingui/macro"; | ||||
|  | ||||
| import { customElement, property } from "lit/decorators"; | ||||
|  | ||||
| import { Coordinate, CoreApi } from "@goauthentik/api"; | ||||
| @ -22,7 +24,7 @@ export class ApplicationAuthorizeChart extends AKChart<Coordinate[]> { | ||||
|         return { | ||||
|             datasets: [ | ||||
|                 { | ||||
|                     label: "Authorizations", | ||||
|                     label: t`Authorizations`, | ||||
|                     backgroundColor: "rgba(189, 229, 184, .5)", | ||||
|                     spanGaps: true, | ||||
|                     data: | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| import { ChartData } from "chart.js"; | ||||
|  | ||||
| import { t } from "@lingui/macro"; | ||||
|  | ||||
| import { customElement, property } from "lit/decorators"; | ||||
|  | ||||
| import { CoreApi, UserMetrics } from "@goauthentik/api"; | ||||
| @ -22,7 +24,7 @@ export class UserChart extends AKChart<UserMetrics> { | ||||
|         return { | ||||
|             datasets: [ | ||||
|                 { | ||||
|                     label: "Failed Logins", | ||||
|                     label: t`Failed Logins`, | ||||
|                     backgroundColor: "rgba(201, 25, 11, .5)", | ||||
|                     spanGaps: true, | ||||
|                     data: | ||||
| @ -34,7 +36,7 @@ export class UserChart extends AKChart<UserMetrics> { | ||||
|                         }) || [], | ||||
|                 }, | ||||
|                 { | ||||
|                     label: "Successful Logins", | ||||
|                     label: t`Successful Logins`, | ||||
|                     backgroundColor: "rgba(189, 229, 184, .5)", | ||||
|                     spanGaps: true, | ||||
|                     data: | ||||
| @ -46,7 +48,7 @@ export class UserChart extends AKChart<UserMetrics> { | ||||
|                         }) || [], | ||||
|                 }, | ||||
|                 { | ||||
|                     label: "Application authorizations", | ||||
|                     label: t`Application authorizations`, | ||||
|                     backgroundColor: "rgba(43, 154, 243, .5)", | ||||
|                     spanGaps: true, | ||||
|                     data: | ||||
|  | ||||
| @ -48,10 +48,10 @@ export abstract class ModelForm<T, PKT extends string | number> extends Form<T> | ||||
|     } | ||||
|  | ||||
|     render(): TemplateResult { | ||||
|         if (this._instancePk) { | ||||
|         if (this._instancePk && !this._initialLoad) { | ||||
|             if ( | ||||
|                 // 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 | ||||
|                 !this.viewportCheck | ||||
|             ) { | ||||
|  | ||||
| @ -37,7 +37,7 @@ export class EmailStage extends BaseStage<EmailChallenge, EmailChallengeResponse | ||||
|                     }} | ||||
|                 > | ||||
|                     <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 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 { detect, fromUrl, fromStorage, fromNavigator } from "@lingui/detect-locale"; | ||||
|  | ||||
| import { messages as localeEN } from "../locales/en"; | ||||
| import { messages as localeFR_FR } from "../locales/fr_FR"; | ||||
| import { messages as localeDEBUG } from "../locales/pseudo-LOCALE"; | ||||
|  | ||||
| i18n.loadLocaleData("en", { plurals: en }); | ||||
| i18n.loadLocaleData("debug", { plurals: en }); | ||||
| i18n.loadLocaleData("fr_FR", { plurals: fr }); | ||||
| i18n.load("en", localeEN); | ||||
| i18n.load("fr_FR", localeFR_FR); | ||||
| i18n.load("debug", localeDEBUG); | ||||
| i18n.activate("en"); | ||||
|  | ||||
| if (window.location.search.includes("debugLocale")) { | ||||
|     i18n.activate("debug"); | ||||
| const DEFAULT_FALLBACK = () => "en"; | ||||
|  | ||||
| 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 "-" | ||||
| 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 | ||||
| msgid "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/FlowImportForm.ts | ||||
| msgid "Background shown during execution." | ||||
| msgstr "Background shown during execution." | ||||
|  | ||||
| @ -706,9 +709,13 @@ msgstr "Check outposts." | ||||
| msgid "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 | ||||
| msgid "Check your Emails for a password reset link." | ||||
| msgstr "Check your Emails for a password reset link." | ||||
| msgid "Check your Inbox for a verification email." | ||||
| msgstr "Check your Inbox for a verification email." | ||||
|  | ||||
| #: src/pages/stages/prompt/PromptForm.ts | ||||
| msgid "Checkbox" | ||||
| @ -978,9 +985,9 @@ msgstr "Cookie domain" | ||||
| msgid "Copy" | ||||
| msgstr "Copy" | ||||
|  | ||||
| #: src/user/user-settings/tokens/UserTokenList.ts | ||||
| msgid "Copy Key" | ||||
| msgstr "Copy Key" | ||||
| #:  | ||||
| #~ msgid "Copy Key" | ||||
| #~ msgstr "Copy Key" | ||||
|  | ||||
| #: src/pages/providers/saml/SAMLProviderViewPage.ts | ||||
| msgid "Copy download URL" | ||||
| @ -4630,6 +4637,10 @@ msgstr "Token count" | ||||
| msgid "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/proxy/ProxyProviderForm.ts | ||||
| 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 "-" | ||||
| 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 | ||||
| msgid "6 digits, widely compatible" | ||||
| msgstr "" | ||||
| @ -474,7 +478,6 @@ msgstr "" | ||||
|  | ||||
| #: src/pages/flows/FlowForm.ts | ||||
| #: src/pages/flows/FlowForm.ts | ||||
| #: src/pages/flows/FlowImportForm.ts | ||||
| msgid "Background shown during execution." | ||||
| msgstr "" | ||||
|  | ||||
| @ -702,8 +705,12 @@ msgstr "" | ||||
| msgid "Check status" | ||||
| msgstr "" | ||||
|  | ||||
| #:  | ||||
| #~ msgid "Check your Emails for a password reset link." | ||||
| #~ msgstr "" | ||||
|  | ||||
| #: src/flows/stages/email/EmailStage.ts | ||||
| msgid "Check your Emails for a password reset link." | ||||
| msgid "Check your Inbox for a verification email." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/stages/prompt/PromptForm.ts | ||||
| @ -972,9 +979,9 @@ msgstr "" | ||||
| msgid "Copy" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/user/user-settings/tokens/UserTokenList.ts | ||||
| msgid "Copy Key" | ||||
| msgstr "" | ||||
| #:  | ||||
| #~ msgid "Copy Key" | ||||
| #~ msgstr "" | ||||
|  | ||||
| #: src/pages/providers/saml/SAMLProviderViewPage.ts | ||||
| msgid "Copy download URL" | ||||
| @ -4615,6 +4622,10 @@ msgstr "" | ||||
| msgid "Token expiry" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/tokens/TokenListPage.ts | ||||
| msgid "Token is managed by authentik." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/providers/oauth2/OAuth2ProviderForm.ts | ||||
| #: src/pages/providers/proxy/ProxyProviderForm.ts | ||||
| msgid "Token validity" | ||||
|  | ||||
| @ -30,7 +30,9 @@ export class FlowImportForm extends Form<Flow> { | ||||
|         return html`<form class="pf-c-form pf-m-horizontal"> | ||||
|             <ak-form-element-horizontal label=${t`Flow`} name="flow"> | ||||
|                 <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> | ||||
|         </form>`; | ||||
|     } | ||||
|  | ||||
| @ -103,11 +103,13 @@ export class OutpostListPage extends TablePage<Outpost> { | ||||
|                         <i class="fas fa-edit"></i> | ||||
|                     </button> | ||||
|                 </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"> | ||||
|                               ${t`View Deployment Info`} | ||||
|                           </button> | ||||
|                 </ak-outpost-deployment-modal>`, | ||||
|                       </ak-outpost-deployment-modal>` | ||||
|                     : html``}`, | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -105,7 +105,10 @@ export class TokenListPage extends TablePage<Token> { | ||||
|  | ||||
|     row(item: Token): TemplateResult[] { | ||||
|         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`${item.expiring ? t`Yes` : t`No`}`, | ||||
|             html`${item.expiring ? item.expires?.toLocaleString() : t`-`}`, | ||||
| @ -123,7 +126,10 @@ export class TokenListPage extends TablePage<Token> { | ||||
|                         <i class="fas fa-edit"></i> | ||||
|                     </button> | ||||
|                 </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> | ||||
|                 </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.`} | ||||
|                 </p> | ||||
|             </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 | ||||
|                     type="text" | ||||
|                     value="${ifDefined(this.instance?.name)}" | ||||
|                     class="pf-c-form-control" | ||||
|                     required | ||||
|                 /> | ||||
|                 <p class="pf-c-form__helper-text">${t`User's display name.`}</p> | ||||
|             </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.`} | ||||
|                 </p> | ||||
|             </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 | ||||
|                     type="text" | ||||
|                     value="${ifDefined(this.instance?.name)}" | ||||
|                     class="pf-c-form-control" | ||||
|                     required | ||||
|                 /> | ||||
|                 <p class="pf-c-form__helper-text">${t`User's display name.`}</p> | ||||
|             </ak-form-element-horizontal> | ||||
|  | ||||
| @ -37,6 +37,7 @@ export class UserTokenList extends Table<Token> { | ||||
|             page: page, | ||||
|             pageSize: PAGE_SIZE, | ||||
|             search: this.search || "", | ||||
|             managed: "", | ||||
|         }); | ||||
|     } | ||||
|  | ||||
| @ -151,8 +152,11 @@ export class UserTokenList extends Table<Token> { | ||||
|                         <i class="fas fa-edit"></i> | ||||
|                     </button> | ||||
|                 </ak-forms-modal> | ||||
|                 <ak-token-copy-button identifier="${item.identifier}"> | ||||
|                     ${t`Copy Key`} | ||||
|                 <ak-token-copy-button | ||||
|                     class="pf-c-button pf-m-plain" | ||||
|                     identifier="${item.identifier}" | ||||
|                 > | ||||
|                     <i class="fas fa-copy"></i> | ||||
|                 </ak-token-copy-button> | ||||
|             `, | ||||
|         ]; | ||||
|  | ||||
| @ -12,9 +12,9 @@ This installation method is for test-setups and small-scale productive setups. | ||||
|  | ||||
| ## 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: | ||||
|  | ||||
|  | ||||
| @ -13,7 +13,7 @@ version: "3.5" | ||||
|  | ||||
| services: | ||||
|   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 | ||||
|     # might be needed to reach the core authentik server | ||||
|     # networks: | ||||
| @ -40,7 +40,7 @@ version: "3.5" | ||||
|  | ||||
| services: | ||||
|   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 | ||||
|     # might be needed to reach the core authentik server | ||||
|     # networks: | ||||
|  | ||||
| @ -14,7 +14,7 @@ metadata: | ||||
|     app.kubernetes.io/instance: __OUTPOST_NAME__ | ||||
|     app.kubernetes.io/managed-by: goauthentik.io | ||||
|     app.kubernetes.io/name: authentik-proxy | ||||
|     app.kubernetes.io/version: 2021.9.5 | ||||
|     app.kubernetes.io/version: 2021.9.8 | ||||
|   name: authentik-outpost-api | ||||
| stringData: | ||||
|   authentik_host: "__AUTHENTIK_URL__" | ||||
| @ -29,7 +29,7 @@ metadata: | ||||
|     app.kubernetes.io/instance: __OUTPOST_NAME__ | ||||
|     app.kubernetes.io/managed-by: goauthentik.io | ||||
|     app.kubernetes.io/name: authentik-proxy | ||||
|     app.kubernetes.io/version: 2021.9.5 | ||||
|     app.kubernetes.io/version: 2021.9.8 | ||||
|   name: authentik-outpost | ||||
| spec: | ||||
|   ports: | ||||
| @ -54,7 +54,7 @@ metadata: | ||||
|     app.kubernetes.io/instance: __OUTPOST_NAME__ | ||||
|     app.kubernetes.io/managed-by: goauthentik.io | ||||
|     app.kubernetes.io/name: authentik-proxy | ||||
|     app.kubernetes.io/version: 2021.9.5 | ||||
|     app.kubernetes.io/version: 2021.9.8 | ||||
|   name: authentik-outpost | ||||
| spec: | ||||
|   selector: | ||||
| @ -62,14 +62,14 @@ spec: | ||||
|       app.kubernetes.io/instance: __OUTPOST_NAME__ | ||||
|       app.kubernetes.io/managed-by: goauthentik.io | ||||
|       app.kubernetes.io/name: authentik-proxy | ||||
|       app.kubernetes.io/version: 2021.9.5 | ||||
|       app.kubernetes.io/version: 2021.9.8 | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app.kubernetes.io/instance: __OUTPOST_NAME__ | ||||
|         app.kubernetes.io/managed-by: goauthentik.io | ||||
|         app.kubernetes.io/name: authentik-proxy | ||||
|         app.kubernetes.io/version: 2021.9.5 | ||||
|         app.kubernetes.io/version: 2021.9.8 | ||||
|     spec: | ||||
|       containers: | ||||
|         - env: | ||||
| @ -88,7 +88,7 @@ spec: | ||||
|               secretKeyRef: | ||||
|                 key: authentik_host_insecure | ||||
|                 name: authentik-outpost-api | ||||
|         image: ghcr.io/goauthentik/proxy:2021.9.5 | ||||
|         image: ghcr.io/goauthentik/proxy:2021.9.8 | ||||
|         name: proxy | ||||
|         ports: | ||||
|           - containerPort: 9000 | ||||
| @ -110,7 +110,7 @@ metadata: | ||||
|     app.kubernetes.io/instance: __OUTPOST_NAME__ | ||||
|     app.kubernetes.io/managed-by: goauthentik.io | ||||
|     app.kubernetes.io/name: authentik-proxy | ||||
|     app.kubernetes.io/version: 2021.9.5 | ||||
|     app.kubernetes.io/version: 2021.9.8 | ||||
|   name: authentik-outpost | ||||
| spec: | ||||
|   rules: | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	