added basic token auth draft for any graphql query
This commit is contained in:
parent
0a4a793d39
commit
d91e0b7b6e
@ -1,5 +1,6 @@
|
||||
serve:
|
||||
endpoint: /api/graphql
|
||||
additionalEnvelopPlugins: "./src/envelopePlugin.ts"
|
||||
sources:
|
||||
- name: Gitea
|
||||
handler:
|
||||
|
@ -11,6 +11,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@directus/sdk": "^11.0.1",
|
||||
"@envelop/generic-auth": "^6.0.0",
|
||||
"@graphql-mesh/cli": "^0.85.1",
|
||||
"@graphql-mesh/graphql": "^0.95.1",
|
||||
"@graphql-mesh/openapi": "^0.94.7",
|
||||
|
16
pnpm-lock.yaml
generated
16
pnpm-lock.yaml
generated
@ -4,6 +4,9 @@ dependencies:
|
||||
'@directus/sdk':
|
||||
specifier: ^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':
|
||||
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)
|
||||
@ -1681,6 +1684,19 @@ packages:
|
||||
tslib: 2.6.0
|
||||
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:
|
||||
resolution: {integrity: sha512-dmBK16VVfKCkqYYemvE+gt1cPBP0d9CbYO4yjNhSSYy9K+w6+Lw48wOLK238mSR339PNAvwj/JW/qzNy2llggA==}
|
||||
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