0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-02-17 22:04:19 -05:00

fix(core): snakecase OIDC client metadata keys (#127)

This commit is contained in:
Gao Sun 2021-10-12 17:27:11 +08:00 committed by GitHub
parent 9aa4caa826
commit 5f60fe491a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 8 deletions

View file

@ -40,6 +40,7 @@
"p-retry": "^4.6.1",
"slonik": "^23.8.3",
"slonik-interceptor-preset": "^1.2.10",
"snakecase-keys": "^5.1.0",
"zod": "^3.8.1"
},
"devDependencies": {

View file

@ -1,6 +1,7 @@
import { ApplicationDBEntry } from '@logto/schemas';
import dayjs from 'dayjs';
import { AdapterFactory, AllClientMetadata } from 'oidc-provider';
import snakecaseKeys from 'snakecase-keys';
import { findApplicationById } from '@/queries/application';
import {
@ -15,16 +16,19 @@ import {
export default function postgresAdapter(modelName: string): ReturnType<AdapterFactory> {
if (modelName === 'Client') {
const reject = async () => Promise.reject(new Error('Not implemented'));
const tranpileClient = ({ id, oidcClientMetadata }: ApplicationDBEntry): AllClientMetadata => ({
const transpileClient = ({
id,
oidcClientMetadata,
}: ApplicationDBEntry): AllClientMetadata => ({
client_id: id,
grant_types: ['authorization_code', 'refresh_token'],
token_endpoint_auth_method: 'none',
...oidcClientMetadata,
...snakecaseKeys(oidcClientMetadata),
});
return {
upsert: reject,
find: async (id) => tranpileClient(await findApplicationById(id)),
find: async (id) => transpileClient(await findApplicationById(id)),
findByUserCode: reject,
findByUid: reject,
consume: reject,

28
pnpm-lock.yaml generated
View file

@ -61,6 +61,7 @@ importers:
prettier: ^2.3.2
slonik: ^23.8.3
slonik-interceptor-preset: ^1.2.10
snakecase-keys: ^5.1.0
ts-jest: ^27.0.5
tsc-watch: ^4.4.0
typescript: ^4.3.5
@ -90,6 +91,7 @@ importers:
p-retry: 4.6.1
slonik: 23.8.5
slonik-interceptor-preset: 1.2.10
snakecase-keys: 5.1.0
zod: 3.8.1
devDependencies:
'@silverhand/eslint-config': 0.2.2_aff669e8eb0d21fc4e2068e6112ef4d0
@ -6654,7 +6656,6 @@ packages:
dependencies:
no-case: 3.0.4
tslib: 2.3.0
dev: true
/dot-prop/5.3.0:
resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
@ -11074,7 +11075,6 @@ packages:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
tslib: 2.3.0
dev: true
/lowercase-keys/1.0.1:
resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==}
@ -11189,7 +11189,6 @@ packages:
/map-obj/4.2.1:
resolution: {integrity: sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==}
engines: {node: '>=8'}
dev: true
/map-stream/0.1.0:
resolution: {integrity: sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=}
@ -11729,7 +11728,6 @@ packages:
dependencies:
lower-case: 2.0.2
tslib: 2.3.0
dev: true
/node-cleanup/2.1.2:
resolution: {integrity: sha1-esGavSl+Caf3KnFUXZUbUX5N3iw=}
@ -14956,6 +14954,22 @@ packages:
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
dev: true
/snake-case/3.0.4:
resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
dependencies:
dot-case: 3.0.4
tslib: 2.3.0
dev: false
/snakecase-keys/5.1.0:
resolution: {integrity: sha512-RG6LPYD7nz2CHLY+8LqeBGftuNF0XGX1Q77t3d+vy+zZg0Jxr/y+9ji5Gss+8pyuUGymTEj6L/9fBvY6Jp5Thg==}
engines: {node: '>=12'}
dependencies:
map-obj: 4.2.1
snake-case: 3.0.4
type-fest: 2.5.0
dev: false
/snapdragon-node/2.1.1:
resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
engines: {node: '>=0.10.0'}
@ -16104,7 +16118,6 @@ packages:
/tslib/2.3.0:
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
dev: true
/tsscmp/1.0.6:
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
@ -16186,6 +16199,11 @@ packages:
resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
engines: {node: '>=8'}
/type-fest/2.5.0:
resolution: {integrity: sha512-wB5vE+XXZ2g2mDRo18yZMae1joUhquomLTm+BkxeuRHnwmrNWzVPNrFah9z7pjsKNiVAaJL33+uQbgbPSARyqw==}
engines: {node: '>=12.20'}
dev: false
/type-is/1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}