mirror of
https://github.com/standardnotes/server
synced 2026-07-14 00:01:54 -04:00
* wip: fix variable name * wip: remove redundant middleware in auth * fix: auth middleware refactor * fix(auth): fetching user for key params * fix(auth): specs * fix(auth): registering session controller endpoints
58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import { TimerInterface } from '@standardnotes/time'
|
|
import { NextFunction, Response } from 'express'
|
|
import { inject, injectable } from 'inversify'
|
|
import { Logger } from 'winston'
|
|
|
|
import { TYPES } from '../Bootstrap/Types'
|
|
import { CrossServiceTokenCacheInterface } from '../Service/Cache/CrossServiceTokenCacheInterface'
|
|
import { ServiceProxyInterface } from '../Service/Http/ServiceProxyInterface'
|
|
import { AuthMiddleware } from './AuthMiddleware'
|
|
|
|
@injectable()
|
|
export class RequiredCrossServiceTokenMiddleware extends AuthMiddleware {
|
|
constructor(
|
|
@inject(TYPES.ServiceProxy) serviceProxy: ServiceProxyInterface,
|
|
@inject(TYPES.AUTH_JWT_SECRET) jwtSecret: string,
|
|
@inject(TYPES.CROSS_SERVICE_TOKEN_CACHE_TTL) crossServiceTokenCacheTTL: number,
|
|
@inject(TYPES.CrossServiceTokenCache) crossServiceTokenCache: CrossServiceTokenCacheInterface,
|
|
@inject(TYPES.Timer) timer: TimerInterface,
|
|
@inject(TYPES.Logger) logger: Logger,
|
|
) {
|
|
super(serviceProxy, jwtSecret, crossServiceTokenCacheTTL, crossServiceTokenCache, timer, logger)
|
|
}
|
|
|
|
protected override handleSessionValidationResponse(
|
|
authResponse: { status: number; data: unknown; headers: { contentType: string } },
|
|
response: Response,
|
|
_next: NextFunction,
|
|
): boolean {
|
|
if (authResponse.status > 200) {
|
|
response.setHeader('content-type', authResponse.headers.contentType)
|
|
response.status(authResponse.status).send(authResponse.data)
|
|
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
protected override handleMissingAuthHeader(
|
|
authHeaderValue: string | undefined,
|
|
response: Response,
|
|
_next: NextFunction,
|
|
): boolean {
|
|
if (!authHeaderValue) {
|
|
response.status(401).send({
|
|
error: {
|
|
tag: 'invalid-auth',
|
|
message: 'Invalid login credentials.',
|
|
},
|
|
})
|
|
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
}
|