Share env vars client-side using @Public decorator (#6627)

* fix: public env vars using decorator

* fix: relocate

* fix: use env.public

* fix: register public env vars across plugins

* fix: test

* fix: tsc

* fix: mark remaining ones as public

* fix: move oidc ones to plugin

* fix: prevent overwrite

* fix: review
This commit is contained in:
Apoorv Mishra
2024-03-09 14:48:59 +05:30
committed by GitHub
parent 0983dd91b6
commit 34e8a64b50
13 changed files with 119 additions and 93 deletions

View File

@@ -1,5 +1,6 @@
import { IsOptional, IsUrl, MaxLength } from "class-validator";
import { IsBoolean, IsOptional, IsUrl, MaxLength } from "class-validator";
import { Environment } from "@server/env";
import { Public } from "@server/utils/decorators/Public";
import environment from "@server/utils/environment";
import { CannotUseWithout } from "@server/utils/validators";
@@ -74,6 +75,28 @@ class OIDCPluginEnvironment extends Environment {
* profile email".
*/
public OIDC_SCOPES = environment.OIDC_SCOPES ?? "openid profile email";
/**
* Disable autoredirect to the OIDC login page if there is only one
* authentication method and that method is OIDC.
*/
@Public
@IsOptional()
@IsBoolean()
public OIDC_DISABLE_REDIRECT = this.toOptionalBoolean(
environment.OIDC_DISABLE_REDIRECT
);
/**
* The OIDC logout endpoint.
*/
@Public
@IsOptional()
@IsUrl({
require_tld: false,
allow_underscores: true,
})
public OIDC_LOGOUT_URI = this.toOptionalString(environment.OIDC_LOGOUT_URI);
}
export default new OIDCPluginEnvironment();

View File

@@ -1,6 +1,7 @@
import { IsBoolean, IsOptional } from "class-validator";
import { Environment } from "@server/env";
import Deprecated from "@server/models/decorators/Deprecated";
import { Public } from "@server/utils/decorators/Public";
import environment from "@server/utils/environment";
import { CannotUseWithout } from "@server/utils/validators";
@@ -8,6 +9,20 @@ class SlackPluginEnvironment extends Environment {
/**
* Slack OAuth2 client credentials. To enable authentication with Slack.
*/
@Public
@IsOptional()
public SLACK_CLIENT_ID = this.toOptionalString(
environment.SLACK_CLIENT_ID ?? environment.SLACK_KEY
);
/**
* Injected into the `slack-app-id` header meta tag if provided.
*/
@Public
@IsOptional()
@CannotUseWithout("SLACK_CLIENT_ID")
public SLACK_APP_ID = this.toOptionalString(environment.SLACK_APP_ID);
@IsOptional()
@Deprecated("Use SLACK_CLIENT_SECRET instead")
public SLACK_SECRET = this.toOptionalString(environment.SLACK_SECRET);