added basic token auth draft for any graphql query
This commit is contained in:
parent
0a4a793d39
commit
d91e0b7b6e
@ -1,5 +1,6 @@
|
|||||||
serve:
|
serve:
|
||||||
endpoint: /api/graphql
|
endpoint: /api/graphql
|
||||||
|
additionalEnvelopPlugins: "./src/envelopePlugin.ts"
|
||||||
sources:
|
sources:
|
||||||
- name: Gitea
|
- name: Gitea
|
||||||
handler:
|
handler:
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@directus/sdk": "^11.0.1",
|
"@directus/sdk": "^11.0.1",
|
||||||
|
"@envelop/generic-auth": "^6.0.0",
|
||||||
"@graphql-mesh/cli": "^0.85.1",
|
"@graphql-mesh/cli": "^0.85.1",
|
||||||
"@graphql-mesh/graphql": "^0.95.1",
|
"@graphql-mesh/graphql": "^0.95.1",
|
||||||
"@graphql-mesh/openapi": "^0.94.7",
|
"@graphql-mesh/openapi": "^0.94.7",
|
||||||
|
16
pnpm-lock.yaml
generated
16
pnpm-lock.yaml
generated
@ -4,6 +4,9 @@ dependencies:
|
|||||||
'@directus/sdk':
|
'@directus/sdk':
|
||||||
specifier: ^11.0.1
|
specifier: ^11.0.1
|
||||||
version: 11.0.1
|
version: 11.0.1
|
||||||
|
'@envelop/generic-auth':
|
||||||
|
specifier: ^6.0.0
|
||||||
|
version: 6.0.0(@envelop/core@4.0.0)(graphql@16.7.1)
|
||||||
'@graphql-mesh/cli':
|
'@graphql-mesh/cli':
|
||||||
specifier: ^0.85.1
|
specifier: ^0.85.1
|
||||||
version: 0.85.1(@babel/core@7.22.8)(@types/node@20.4.1)(graphql-tag@2.12.6)(graphql-yoga@4.0.3)(graphql@16.7.1)(react-native@0.72.3)
|
version: 0.85.1(@babel/core@7.22.8)(@types/node@20.4.1)(graphql-tag@2.12.6)(graphql-yoga@4.0.3)(graphql@16.7.1)(react-native@0.72.3)
|
||||||
@ -1681,6 +1684,19 @@ packages:
|
|||||||
tslib: 2.6.0
|
tslib: 2.6.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/@envelop/generic-auth@6.0.0(@envelop/core@4.0.0)(graphql@16.7.1):
|
||||||
|
resolution: {integrity: sha512-retM3YQPuUyLzhFR7x1E3lzGW8uh/Rp4m9DmCfdP35mHKL8jijJP8KbvLZb5WmSkVemt2L9ilP5m3opOy/2BiQ==}
|
||||||
|
engines: {node: '>=16.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
'@envelop/core': ^4.0.0
|
||||||
|
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
|
||||||
|
dependencies:
|
||||||
|
'@envelop/core': 4.0.0
|
||||||
|
'@envelop/extended-validation': 3.0.0(@envelop/core@4.0.0)(graphql@16.7.1)
|
||||||
|
graphql: 16.7.1
|
||||||
|
tslib: 2.6.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@envelop/types@4.0.0:
|
/@envelop/types@4.0.0:
|
||||||
resolution: {integrity: sha512-dmBK16VVfKCkqYYemvE+gt1cPBP0d9CbYO4yjNhSSYy9K+w6+Lw48wOLK238mSR339PNAvwj/JW/qzNy2llggA==}
|
resolution: {integrity: sha512-dmBK16VVfKCkqYYemvE+gt1cPBP0d9CbYO4yjNhSSYy9K+w6+Lw48wOLK238mSR339PNAvwj/JW/qzNy2llggA==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
|
37
src/envelopePlugin.ts
Normal file
37
src/envelopePlugin.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { useGenericAuth } from '@envelop/generic-auth'
|
||||||
|
import { MeshPlugin } from '@graphql-mesh/types'
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
require('dotenv').config({ path: path.resolve(__dirname, '../.env.local') });
|
||||||
|
|
||||||
|
|
||||||
|
type UserType = {
|
||||||
|
id: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const resolveUserFn = async context => {
|
||||||
|
const authHeader = context.req.headers.authorization;
|
||||||
|
if (authHeader !== "token123") {
|
||||||
|
console.error('Failed to validate token')
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
// If the token is valid, return the user
|
||||||
|
// Replace this with your actual user fetching logic
|
||||||
|
return { id: 'user1' };
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateUser = params => {
|
||||||
|
if (!params.user) {
|
||||||
|
return new Error(`Unauthenticated!`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const plugins: MeshPlugin = [
|
||||||
|
useGenericAuth({
|
||||||
|
resolveUserFn,
|
||||||
|
validateUser,
|
||||||
|
mode: 'protect-all'
|
||||||
|
})
|
||||||
|
]
|
||||||
|
|
||||||
|
export default plugins
|
Reference in New Issue
Block a user