second commit
This commit is contained in:
18
src/index.ts
18
src/index.ts
@@ -4,6 +4,7 @@ import { createError } from '@directus/errors';
|
||||
import { getAccountabilityForToken } from './external-jwt/get-accountability-for-token';
|
||||
import type { Request } from 'express';
|
||||
import type { Accountability } from '@directus/types';
|
||||
import jwt from 'jsonwebtoken';
|
||||
|
||||
|
||||
const InvalidTokenError = createError('INVALID_TOKEN_ERROR', 'Could not validate external JWT token', 500);
|
||||
@@ -13,13 +14,22 @@ export default defineHook(({ filter }) => {
|
||||
|
||||
// get all configuration
|
||||
|
||||
filter('authenticate', (accountability, event, context) => {
|
||||
filter('authenticate', (defaultAccountability, event, context) => {
|
||||
let req = <Request>event['req'];
|
||||
let account = <Accountability>accountability;
|
||||
if(!req.token) return defaultAccountability;
|
||||
|
||||
if(!req.token) return accountability;
|
||||
if(!context.database) {
|
||||
return defaultAccountability
|
||||
}
|
||||
|
||||
return getAccountabilityForToken(req.token, account)
|
||||
const decodedToken = jwt.decode(req.token);
|
||||
if(typeof decodedToken === 'string') return defaultAccountability; // if token is not a jwt, let directus handle it
|
||||
if(decodedToken?.iss == 'directus') return defaultAccountability; // if token issued by directus, let directus handle it
|
||||
|
||||
|
||||
|
||||
|
||||
return getAccountabilityForToken(req.token, decodedToken?.iss, context.accountability, context.database)
|
||||
});
|
||||
|
||||
filter('auth.jwt', (status, user, provider) => {
|
||||
|
||||
Reference in New Issue
Block a user