Skip to content

Commit 48344ff

Browse files
committed
feat: add support for default response mode & type env
Resolves #341
1 parent 77f34e1 commit 48344ff

File tree

12 files changed

+251
-5
lines changed

12 files changed

+251
-5
lines changed

dashboard/src/components/EnvComponents/JWTConfiguration.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ const JSTConfigurations = ({
6161

6262
return (
6363
<div>
64-
{' '}
6564
<Flex
6665
borderRadius={5}
6766
width="100%"

dashboard/src/components/EnvComponents/OAuthConfig.tsx

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@ import {
1818
FaTwitter,
1919
FaMicrosoft,
2020
} from 'react-icons/fa';
21-
import { TextInputType, HiddenInputType } from '../../constants';
21+
import {
22+
TextInputType,
23+
HiddenInputType,
24+
ResponseModes,
25+
ResponseTypes,
26+
SelectInputType,
27+
} from '../../constants';
2228

2329
const OAuthConfig = ({
2430
envVariables,
@@ -70,6 +76,42 @@ const OAuthConfig = ({
7076
/>
7177
</Center>
7278
</Flex>
79+
<Flex direction={isNotSmallerScreen ? 'row' : 'column'}>
80+
<Flex w="30%" justifyContent="start" alignItems="center">
81+
<Text fontSize="sm">Default Response Type:</Text>
82+
</Flex>
83+
<Flex
84+
w={isNotSmallerScreen ? '70%' : '100%'}
85+
mt={isNotSmallerScreen ? '0' : '2'}
86+
>
87+
<InputField
88+
borderRadius={5}
89+
variables={envVariables}
90+
setVariables={setVariables}
91+
inputType={SelectInputType.DEFAULT_AUTHORIZE_RESPONSE_TYPE}
92+
value={SelectInputType}
93+
options={ResponseTypes}
94+
/>
95+
</Flex>
96+
</Flex>
97+
<Flex direction={isNotSmallerScreen ? 'row' : 'column'}>
98+
<Flex w="30%" justifyContent="start" alignItems="center">
99+
<Text fontSize="sm">Default Response Mode:</Text>
100+
</Flex>
101+
<Flex
102+
w={isNotSmallerScreen ? '70%' : '100%'}
103+
mt={isNotSmallerScreen ? '0' : '2'}
104+
>
105+
<InputField
106+
borderRadius={5}
107+
variables={envVariables}
108+
setVariables={setVariables}
109+
inputType={SelectInputType.DEFAULT_AUTHORIZE_RESPONSE_MODE}
110+
value={SelectInputType}
111+
options={ResponseModes}
112+
/>
113+
</Flex>
114+
</Flex>
73115
</Stack>
74116
<Divider mt={5} mb={2} color="blackAlpha.700" />
75117
<Text fontSize="md" paddingTop="2%" fontWeight="bold" mb={4}>

dashboard/src/constants.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ export const ArrayInputType = {
5757
export const SelectInputType = {
5858
JWT_TYPE: 'JWT_TYPE',
5959
GENDER: 'gender',
60+
DEFAULT_AUTHORIZE_RESPONSE_TYPE: 'DEFAULT_AUTHORIZE_RESPONSE_TYPE',
61+
DEFAULT_AUTHORIZE_RESPONSE_MODE: 'DEFAULT_AUTHORIZE_RESPONSE_MODE',
6062
};
6163

6264
export const MultiSelectInputType = {
@@ -161,6 +163,8 @@ export interface envVarTypes {
161163
ACCESS_TOKEN_EXPIRY_TIME: string;
162164
DISABLE_MULTI_FACTOR_AUTHENTICATION: boolean;
163165
ENFORCE_MULTI_FACTOR_AUTHENTICATION: boolean;
166+
DEFAULT_AUTHORIZE_RESPONSE_TYPE: string;
167+
DEFAULT_AUTHORIZE_RESPONSE_MODE: string;
164168
}
165169

166170
export const envSubViews = {
@@ -349,3 +353,16 @@ export enum EmailTemplateEditors {
349353
UNLAYER_EDITOR = 'unlayer_editor',
350354
PLAIN_HTML_EDITOR = 'plain_html_editor',
351355
}
356+
357+
export const ResponseTypes = {
358+
token: 'token',
359+
code: 'code',
360+
id_token: 'id_token',
361+
};
362+
363+
export const ResponseModes = {
364+
query: 'query',
365+
form_post: 'form_post',
366+
fragment: 'fragment',
367+
web_message: 'web_message',
368+
};

dashboard/src/graphql/queries/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ export const EnvVariablesQuery = `
7070
ACCESS_TOKEN_EXPIRY_TIME
7171
DISABLE_MULTI_FACTOR_AUTHENTICATION
7272
ENFORCE_MULTI_FACTOR_AUTHENTICATION
73+
DEFAULT_AUTHORIZE_RESPONSE_TYPE
74+
DEFAULT_AUTHORIZE_RESPONSE_MODE
7375
}
7476
}
7577
`;

dashboard/src/pages/Environment.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ const Environment = () => {
9090
ACCESS_TOKEN_EXPIRY_TIME: '',
9191
DISABLE_MULTI_FACTOR_AUTHENTICATION: false,
9292
ENFORCE_MULTI_FACTOR_AUTHENTICATION: false,
93+
DEFAULT_AUTHORIZE_RESPONSE_TYPE: '',
94+
DEFAULT_AUTHORIZE_RESPONSE_MODE: '',
9395
});
9496

9597
const [fieldVisibility, setFieldVisibility] = React.useState<

server/constants/env.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,4 +166,12 @@ const (
166166
EnvKeyDefaultRoles = "DEFAULT_ROLES"
167167
// EnvKeyAllowedOrigins key for env variable ALLOWED_ORIGINS
168168
EnvKeyAllowedOrigins = "ALLOWED_ORIGINS"
169+
170+
// For oauth/openid/authorize
171+
// EnvKeyDefaultAuthorizeResponseType key for env variable DEFAULT_AUTHORIZE_RESPONSE_TYPE
172+
// This env is used for setting default response type in authorize handler
173+
EnvKeyDefaultAuthorizeResponseType = "DEFAULT_AUTHORIZE_RESPONSE_TYPE"
174+
// EnvKeyDefaultAuthorizeResponseMode key for env variable DEFAULT_AUTHORIZE_RESPONSE_MODE
175+
// This env is used for setting default response mode in authorize handler
176+
EnvKeyDefaultAuthorizeResponseMode = "DEFAULT_AUTHORIZE_RESPONSE_MODE"
169177
)

server/env/env.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ func InitAllEnv() error {
8787
osCouchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket)
8888
osCouchbaseScope := os.Getenv(constants.EnvCouchbaseScope)
8989
osCouchbaseBucketRAMQuotaMB := os.Getenv(constants.EnvCouchbaseBucketRAMQuotaMB)
90+
osAuthorizeResponseType := os.Getenv(constants.EnvKeyDefaultAuthorizeResponseType)
91+
osAuthorizeResponseMode := os.Getenv(constants.EnvKeyDefaultAuthorizeResponseMode)
9092

9193
// os bool vars
9294
osAppCookieSecure := os.Getenv(constants.EnvKeyAppCookieSecure)
@@ -735,6 +737,28 @@ func InitAllEnv() error {
735737
envData[constants.EnvKeyProtectedRoles] = osProtectedRoles
736738
}
737739

740+
if val, ok := envData[constants.EnvKeyDefaultAuthorizeResponseType]; !ok || val == "" {
741+
envData[constants.EnvKeyDefaultAuthorizeResponseType] = osAuthorizeResponseType
742+
// Set the default value to token type
743+
if envData[constants.EnvKeyDefaultAuthorizeResponseType] == "" {
744+
envData[constants.EnvKeyDefaultAuthorizeResponseType] = constants.ResponseTypeToken
745+
}
746+
}
747+
if osAuthorizeResponseType != "" && envData[constants.EnvKeyDefaultAuthorizeResponseType] != osAuthorizeResponseType {
748+
envData[constants.EnvKeyDefaultAuthorizeResponseType] = osAuthorizeResponseType
749+
}
750+
751+
if val, ok := envData[constants.EnvKeyDefaultAuthorizeResponseMode]; !ok || val == "" {
752+
envData[constants.EnvKeyDefaultAuthorizeResponseMode] = osAuthorizeResponseMode
753+
// Set the default value to token type
754+
if envData[constants.EnvKeyDefaultAuthorizeResponseMode] == "" {
755+
envData[constants.EnvKeyDefaultAuthorizeResponseMode] = constants.ResponseModeQuery
756+
}
757+
}
758+
if osAuthorizeResponseMode != "" && envData[constants.EnvKeyDefaultAuthorizeResponseMode] != osAuthorizeResponseMode {
759+
envData[constants.EnvKeyDefaultAuthorizeResponseMode] = osAuthorizeResponseMode
760+
}
761+
738762
err = memorystore.Provider.UpdateEnvStore(envData)
739763
if err != nil {
740764
log.Debug("Error while updating env store: ", err)

server/graph/generated/generated.go

Lines changed: 131 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/model/models_gen.go

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)