Skip to content

Commit 94883d6

Browse files
committed
code cleanup
1 parent c22bb92 commit 94883d6

4 files changed

Lines changed: 30 additions & 4 deletions

File tree

src/api/auth/authApiCommon.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { UserAuthToken, UserRefreshToken, UserRefreshTokenProps } from '@openforis/arena-core'
2+
import { Request, Response } from 'express'
3+
4+
export const jwtCookieName = 'jwt'
5+
export const jwtRefreshTokenCookieName = 'refreshToken'
6+
7+
export const extractRefreshTokenProps = (options: { req: Request }): UserRefreshTokenProps => {
8+
const { req } = options
9+
return { userAgent: req.headers['user-agent'] ?? '' }
10+
}
11+
12+
export const setAuthCookies = (options: {
13+
res: Response
14+
authToken: UserAuthToken
15+
refreshToken: UserRefreshToken
16+
}) => {
17+
const { res, authToken, refreshToken } = options
18+
const cookieOptions = { httpOnly: true, secure: true }
19+
res.cookie(jwtCookieName, authToken, { ...cookieOptions, expires: authToken.expiresAt })
20+
res.cookie(jwtRefreshTokenCookieName, refreshToken.token, { ...cookieOptions, expires: refreshToken.expiresAt })
21+
}

src/api/auth/authTokenRefresh.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { ServiceRegistry, ServiceType, UserAuthTokenService } from '@openforis/a
22

33
import { ExpressInitializer } from '../../server'
44
import { ApiEndpoint } from '../endpoint'
5-
import { jwtRefreshTokenCookieName, setAuthCookies } from './authApiCommon'
5+
import { extractRefreshTokenProps, jwtRefreshTokenCookieName, setAuthCookies } from './authApiCommon'
66

77
export const AuthTokenRefresh: ExpressInitializer = {
88
init: (express): void => {
@@ -14,7 +14,7 @@ export const AuthTokenRefresh: ExpressInitializer = {
1414

1515
const authTokenRotationResult = await userRefreshTokenService.rotateTokens({
1616
refreshToken,
17-
refreshTokenProps: { userAgent: req.headers['user-agent'] ?? '' },
17+
refreshTokenProps: extractRefreshTokenProps({ req }),
1818
})
1919
if (!authTokenRotationResult) {
2020
return res.status(401).json({ message: 'Invalid or revoked refresh token' })

src/api/auth/login.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { Logger } from '../../log'
1616
import { ExpressInitializer } from '../../server'
1717
import { Requests } from '../../utils'
1818
import { ApiEndpoint } from '../endpoint'
19-
import { setAuthCookies } from './authApiCommon'
19+
import { extractRefreshTokenProps, setAuthCookies } from './authApiCommon'
2020

2121
const logger = new Logger('AuthAPI')
2222

@@ -75,7 +75,7 @@ const authenticationSuccessful = (req: Request, res: Response, next: NextFunctio
7575

7676
const authToken = userAuthTokenService.createAuthToken({ userUuid })
7777

78-
const refreshTokenProps: UserRefreshTokenProps = { userAgent: req.headers['user-agent'] ?? '' }
78+
const refreshTokenProps: UserRefreshTokenProps = extractRefreshTokenProps({ req })
7979

8080
userAuthTokenService
8181
.createRefreshToken({ userUuid, props: refreshTokenProps })
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const jwtExpiresMs = 60 * 60 * 1000 // 1 hour
2+
export const jwtExpiresIn = '1h' // 1 hour
3+
4+
export const jwtRefresshTokenExpireMs = 7 * 24 * 60 * 60 * 1000 // 1 week
5+
export const jwtRefreshExpiresIn = '1w' // 1 week

0 commit comments

Comments
 (0)