Skip to content

Commit dbbe36f

Browse files
authored
Merge pull request #154 from MedvedewEM/enhancement/access_token_expiry_time
enhancement: add access_token_expiry_time env variable
2 parents 41b5f00 + 819dd57 commit dbbe36f

File tree

19 files changed

+163
-13
lines changed

19 files changed

+163
-13
lines changed

dashboard/src/constants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export const LOGO_URL =
22
'https://user-images.githubusercontent.com/6964334/147834043-fc384cab-e7ca-40f8-9663-38fc25fd5f3a.png';
33

44
export const TextInputType = {
5+
ACCESS_TOKEN_EXPIRY_TIME: 'ACCESS_TOKEN_EXPIRY_TIME',
56
CLIENT_ID: 'CLIENT_ID',
67
GOOGLE_CLIENT_ID: 'GOOGLE_CLIENT_ID',
78
GITHUB_CLIENT_ID: 'GITHUB_CLIENT_ID',
@@ -125,4 +126,5 @@ export interface envVarTypes {
125126
DATABASE_NAME: string;
126127
DATABASE_TYPE: string;
127128
DATABASE_URL: string;
129+
ACCESS_TOKEN_EXPIRY_TIME: string;
128130
}

dashboard/src/graphql/queries/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export const EnvVariablesQuery = `
5353
DATABASE_NAME,
5454
DATABASE_TYPE,
5555
DATABASE_URL,
56+
ACCESS_TOKEN_EXPIRY_TIME,
5657
}
5758
}
5859
`;

dashboard/src/pages/Environment.tsx

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ export default function Environment() {
8585
DATABASE_NAME: '',
8686
DATABASE_TYPE: '',
8787
DATABASE_URL: '',
88+
ACCESS_TOKEN_EXPIRY_TIME: '',
8889
});
8990

9091
const [fieldVisibility, setFieldVisibility] = React.useState<
@@ -600,19 +601,35 @@ export default function Environment() {
600601
</Stack>
601602
<Divider marginTop="2%" marginBottom="2%" />
602603
<Text fontSize="md" paddingTop="2%" fontWeight="bold">
603-
Custom Access Token Scripts
604+
Access Token
604605
</Text>
605606
<Stack spacing={6} padding="2% 0%">
606607
<Flex>
607-
<Center w="100%">
608+
<Flex w="30%" justifyContent="start" alignItems="center">
609+
<Text fontSize="sm">Access Token Expiry Time:</Text>
610+
</Flex>
611+
<Flex w="70%">
608612
<InputField
613+
variables={envVariables}
614+
setVariables={setEnvVariables}
615+
inputType={TextInputType.ACCESS_TOKEN_EXPIRY_TIME}
616+
placeholder="0h15m0s"
617+
/>
618+
</Flex>
619+
</Flex>
620+
<Flex>
621+
<Flex w="30%" justifyContent="start" alignItems="center">
622+
<Text fontSize="sm">Custom Access Token Scripts:</Text>
623+
</Flex>
624+
<Flex w="70%">
625+
<InputField
609626
variables={envVariables}
610627
setVariables={setEnvVariables}
611628
inputType={TextAreaInputType.CUSTOM_ACCESS_TOKEN_SCRIPT}
612629
placeholder="Add script here"
613630
minH="25vh"
614631
/>
615-
</Center>
632+
</Flex>
616633
</Flex>
617634
</Stack>
618635
<Divider marginTop="2%" marginBottom="2%" />

server/constants/env.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ const (
2121
// EnvKeyPort key for env variable PORT
2222
EnvKeyPort = "PORT"
2323

24+
// EnvKeyAccessTokenExpiryTime key for env variable ACCESS_TOKEN_EXPIRY_TIME
25+
EnvKeyAccessTokenExpiryTime = "ACCESS_TOKEN_EXPIRY_TIME"
2426
// EnvKeyAdminSecret key for env variable ADMIN_SECRET
2527
EnvKeyAdminSecret = "ADMIN_SECRET"
2628
// EnvKeyDatabaseType key for env variable DATABASE_TYPE

server/env/env.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ func InitAllEnv() error {
120120
}
121121
}
122122

123+
if envData.StringEnv[constants.EnvKeyAccessTokenExpiryTime] == "" {
124+
envData.StringEnv[constants.EnvKeyAccessTokenExpiryTime] = os.Getenv(constants.EnvKeyAccessTokenExpiryTime)
125+
}
126+
123127
if envData.StringEnv[constants.EnvKeyAdminSecret] == "" {
124128
envData.StringEnv[constants.EnvKeyAdminSecret] = os.Getenv(constants.EnvKeyAdminSecret)
125129
}

server/graph/generated/generated.go

Lines changed: 52 additions & 0 deletions
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: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/schema.graphqls

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ type Response {
8787
}
8888

8989
type Env {
90+
ACCESS_TOKEN_EXPIRY_TIME: String
9091
ADMIN_SECRET: String
9192
DATABASE_NAME: String!
9293
DATABASE_URL: String!
@@ -138,6 +139,7 @@ type GenerateJWTKeysResponse {
138139
}
139140

140141
input UpdateEnvInput {
142+
ACCESS_TOKEN_EXPIRY_TIME: String
141143
ADMIN_SECRET: String
142144
CUSTOM_ACCESS_TOKEN_SCRIPT: String
143145
OLD_ADMIN_SECRET: String

server/handlers/authorize.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"net/http"
66
"strconv"
77
"strings"
8+
"time"
89

910
"github.com/authorizerdev/authorizer/server/constants"
1011
"github.com/authorizerdev/authorizer/server/cookie"
@@ -279,7 +280,11 @@ func AuthorizeHandler() gin.HandlerFunc {
279280
sessionstore.SetState(authToken.FingerPrintHash, authToken.FingerPrint+"@"+user.ID)
280281
sessionstore.SetState(authToken.AccessToken.Token, authToken.FingerPrint+"@"+user.ID)
281282
cookie.SetSession(gc, authToken.FingerPrintHash)
282-
expiresIn := int64(1800)
283+
284+
expiresIn := authToken.AccessToken.ExpiresAt - time.Now().Unix()
285+
if expiresIn <= 0 {
286+
expiresIn = 1
287+
}
283288

284289
// used of query mode
285290
params := "access_token=" + authToken.AccessToken.Token + "&token_type=bearer&expires_in=" + strconv.FormatInt(expiresIn, 10) + "&state=" + state + "&id_token=" + authToken.IDToken.Token

server/handlers/oauth_callback.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,12 @@ func OAuthCallbackHandler() gin.HandlerFunc {
157157
if err != nil {
158158
c.JSON(500, gin.H{"error": err.Error()})
159159
}
160-
expiresIn := int64(1800)
160+
161+
expiresIn := authToken.AccessToken.ExpiresAt - time.Now().Unix()
162+
if expiresIn <= 0 {
163+
expiresIn = 1
164+
}
165+
161166
params := "access_token=" + authToken.AccessToken.Token + "&token_type=bearer&expires_in=" + strconv.FormatInt(expiresIn, 10) + "&state=" + stateValue + "&id_token=" + authToken.IDToken.Token
162167

163168
cookie.SetSession(c, authToken.FingerPrintHash)

0 commit comments

Comments
 (0)