@authup/server-core 1.0.0-beta.59 → 1.0.0-beta.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/database/domains/client/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/client/entity.mjs +58 -30
- package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/client-permission/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/client-permission/entity.mjs +48 -24
- package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/client-role/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/client-role/entity.mjs +37 -17
- package/dist/adapters/database/domains/client-role/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/client-scope/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/client-scope/entity.mjs +30 -14
- package/dist/adapters/database/domains/client-scope/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/consent/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/consent/entity.mjs +34 -18
- package/dist/adapters/database/domains/consent/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/event/entity.d.ts +1 -0
- package/dist/adapters/database/domains/event/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/event/entity.mjs +48 -23
- package/dist/adapters/database/domains/event/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/identity-provider/entity.mjs +43 -23
- package/dist/adapters/database/domains/identity-provider/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-account/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/identity-provider-account/entity.mjs +50 -22
- package/dist/adapters/database/domains/identity-provider-account/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs +14 -6
- package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs +5 -1
- package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs +18 -6
- package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-role-mapping/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs +34 -14
- package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/key/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/key/entity.mjs +35 -19
- package/dist/adapters/database/domains/key/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/permission/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/permission/entity.mjs +35 -19
- package/dist/adapters/database/domains/permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/permission-policy/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/permission-policy/entity.mjs +37 -17
- package/dist/adapters/database/domains/permission-policy/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/policy/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/policy/entity.mjs +51 -27
- package/dist/adapters/database/domains/policy/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/policy-attribute/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/policy-attribute/entity.mjs +14 -6
- package/dist/adapters/database/domains/policy-attribute/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/realm/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/realm/entity.mjs +36 -20
- package/dist/adapters/database/domains/realm/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/role/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/role/entity.mjs +44 -24
- package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/role-attribute/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/role-attribute/entity.mjs +30 -14
- package/dist/adapters/database/domains/role-attribute/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/role-permission/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/role-permission/entity.mjs +45 -21
- package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/scope/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/scope/entity.mjs +35 -19
- package/dist/adapters/database/domains/scope/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/session/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/session/entity.mjs +63 -31
- package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/session-token/entity.d.ts +4 -1
- package/dist/adapters/database/domains/session-token/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/session-token/entity.mjs +40 -11
- package/dist/adapters/database/domains/session-token/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/trust-anchor/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/trust-anchor/entity.mjs +25 -13
- package/dist/adapters/database/domains/trust-anchor/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/user/entity.mjs +58 -34
- package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user-attribute/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/user-attribute/entity.mjs +27 -11
- package/dist/adapters/database/domains/user-attribute/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user-authenticator/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/user-authenticator/entity.mjs +43 -23
- package/dist/adapters/database/domains/user-authenticator/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user-permission/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/user-permission/entity.mjs +45 -21
- package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user-role/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/user-role/entity.mjs +37 -17
- package/dist/adapters/database/domains/user-role/entity.mjs.map +1 -1
- package/dist/adapters/database/errors/driver.d.ts +9 -0
- package/dist/adapters/database/errors/driver.d.ts.map +1 -1
- package/dist/adapters/database/errors/driver.mjs +20 -1
- package/dist/adapters/database/errors/driver.mjs.map +1 -1
- package/dist/adapters/database/errors/index.mjs +2 -2
- package/dist/adapters/database/helpers/index.mjs +2 -2
- package/dist/adapters/database/helpers/is-supported.d.ts +7 -0
- package/dist/adapters/database/helpers/is-supported.d.ts.map +1 -1
- package/dist/adapters/database/helpers/is-supported.mjs +9 -1
- package/dist/adapters/database/helpers/is-supported.mjs.map +1 -1
- package/dist/adapters/database/index.mjs +3 -3
- package/dist/adapters/database/migrations/mysql/1785871780234-AlignSchemaWithEntityMetadata.d.ts +66 -0
- package/dist/adapters/database/migrations/mysql/1785871780234-AlignSchemaWithEntityMetadata.d.ts.map +1 -0
- package/dist/adapters/database/migrations/mysql/1785871780234-AlignSchemaWithEntityMetadata.mjs +181 -0
- package/dist/adapters/database/migrations/mysql/1785871780234-AlignSchemaWithEntityMetadata.mjs.map +1 -0
- package/dist/adapters/database/migrations/mysql/1786436332251-QueryIndexes.d.ts +44 -0
- package/dist/adapters/database/migrations/mysql/1786436332251-QueryIndexes.d.ts.map +1 -0
- package/dist/adapters/database/migrations/mysql/1786436332251-QueryIndexes.mjs +1294 -0
- package/dist/adapters/database/migrations/mysql/1786436332251-QueryIndexes.mjs.map +1 -0
- package/dist/adapters/database/migrations/postgres/1785871780234-AlignSchemaWithEntityMetadata.d.ts +43 -0
- package/dist/adapters/database/migrations/postgres/1785871780234-AlignSchemaWithEntityMetadata.d.ts.map +1 -0
- package/dist/adapters/database/migrations/postgres/1785871780234-AlignSchemaWithEntityMetadata.mjs +120 -0
- package/dist/adapters/database/migrations/postgres/1785871780234-AlignSchemaWithEntityMetadata.mjs.map +1 -0
- package/dist/adapters/database/migrations/postgres/1786436332251-QueryIndexes.d.ts +44 -0
- package/dist/adapters/database/migrations/postgres/1786436332251-QueryIndexes.d.ts.map +1 -0
- package/dist/adapters/database/migrations/postgres/1786436332251-QueryIndexes.mjs +987 -0
- package/dist/adapters/database/migrations/postgres/1786436332251-QueryIndexes.mjs.map +1 -0
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts +22 -4
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +190 -47
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/types.d.ts +5 -2
- package/dist/adapters/http/controllers/entities/identity-provider/types.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider-account/index.d.ts.map +1 -0
- package/dist/adapters/http/controllers/entities/identity-provider-account/index.mjs +5 -0
- package/dist/adapters/http/controllers/entities/identity-provider-account/module.d.ts +15 -0
- package/dist/adapters/http/controllers/entities/identity-provider-account/module.d.ts.map +1 -0
- package/dist/adapters/http/controllers/entities/identity-provider-account/module.mjs +94 -0
- package/dist/adapters/http/controllers/entities/identity-provider-account/module.mjs.map +1 -0
- package/dist/adapters/http/controllers/entities/index.d.ts +2 -0
- package/dist/adapters/http/controllers/entities/index.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/index.mjs +5 -1
- package/dist/adapters/http/controllers/entities/session-token/index.d.ts +2 -0
- package/dist/adapters/http/controllers/entities/session-token/index.d.ts.map +1 -0
- package/dist/adapters/http/controllers/entities/session-token/index.mjs +5 -0
- package/dist/adapters/http/controllers/entities/session-token/module.d.ts +23 -0
- package/dist/adapters/http/controllers/entities/session-token/module.d.ts.map +1 -0
- package/dist/adapters/http/controllers/entities/session-token/module.mjs +112 -0
- package/dist/adapters/http/controllers/entities/session-token/module.mjs.map +1 -0
- package/dist/adapters/http/controllers/index.mjs +3 -1
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs +1 -0
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs.map +1 -1
- package/dist/adapters/http/index.mjs +3 -1
- package/dist/adapters/http/middleware/built-in/error.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/error.mjs +4 -3
- package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
- package/dist/adapters/http/request/event-context.d.ts.map +1 -1
- package/dist/adapters/http/request/event-context.mjs +2 -0
- package/dist/adapters/http/request/event-context.mjs.map +1 -1
- package/dist/app/index.mjs +4 -2
- package/dist/app/modules/database/index.mjs +2 -1
- package/dist/app/modules/database/repositories/identity-provider-account/index.d.ts +2 -0
- package/dist/app/modules/database/repositories/identity-provider-account/index.d.ts.map +1 -0
- package/dist/app/modules/database/repositories/identity-provider-account/index.mjs +5 -0
- package/dist/app/modules/database/repositories/identity-provider-account/repository.d.ts +18 -0
- package/dist/app/modules/database/repositories/identity-provider-account/repository.d.ts.map +1 -0
- package/dist/app/modules/database/repositories/identity-provider-account/repository.mjs +69 -0
- package/dist/app/modules/database/repositories/identity-provider-account/repository.mjs.map +1 -0
- package/dist/app/modules/database/repositories/index.d.ts +1 -0
- package/dist/app/modules/database/repositories/index.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/index.mjs +3 -1
- package/dist/app/modules/database/repositories/key/repository.d.ts +23 -0
- package/dist/app/modules/database/repositories/key/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/key/repository.mjs +39 -3
- package/dist/app/modules/database/repositories/key/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/schema-validation.d.ts +14 -6
- package/dist/app/modules/database/repositories/schema-validation.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/schema-validation.mjs +18 -6
- package/dist/app/modules/database/repositories/schema-validation.mjs.map +1 -1
- package/dist/app/modules/http/modules/controller.d.ts +3 -1
- package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
- package/dist/app/modules/http/modules/controller.mjs +39 -2
- package/dist/app/modules/http/modules/controller.mjs.map +1 -1
- package/dist/app/modules/identity/constants.d.ts +2 -1
- package/dist/app/modules/identity/constants.d.ts.map +1 -1
- package/dist/app/modules/identity/constants.mjs +1 -0
- package/dist/app/modules/identity/constants.mjs.map +1 -1
- package/dist/app/modules/identity/index.mjs +3 -2
- package/dist/app/modules/identity/module.d.ts.map +1 -1
- package/dist/app/modules/identity/module.mjs +9 -2
- package/dist/app/modules/identity/module.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/constants.d.ts +4 -0
- package/dist/app/modules/identity/repositories/constants.d.ts.map +1 -0
- package/dist/app/modules/identity/repositories/constants.mjs +12 -0
- package/dist/app/modules/identity/repositories/constants.mjs.map +1 -0
- package/dist/app/modules/identity/repositories/index.d.ts +1 -0
- package/dist/app/modules/identity/repositories/index.d.ts.map +1 -1
- package/dist/app/modules/identity/repositories/index.mjs +3 -2
- package/dist/app/modules/identity/repositories/provider/index.d.ts +1 -1
- package/dist/app/modules/identity/repositories/provider/index.d.ts.map +1 -1
- package/dist/app/modules/identity/repositories/provider/index.mjs +2 -3
- package/dist/app/modules/identity/repositories/provider/link.d.ts +9 -0
- package/dist/app/modules/identity/repositories/provider/link.d.ts.map +1 -0
- package/dist/app/modules/identity/repositories/provider/link.mjs +34 -0
- package/dist/app/modules/identity/repositories/provider/link.mjs.map +1 -0
- package/dist/app/modules/index.mjs +4 -2
- package/dist/app/modules/logger/module.d.ts.map +1 -1
- package/dist/app/modules/logger/module.mjs +1 -0
- package/dist/app/modules/logger/module.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts +25 -1
- package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts.map +1 -1
- package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +70 -1
- package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -1
- package/dist/app/modules/provisioning/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/module.mjs +3 -1
- package/dist/app/modules/provisioning/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/sources/default/module.mjs +1 -0
- package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
- package/dist/core/entities/client/schema.d.ts.map +1 -1
- package/dist/core/entities/client/schema.mjs +29 -10
- package/dist/core/entities/client/schema.mjs.map +1 -1
- package/dist/core/entities/client-permission/schema.d.ts.map +1 -1
- package/dist/core/entities/client-permission/schema.mjs +29 -6
- package/dist/core/entities/client-permission/schema.mjs.map +1 -1
- package/dist/core/entities/client-role/schema.d.ts.map +1 -1
- package/dist/core/entities/client-role/schema.mjs +27 -6
- package/dist/core/entities/client-role/schema.mjs.map +1 -1
- package/dist/core/entities/client-scope/schema.d.ts.map +1 -1
- package/dist/core/entities/client-scope/schema.mjs +19 -5
- package/dist/core/entities/client-scope/schema.mjs.map +1 -1
- package/dist/core/entities/consent/schema.d.ts.map +1 -1
- package/dist/core/entities/consent/schema.mjs +28 -6
- package/dist/core/entities/consent/schema.mjs.map +1 -1
- package/dist/core/entities/event/entity-event-handler.d.ts.map +1 -1
- package/dist/core/entities/event/entity-event-handler.mjs +2 -0
- package/dist/core/entities/event/entity-event-handler.mjs.map +1 -1
- package/dist/core/entities/event/sanitize.d.ts.map +1 -1
- package/dist/core/entities/event/sanitize.mjs +7 -4
- package/dist/core/entities/event/sanitize.mjs.map +1 -1
- package/dist/core/entities/event/schema.d.ts.map +1 -1
- package/dist/core/entities/event/schema.mjs +45 -16
- package/dist/core/entities/event/schema.mjs.map +1 -1
- package/dist/core/entities/event/service.d.ts.map +1 -1
- package/dist/core/entities/event/service.mjs +2 -0
- package/dist/core/entities/event/service.mjs.map +1 -1
- package/dist/core/entities/event/types.d.ts +2 -0
- package/dist/core/entities/event/types.d.ts.map +1 -1
- package/dist/core/entities/identity-provider/schema.d.ts.map +1 -1
- package/dist/core/entities/identity-provider/schema.mjs +29 -11
- package/dist/core/entities/identity-provider/schema.mjs.map +1 -1
- package/dist/core/entities/identity-provider-account/error.d.ts +7 -0
- package/dist/core/entities/identity-provider-account/error.d.ts.map +1 -0
- package/dist/core/entities/identity-provider-account/error.mjs +24 -0
- package/dist/core/entities/identity-provider-account/error.mjs.map +1 -0
- package/dist/core/entities/identity-provider-account/index.d.ts +5 -0
- package/dist/core/entities/identity-provider-account/index.d.ts.map +1 -0
- package/dist/core/entities/identity-provider-account/index.mjs +8 -0
- package/dist/core/entities/identity-provider-account/schema.d.ts +3 -0
- package/dist/core/entities/identity-provider-account/schema.d.ts.map +1 -0
- package/dist/core/entities/identity-provider-account/schema.mjs +52 -0
- package/dist/core/entities/identity-provider-account/schema.mjs.map +1 -0
- package/dist/core/entities/identity-provider-account/service.d.ts +24 -0
- package/dist/core/entities/identity-provider-account/service.d.ts.map +1 -0
- package/dist/core/entities/identity-provider-account/service.mjs +129 -0
- package/dist/core/entities/identity-provider-account/service.mjs.map +1 -0
- package/dist/core/entities/identity-provider-account/types.d.ts +69 -0
- package/dist/core/entities/identity-provider-account/types.d.ts.map +1 -0
- package/dist/core/entities/identity-provider-account/types.mjs +17 -0
- package/dist/core/entities/identity-provider-account/types.mjs.map +1 -0
- package/dist/core/entities/identity-provider-role-mapping/schema.d.ts.map +1 -1
- package/dist/core/entities/identity-provider-role-mapping/schema.mjs +27 -6
- package/dist/core/entities/identity-provider-role-mapping/schema.mjs.map +1 -1
- package/dist/core/entities/index.d.ts +2 -0
- package/dist/core/entities/index.d.ts.map +1 -1
- package/dist/core/entities/index.mjs +9 -1
- package/dist/core/entities/key/schema.d.ts.map +1 -1
- package/dist/core/entities/key/schema.mjs +39 -17
- package/dist/core/entities/key/schema.mjs.map +1 -1
- package/dist/core/entities/key/service.d.ts.map +1 -1
- package/dist/core/entities/key/service.mjs +1 -0
- package/dist/core/entities/key/service.mjs.map +1 -1
- package/dist/core/entities/permission/schema.d.ts.map +1 -1
- package/dist/core/entities/permission/schema.mjs +34 -13
- package/dist/core/entities/permission/schema.mjs.map +1 -1
- package/dist/core/entities/permission-policy/schema.d.ts.map +1 -1
- package/dist/core/entities/permission-policy/schema.mjs +27 -6
- package/dist/core/entities/permission-policy/schema.mjs.map +1 -1
- package/dist/core/entities/policy/schema.d.ts.map +1 -1
- package/dist/core/entities/policy/schema.mjs +31 -12
- package/dist/core/entities/policy/schema.mjs.map +1 -1
- package/dist/core/entities/realm/schema.d.ts.map +1 -1
- package/dist/core/entities/realm/schema.mjs +26 -12
- package/dist/core/entities/realm/schema.mjs.map +1 -1
- package/dist/core/entities/role/schema.d.ts.map +1 -1
- package/dist/core/entities/role/schema.mjs +36 -14
- package/dist/core/entities/role/schema.mjs.map +1 -1
- package/dist/core/entities/role-attribute/schema.d.ts.map +1 -1
- package/dist/core/entities/role-attribute/schema.mjs +28 -14
- package/dist/core/entities/role-attribute/schema.mjs.map +1 -1
- package/dist/core/entities/role-permission/schema.d.ts.map +1 -1
- package/dist/core/entities/role-permission/schema.mjs +29 -6
- package/dist/core/entities/role-permission/schema.mjs.map +1 -1
- package/dist/core/entities/scope/schema.d.ts.map +1 -1
- package/dist/core/entities/scope/schema.mjs +28 -12
- package/dist/core/entities/scope/schema.mjs.map +1 -1
- package/dist/core/entities/session/schema.d.ts.map +1 -1
- package/dist/core/entities/session/schema.mjs +41 -9
- package/dist/core/entities/session/schema.mjs.map +1 -1
- package/dist/core/entities/session-token/index.d.ts +4 -0
- package/dist/core/entities/session-token/index.d.ts.map +1 -0
- package/dist/core/entities/session-token/index.mjs +6 -0
- package/dist/core/entities/session-token/schema.d.ts +12 -0
- package/dist/core/entities/session-token/schema.d.ts.map +1 -0
- package/dist/core/entities/session-token/schema.mjs +66 -0
- package/dist/core/entities/session-token/schema.mjs.map +1 -0
- package/dist/core/entities/session-token/service.d.ts +70 -0
- package/dist/core/entities/session-token/service.d.ts.map +1 -0
- package/dist/core/entities/session-token/service.mjs +216 -0
- package/dist/core/entities/session-token/service.mjs.map +1 -0
- package/dist/core/entities/session-token/types.d.ts +37 -0
- package/dist/core/entities/session-token/types.d.ts.map +1 -0
- package/dist/core/entities/session-token/types.mjs +4 -0
- package/dist/core/entities/trust-anchor/schema.d.ts.map +1 -1
- package/dist/core/entities/trust-anchor/schema.mjs +27 -13
- package/dist/core/entities/trust-anchor/schema.mjs.map +1 -1
- package/dist/core/entities/trust-anchor/service.d.ts.map +1 -1
- package/dist/core/entities/trust-anchor/service.mjs +1 -0
- package/dist/core/entities/trust-anchor/service.mjs.map +1 -1
- package/dist/core/entities/user/schema.d.ts.map +1 -1
- package/dist/core/entities/user/schema.mjs +29 -12
- package/dist/core/entities/user/schema.mjs.map +1 -1
- package/dist/core/entities/user-attribute/schema.d.ts.map +1 -1
- package/dist/core/entities/user-attribute/schema.mjs +28 -14
- package/dist/core/entities/user-attribute/schema.mjs.map +1 -1
- package/dist/core/entities/user-authenticator/schema.d.ts.map +1 -1
- package/dist/core/entities/user-authenticator/schema.mjs +29 -12
- package/dist/core/entities/user-authenticator/schema.mjs.map +1 -1
- package/dist/core/entities/user-authenticator/service.d.ts +2 -1
- package/dist/core/entities/user-authenticator/service.d.ts.map +1 -1
- package/dist/core/entities/user-authenticator/service.mjs +5 -0
- package/dist/core/entities/user-authenticator/service.mjs.map +1 -1
- package/dist/core/entities/user-authenticator/types.d.ts +7 -1
- package/dist/core/entities/user-authenticator/types.d.ts.map +1 -1
- package/dist/core/entities/user-authenticator/types.mjs.map +1 -1
- package/dist/core/entities/user-permission/schema.d.ts.map +1 -1
- package/dist/core/entities/user-permission/schema.mjs +29 -6
- package/dist/core/entities/user-permission/schema.mjs.map +1 -1
- package/dist/core/entities/user-role/schema.d.ts.map +1 -1
- package/dist/core/entities/user-role/schema.mjs +27 -6
- package/dist/core/entities/user-role/schema.mjs.map +1 -1
- package/dist/core/identity/index.mjs +3 -1
- package/dist/core/identity/provider/account/constants.d.ts +10 -0
- package/dist/core/identity/provider/account/constants.d.ts.map +1 -0
- package/dist/core/identity/provider/account/constants.mjs +16 -0
- package/dist/core/identity/provider/account/constants.mjs.map +1 -0
- package/dist/core/identity/provider/account/error.d.ts +7 -0
- package/dist/core/identity/provider/account/error.d.ts.map +1 -0
- package/dist/core/identity/provider/account/error.mjs +24 -0
- package/dist/core/identity/provider/account/error.mjs.map +1 -0
- package/dist/core/identity/provider/account/index.d.ts +2 -0
- package/dist/core/identity/provider/account/index.d.ts.map +1 -1
- package/dist/core/identity/provider/account/index.mjs +3 -1
- package/dist/core/identity/provider/account/module.d.ts +2 -0
- package/dist/core/identity/provider/account/module.d.ts.map +1 -1
- package/dist/core/identity/provider/account/module.mjs +30 -0
- package/dist/core/identity/provider/account/module.mjs.map +1 -1
- package/dist/core/identity/provider/account/types.d.ts +44 -7
- package/dist/core/identity/provider/account/types.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.d.ts +19 -0
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs +60 -3
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/oauth2/types.d.ts +9 -0
- package/dist/core/identity/provider/authentication/protocols/oauth2/types.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/open-id/module.d.ts +0 -3
- package/dist/core/identity/provider/authentication/protocols/open-id/module.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs +0 -17
- package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs.map +1 -1
- package/dist/core/identity/provider/index.mjs +3 -1
- package/dist/core/index.mjs +11 -2
- package/dist/core/oauth2/authorization/code-request/verifier/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +2 -1
- package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/module.mjs +2 -0
- package/dist/core/oauth2/authorization/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/state/types.d.ts +11 -0
- package/dist/core/oauth2/authorization/state/types.d.ts.map +1 -1
- package/dist/core/oauth2/end-session/service.mjs +2 -2
- package/dist/core/oauth2/end-session/service.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/authorize.d.ts.map +1 -1
- package/dist/core/oauth2/grant-types/authorize.mjs +1 -5
- package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/password.mjs +2 -5
- package/dist/core/oauth2/grant-types/password.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/refresh-token.d.ts.map +1 -1
- package/dist/core/oauth2/grant-types/refresh-token.mjs +37 -24
- package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
- package/dist/core/oauth2/index.mjs +3 -1
- package/dist/core/oauth2/mfa-login/module.d.ts.map +1 -1
- package/dist/core/oauth2/mfa-login/module.mjs +4 -7
- package/dist/core/oauth2/mfa-login/module.mjs.map +1 -1
- package/dist/core/oauth2/session-token/error.d.ts +36 -0
- package/dist/core/oauth2/session-token/error.d.ts.map +1 -0
- package/dist/core/oauth2/session-token/error.mjs +49 -0
- package/dist/core/oauth2/session-token/error.mjs.map +1 -0
- package/dist/core/oauth2/session-token/index.d.ts +1 -0
- package/dist/core/oauth2/session-token/index.d.ts.map +1 -1
- package/dist/core/oauth2/session-token/index.mjs +2 -1
- package/dist/core/oauth2/session-token/types.d.ts +40 -0
- package/dist/core/oauth2/session-token/types.d.ts.map +1 -1
- package/dist/core/oauth2/token/issuer/access/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/issuer/access/module.mjs +1 -0
- package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
- package/dist/core/oauth2/token/issuer/base.d.ts +1 -1
- package/dist/core/oauth2/token/issuer/base.d.ts.map +1 -1
- package/dist/core/oauth2/token/issuer/base.mjs.map +1 -1
- package/dist/core/oauth2/token/issuer/refresh/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/issuer/refresh/module.mjs +1 -0
- package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
- package/dist/core/query/index.mjs +2 -2
- package/dist/core/query/module.d.ts +19 -9
- package/dist/core/query/module.d.ts.map +1 -1
- package/dist/core/query/module.mjs +22 -10
- package/dist/core/query/module.mjs.map +1 -1
- package/dist/index.mjs +8 -4
- package/dist/swagger.json +961 -132
- package/dist/utils/error.d.ts +20 -3
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.mjs +102 -5
- package/dist/utils/error.mjs.map +1 -1
- package/dist/utils/index.mjs +2 -2
- package/package.json +23 -21
- package/dist/app/modules/identity/repositories/provider/account/index.d.ts.map +0 -1
- package/dist/app/modules/identity/repositories/provider/account/index.mjs +0 -5
- package/dist/app/modules/identity/repositories/provider/account/module.d.ts +0 -10
- package/dist/app/modules/identity/repositories/provider/account/module.d.ts.map +0 -1
- package/dist/app/modules/identity/repositories/provider/account/module.mjs +0 -28
- package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +0 -1
- /package/dist/{app/modules/identity/repositories/provider/account → adapters/http/controllers/entities/identity-provider-account}/index.d.ts +0 -0
|
@@ -47,6 +47,16 @@ const schemaMapping = {
|
|
|
47
47
|
}
|
|
48
48
|
const clientSchema = defineSchema({
|
|
49
49
|
name: EntityType.CLIENT,
|
|
50
|
+
indexes: [
|
|
51
|
+
["id"],
|
|
52
|
+
["name", "realmId"],
|
|
53
|
+
["displayName"],
|
|
54
|
+
["realmId"],
|
|
55
|
+
["active"],
|
|
56
|
+
["builtIn"],
|
|
57
|
+
["createdAt"],
|
|
58
|
+
["updatedAt"]
|
|
59
|
+
],
|
|
50
60
|
fields: {
|
|
51
61
|
default: [
|
|
52
62
|
"id",
|
|
@@ -73,20 +83,29 @@ const clientSchema = defineSchema({
|
|
|
73
83
|
allowed: ["secret"],
|
|
74
84
|
validateMany: createFieldsReadGate({ secret: secretReadGate })
|
|
75
85
|
},
|
|
76
|
-
filters: {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
filters: {
|
|
87
|
+
allowed: [
|
|
88
|
+
"id",
|
|
89
|
+
"name",
|
|
90
|
+
"displayName",
|
|
91
|
+
"realmId",
|
|
92
|
+
"active",
|
|
93
|
+
"builtIn"
|
|
94
|
+
],
|
|
95
|
+
indexed: true
|
|
96
|
+
},
|
|
81
97
|
relations: {
|
|
82
98
|
allowed: ["realm", "accessPolicy"],
|
|
83
99
|
validate: createRelationsReadGate(schemaMapping)
|
|
84
100
|
},
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
101
|
+
sorts: {
|
|
102
|
+
allowed: [
|
|
103
|
+
"id",
|
|
104
|
+
"createdAt",
|
|
105
|
+
"updatedAt"
|
|
106
|
+
],
|
|
107
|
+
indexed: true
|
|
108
|
+
},
|
|
90
109
|
pagination: { maxLimit: 50 },
|
|
91
110
|
schemaMapping
|
|
92
111
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":["and","defineSchema","eq","ne","or","EntityType","IdentityType","createFieldsReadGate","createRelationsReadGate","CLIENT_READ_PERMISSIONS","schemaMapping","realm","REALM","accessPolicy","POLICY","secretReadGate","actor","compiled","permissionEvaluator","compile","name","verdict","visible","push","condition","identity","type","CLIENT","data","id","clientSchema","fields","default","allowed","validateMany","secret","filters","relations","validate","
|
|
1
|
+
{"version":3,"file":"schema.mjs","names":["and","defineSchema","eq","ne","or","EntityType","IdentityType","createFieldsReadGate","createRelationsReadGate","CLIENT_READ_PERMISSIONS","schemaMapping","realm","REALM","accessPolicy","POLICY","secretReadGate","actor","compiled","permissionEvaluator","compile","name","verdict","visible","push","condition","identity","type","CLIENT","data","id","clientSchema","indexes","fields","default","allowed","validateMany","secret","filters","indexed","relations","validate","sorts","pagination","maxLimit"],"sources":["../../../../src/core/entities/client/schema.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ICondition, KeyValidationVerdict } from '@rapiq/core';\nimport {\n and,\n defineSchema,\n eq,\n ne,\n or,\n} from '@rapiq/core';\nimport type { Client } from '@authup/core-kit';\nimport { EntityType, IdentityType } from '@authup/core-kit';\nimport type { ActorContext } from '@authup/server-kit';\nimport { createFieldsReadGate } from '../../query/fields.ts';\nimport { createRelationsReadGate } from '../../query/relations.ts';\nimport { CLIENT_READ_PERMISSIONS } from './constants.ts';\n\nconst schemaMapping = { realm: EntityType.REALM, accessPolicy: EntityType.POLICY };\n\n/**\n * Per-row visibility gate for the `secret` column (issue #3322) —\n * schema-level, so it applies wherever the client schema governs a\n * projection: the `/clients` root AND the `include=client` paths of\n * client-permission / client-role / client-scope, which never run\n * `ClientService`'s read path.\n *\n * Only rows exposing a PLAINTEXT secret are guarded: `null`, hashed\n * and encrypted values stay visible to any actor that passed the read\n * pre-gate (the historical service semantics). A plaintext value is\n * additionally visible on the actor's OWN client row (the `getOne`\n * isMe bypass, list-shaped) and on rows the compiled permission\n * condition covers. A non-expressible (`post`) or settled-deny compile\n * yields no permission leg — fail closed for plaintext rows rather\n * than falling back to per-row evaluation.\n *\n * The outer `ne('realmId', null)` guard is semantically inert (clients\n * are realm-bound) but makes the condition fail closed on rows whose\n * gate columns were not fetched — an `ownOrNull` reach compiles to a\n * null-inclusive realm leg that would otherwise MATCH a missing\n * column. The SQL adapter force-selects every column the condition\n * reads (rapiq#830's operand projection), so this is defense in depth.\n */\nasync function secretReadGate(actor: ActorContext) : Promise<KeyValidationVerdict> {\n const compiled = await actor.permissionEvaluator.compile({ name: CLIENT_READ_PERMISSIONS });\n if (compiled.verdict === 'allow') {\n return true;\n }\n\n const visible : ICondition[] = [\n eq('secret', null),\n eq('secretHashed', true),\n eq('secretEncrypted', true),\n ];\n\n if (compiled.verdict === 'conditional') {\n visible.push(compiled.condition);\n }\n\n if (\n actor.identity &&\n actor.identity.type === IdentityType.CLIENT &&\n actor.identity.data.id\n ) {\n visible.push(eq('id', actor.identity.data.id));\n }\n\n return and(ne('realmId', null), or(...visible));\n}\n\nexport const clientSchema = defineSchema<Client>({\n name: EntityType.CLIENT,\n indexes: [\n ['id'],\n ['name', 'realmId'],\n ['displayName'],\n ['realmId'],\n ['active'],\n ['builtIn'],\n ['createdAt'],\n ['updatedAt'],\n ],\n fields: {\n default: [\n 'id',\n 'active',\n 'builtIn',\n 'name',\n 'displayName',\n 'description',\n 'secretHashed',\n 'secretEncrypted',\n 'baseUrl',\n 'rootUrl',\n 'redirectUri',\n 'postLogoutRedirectUri',\n 'grantTypes',\n 'scope',\n 'authMethod',\n 'tokenBindingMethod',\n 'accessPolicyId',\n 'realmId',\n 'updatedAt',\n 'createdAt',\n ],\n allowed: ['secret'],\n validateMany: createFieldsReadGate({ secret: secretReadGate }),\n },\n filters: { allowed: ['id', 'name', 'displayName', 'realmId', 'active', 'builtIn'], indexed: true },\n relations: { allowed: ['realm', 'accessPolicy'], validate: createRelationsReadGate(schemaMapping) },\n sorts: { allowed: ['id', 'createdAt', 'updatedAt'], indexed: true },\n pagination: { maxLimit: 50 },\n schemaMapping,\n});\n"],"mappings":";;;;;;;;;AAsBA,MAAMU,gBAAgB;CAAEC,OAAON,WAAWO;CAAOC,cAAcR,WAAWS;AAAO;;;;;;;;;;;;;;;;;;;;;;;GAyBjF,eAAeC,eAAeC,OAAmB;CAC7C,MAAMC,WAAW,MAAMD,MAAME,oBAAoBC,QAAQ,EAAEC,MAAMX,wBAAwB,CAAA;CACzF,IAAIQ,SAASI,YAAY,SACrB,OAAO;CAGX,MAAMC,UAAyB;EAC3BpB,GAAG,UAAU,IAAA;EACbA,GAAG,gBAAgB,IAAA;EACnBA,GAAG,mBAAmB,IAAA;CACzB;CAED,IAAIe,SAASI,YAAY,eACrBC,QAAQC,KAAKN,SAASO,SAAS;CAGnC,IACIR,MAAMS,YACNT,MAAMS,SAASC,SAASpB,aAAaqB,UACrCX,MAAMS,SAASG,KAAKC,IAEpBP,QAAQC,KAAKrB,GAAG,MAAMc,MAAMS,SAASG,KAAKC,EAAE,CAAA;CAGhD,OAAO7B,IAAIG,GAAG,WAAW,IAAA,GAAOC,GAAAA,GAAMkB,OAAAA,CAAAA;AAC1C;AAEA,MAAaQ,eAAe7B,aAAqB;CAC7CmB,MAAMf,WAAWsB;CACjBI,SAAS;EACL,CAAC,IAAK;EACN,CAAC,QAAQ,SAAU;EACnB,CAAC,aAAc;EACf,CAAC,SAAU;EACX,CAAC,QAAS;EACV,CAAC,SAAU;EACX,CAAC,WAAY;EACb,CAAC,WAAY;CAChB;CACDC,QAAQ;EACJC,SAAS;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACH;EACDC,SAAS,CAAC,QAAS;EACnBC,cAAc5B,qBAAqB,EAAE6B,QAAQrB,eAAe,CAAA;CAChE;CACAsB,SAAS;EAAEH,SAAS;GAAC;GAAM;GAAQ;GAAe;GAAW;GAAU;EAAU;EAAEI,SAAS;CAAK;CACjGC,WAAW;EAAEL,SAAS,CAAC,SAAS,cAAe;EAAEM,UAAUhC,wBAAwBE,aAAAA;CAAe;CAClG+B,OAAO;EAAEP,SAAS;GAAC;GAAM;GAAa;EAAY;EAAEI,SAAS;CAAK;CAClEI,YAAY,EAAEC,UAAU,GAAG;CAC3BjC;AACJ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client-permission/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client-permission/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD,eAAO,MAAM,sBAAsB,qDA+BjC,CAAC"}
|
|
@@ -11,6 +11,16 @@ const schemaMapping = {
|
|
|
11
11
|
};
|
|
12
12
|
const clientPermissionSchema = defineSchema({
|
|
13
13
|
name: EntityType.CLIENT_PERMISSION,
|
|
14
|
+
indexes: [
|
|
15
|
+
["id"],
|
|
16
|
+
["clientId", "permissionId"],
|
|
17
|
+
["permissionId"],
|
|
18
|
+
["clientRealmId"],
|
|
19
|
+
["permissionRealmId"],
|
|
20
|
+
["policyId"],
|
|
21
|
+
["createdAt"],
|
|
22
|
+
["updatedAt"]
|
|
23
|
+
],
|
|
14
24
|
fields: { default: [
|
|
15
25
|
"id",
|
|
16
26
|
"policyId",
|
|
@@ -22,16 +32,29 @@ const clientPermissionSchema = defineSchema({
|
|
|
22
32
|
"createdAt",
|
|
23
33
|
"updatedAt"
|
|
24
34
|
] },
|
|
25
|
-
filters: {
|
|
35
|
+
filters: {
|
|
36
|
+
allowed: [
|
|
37
|
+
"clientId",
|
|
38
|
+
"permissionId",
|
|
39
|
+
"id",
|
|
40
|
+
"clientRealmId",
|
|
41
|
+
"permissionRealmId",
|
|
42
|
+
"policyId"
|
|
43
|
+
],
|
|
44
|
+
indexed: true
|
|
45
|
+
},
|
|
26
46
|
relations: {
|
|
27
47
|
allowed: ["client", "permission"],
|
|
28
48
|
validate: createRelationsReadGate(schemaMapping)
|
|
29
49
|
},
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
50
|
+
sorts: {
|
|
51
|
+
allowed: [
|
|
52
|
+
"id",
|
|
53
|
+
"createdAt",
|
|
54
|
+
"updatedAt"
|
|
55
|
+
],
|
|
56
|
+
indexed: true
|
|
57
|
+
},
|
|
35
58
|
pagination: { maxLimit: 50 },
|
|
36
59
|
schemaMapping
|
|
37
60
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","createRelationsReadGate","schemaMapping","client","CLIENT","permission","PERMISSION","clientPermissionSchema","name","CLIENT_PERMISSION","fields","default","filters","allowed","relations","validate","
|
|
1
|
+
{"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","createRelationsReadGate","schemaMapping","client","CLIENT","permission","PERMISSION","clientPermissionSchema","name","CLIENT_PERMISSION","indexes","fields","default","filters","allowed","indexed","relations","validate","sorts","pagination","maxLimit"],"sources":["../../../../src/core/entities/client-permission/schema.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { defineSchema } from '@rapiq/core';\nimport type { ClientPermission } from '@authup/core-kit';\nimport { EntityType } from '@authup/core-kit';\nimport { createRelationsReadGate } from '../../query/relations.ts';\n\nconst schemaMapping = { client: EntityType.CLIENT, permission: EntityType.PERMISSION };\n\nexport const clientPermissionSchema = defineSchema<ClientPermission>({\n name: EntityType.CLIENT_PERMISSION,\n indexes: [\n ['id'],\n ['clientId', 'permissionId'],\n ['permissionId'],\n ['clientRealmId'],\n ['permissionRealmId'],\n ['policyId'],\n ['createdAt'],\n ['updatedAt'],\n ],\n // see user-role schema — explicit root projection for include= decodes\n fields: {\n default: [\n 'id',\n 'policyId',\n 'realmScope',\n 'permissionId',\n 'permissionRealmId',\n 'clientId',\n 'clientRealmId',\n 'createdAt',\n 'updatedAt',\n ],\n },\n filters: { allowed: ['clientId', 'permissionId', 'id', 'clientRealmId', 'permissionRealmId', 'policyId'], indexed: true },\n relations: { allowed: ['client', 'permission'], validate: createRelationsReadGate(schemaMapping) },\n sorts: { allowed: ['id', 'createdAt', 'updatedAt'], indexed: true },\n pagination: { maxLimit: 50 },\n schemaMapping,\n});\n"],"mappings":";;;;;;;AAYA,MAAMG,gBAAgB;CAAEC,QAAQH,WAAWI;CAAQC,YAAYL,WAAWM;AAAW;AAErF,MAAaC,yBAAyBR,aAA+B;CACjES,MAAMR,WAAWS;CACjBC,SAAS;EACL,CAAC,IAAK;EACN,CAAC,YAAY,cAAe;EAC5B,CAAC,cAAe;EAChB,CAAC,eAAgB;EACjB,CAAC,mBAAoB;EACrB,CAAC,UAAW;EACZ,CAAC,WAAY;EACb,CAAC,WAAY;CAChB;CAEDC,QAAQ,EACJC,SAAS;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACH,EACL;CACAC,SAAS;EAAEC,SAAS;GAAC;GAAY;GAAgB;GAAM;GAAiB;GAAqB;EAAW;EAAEC,SAAS;CAAK;CACxHC,WAAW;EAAEF,SAAS,CAAC,UAAU,YAAa;EAAEG,UAAUhB,wBAAwBC,aAAAA;CAAe;CACjGgB,OAAO;EAAEJ,SAAS;GAAC;GAAM;GAAa;EAAY;EAAEC,SAAS;CAAK;CAClEI,YAAY,EAAEC,UAAU,GAAG;CAC3BlB;AACJ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client-role/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,eAAO,MAAM,gBAAgB,+
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client-role/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,eAAO,MAAM,gBAAgB,+CA4B3B,CAAC"}
|
|
@@ -11,6 +11,15 @@ const schemaMapping = {
|
|
|
11
11
|
};
|
|
12
12
|
const clientRoleSchema = defineSchema({
|
|
13
13
|
name: EntityType.CLIENT_ROLE,
|
|
14
|
+
indexes: [
|
|
15
|
+
["id"],
|
|
16
|
+
["roleId", "clientId"],
|
|
17
|
+
["clientId"],
|
|
18
|
+
["clientRealmId"],
|
|
19
|
+
["roleRealmId"],
|
|
20
|
+
["createdAt"],
|
|
21
|
+
["updatedAt"]
|
|
22
|
+
],
|
|
14
23
|
fields: { default: [
|
|
15
24
|
"id",
|
|
16
25
|
"clientId",
|
|
@@ -20,16 +29,28 @@ const clientRoleSchema = defineSchema({
|
|
|
20
29
|
"createdAt",
|
|
21
30
|
"updatedAt"
|
|
22
31
|
] },
|
|
23
|
-
filters: {
|
|
32
|
+
filters: {
|
|
33
|
+
allowed: [
|
|
34
|
+
"clientId",
|
|
35
|
+
"roleId",
|
|
36
|
+
"id",
|
|
37
|
+
"clientRealmId",
|
|
38
|
+
"roleRealmId"
|
|
39
|
+
],
|
|
40
|
+
indexed: true
|
|
41
|
+
},
|
|
24
42
|
relations: {
|
|
25
43
|
allowed: ["client", "role"],
|
|
26
44
|
validate: createRelationsReadGate(schemaMapping)
|
|
27
45
|
},
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
46
|
+
sorts: {
|
|
47
|
+
allowed: [
|
|
48
|
+
"id",
|
|
49
|
+
"createdAt",
|
|
50
|
+
"updatedAt"
|
|
51
|
+
],
|
|
52
|
+
indexed: true
|
|
53
|
+
},
|
|
33
54
|
pagination: { maxLimit: 50 },
|
|
34
55
|
schemaMapping
|
|
35
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","createRelationsReadGate","schemaMapping","client","CLIENT","role","ROLE","clientRoleSchema","name","CLIENT_ROLE","fields","default","filters","allowed","relations","validate","
|
|
1
|
+
{"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","createRelationsReadGate","schemaMapping","client","CLIENT","role","ROLE","clientRoleSchema","name","CLIENT_ROLE","indexes","fields","default","filters","allowed","indexed","relations","validate","sorts","pagination","maxLimit"],"sources":["../../../../src/core/entities/client-role/schema.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { defineSchema } from '@rapiq/core';\nimport type { ClientRole } from '@authup/core-kit';\nimport { EntityType } from '@authup/core-kit';\nimport { createRelationsReadGate } from '../../query/relations.ts';\n\nconst schemaMapping = { client: EntityType.CLIENT, role: EntityType.ROLE };\n\nexport const clientRoleSchema = defineSchema<ClientRole>({\n name: EntityType.CLIENT_ROLE,\n indexes: [\n ['id'],\n ['roleId', 'clientId'],\n ['clientId'],\n ['clientRealmId'],\n ['roleRealmId'],\n ['createdAt'],\n ['updatedAt'],\n ],\n // see user-role schema — explicit root projection for include= decodes\n fields: {\n default: [\n 'id',\n 'clientId',\n 'clientRealmId',\n 'roleId',\n 'roleRealmId',\n 'createdAt',\n 'updatedAt',\n ],\n },\n filters: { allowed: ['clientId', 'roleId', 'id', 'clientRealmId', 'roleRealmId'], indexed: true },\n relations: { allowed: ['client', 'role'], validate: createRelationsReadGate(schemaMapping) },\n sorts: { allowed: ['id', 'createdAt', 'updatedAt'], indexed: true },\n pagination: { maxLimit: 50 },\n schemaMapping,\n});\n"],"mappings":";;;;;;;AAYA,MAAMG,gBAAgB;CAAEC,QAAQH,WAAWI;CAAQC,MAAML,WAAWM;AAAK;AAEzE,MAAaC,mBAAmBR,aAAyB;CACrDS,MAAMR,WAAWS;CACjBC,SAAS;EACL,CAAC,IAAK;EACN,CAAC,UAAU,UAAW;EACtB,CAAC,UAAW;EACZ,CAAC,eAAgB;EACjB,CAAC,aAAc;EACf,CAAC,WAAY;EACb,CAAC,WAAY;CAChB;CAEDC,QAAQ,EACJC,SAAS;EACL;EACA;EACA;EACA;EACA;EACA;EACA;CACH,EACL;CACAC,SAAS;EAAEC,SAAS;GAAC;GAAY;GAAU;GAAM;GAAiB;EAAc;EAAEC,SAAS;CAAK;CAChGC,WAAW;EAAEF,SAAS,CAAC,UAAU,MAAO;EAAEG,UAAUhB,wBAAwBC,aAAAA;CAAe;CAC3FgB,OAAO;EAAEJ,SAAS;GAAC;GAAM;GAAa;EAAY;EAAEC,SAAS;CAAK;CAClEI,YAAY,EAAEC,UAAU,GAAG;CAC3BlB;AACJ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client-scope/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMpD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client-scope/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMpD,eAAO,MAAM,iBAAiB,gDA2B5B,CAAC"}
|
|
@@ -11,6 +11,14 @@ const schemaMapping = {
|
|
|
11
11
|
};
|
|
12
12
|
const clientScopeSchema = defineSchema({
|
|
13
13
|
name: EntityType.CLIENT_SCOPE,
|
|
14
|
+
indexes: [
|
|
15
|
+
["id"],
|
|
16
|
+
["clientId", "scopeId"],
|
|
17
|
+
["scopeId"],
|
|
18
|
+
["default"],
|
|
19
|
+
["clientRealmId"],
|
|
20
|
+
["scopeRealmId"]
|
|
21
|
+
],
|
|
14
22
|
fields: { default: [
|
|
15
23
|
"id",
|
|
16
24
|
"default",
|
|
@@ -21,11 +29,17 @@ const clientScopeSchema = defineSchema({
|
|
|
21
29
|
"createdAt",
|
|
22
30
|
"updatedAt"
|
|
23
31
|
] },
|
|
24
|
-
filters: {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
filters: {
|
|
33
|
+
allowed: [
|
|
34
|
+
"clientId",
|
|
35
|
+
"scopeId",
|
|
36
|
+
"default",
|
|
37
|
+
"id",
|
|
38
|
+
"clientRealmId",
|
|
39
|
+
"scopeRealmId"
|
|
40
|
+
],
|
|
41
|
+
indexed: true
|
|
42
|
+
},
|
|
29
43
|
relations: {
|
|
30
44
|
allowed: ["client", "scope"],
|
|
31
45
|
validate: createRelationsReadGate(schemaMapping)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","createRelationsReadGate","schemaMapping","client","CLIENT","scope","SCOPE","clientScopeSchema","name","CLIENT_SCOPE","fields","default","filters","allowed","relations","validate","pagination","maxLimit"],"sources":["../../../../src/core/entities/client-scope/schema.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { defineSchema } from '@rapiq/core';\nimport type { ClientScope } from '@authup/core-kit';\nimport { EntityType } from '@authup/core-kit';\nimport { createRelationsReadGate } from '../../query/relations.ts';\n\nconst schemaMapping = { client: EntityType.CLIENT, scope: EntityType.SCOPE };\n\nexport const clientScopeSchema = defineSchema<ClientScope>({\n name: EntityType.CLIENT_SCOPE,\n // see user-role schema — explicit root projection for include= decodes\n fields: {\n default: [\n 'id',\n 'default',\n 'clientId',\n 'clientRealmId',\n 'scopeId',\n 'scopeRealmId',\n 'createdAt',\n 'updatedAt',\n ],\n },\n filters: { allowed: ['clientId', 'scopeId', 'default'] },\n relations: { allowed: ['client', 'scope'], validate: createRelationsReadGate(schemaMapping) },\n pagination: { maxLimit: 50 },\n schemaMapping,\n});\n"],"mappings":";;;;;;;AAYA,MAAMG,gBAAgB;CAAEC,QAAQH,WAAWI;CAAQC,OAAOL,WAAWM;AAAM;AAE3E,MAAaC,oBAAoBR,aAA0B;CACvDS,MAAMR,WAAWS;
|
|
1
|
+
{"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","createRelationsReadGate","schemaMapping","client","CLIENT","scope","SCOPE","clientScopeSchema","name","CLIENT_SCOPE","indexes","fields","default","filters","allowed","indexed","relations","validate","pagination","maxLimit"],"sources":["../../../../src/core/entities/client-scope/schema.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { defineSchema } from '@rapiq/core';\nimport type { ClientScope } from '@authup/core-kit';\nimport { EntityType } from '@authup/core-kit';\nimport { createRelationsReadGate } from '../../query/relations.ts';\n\nconst schemaMapping = { client: EntityType.CLIENT, scope: EntityType.SCOPE };\n\nexport const clientScopeSchema = defineSchema<ClientScope>({\n name: EntityType.CLIENT_SCOPE,\n indexes: [\n ['id'],\n ['clientId', 'scopeId'],\n ['scopeId'],\n ['default'],\n ['clientRealmId'],\n ['scopeRealmId'],\n ],\n // see user-role schema — explicit root projection for include= decodes\n fields: {\n default: [\n 'id',\n 'default',\n 'clientId',\n 'clientRealmId',\n 'scopeId',\n 'scopeRealmId',\n 'createdAt',\n 'updatedAt',\n ],\n },\n filters: { allowed: ['clientId', 'scopeId', 'default', 'id', 'clientRealmId', 'scopeRealmId'], indexed: true },\n relations: { allowed: ['client', 'scope'], validate: createRelationsReadGate(schemaMapping) },\n pagination: { maxLimit: 50 },\n schemaMapping,\n});\n"],"mappings":";;;;;;;AAYA,MAAMG,gBAAgB;CAAEC,QAAQH,WAAWI;CAAQC,OAAOL,WAAWM;AAAM;AAE3E,MAAaC,oBAAoBR,aAA0B;CACvDS,MAAMR,WAAWS;CACjBC,SAAS;EACL,CAAC,IAAK;EACN,CAAC,YAAY,SAAU;EACvB,CAAC,SAAU;EACX,CAAC,SAAU;EACX,CAAC,eAAgB;EACjB,CAAC,cAAe;CACnB;CAEDC,QAAQ,EACJC,SAAS;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACH,EACL;CACAC,SAAS;EAAEC,SAAS;GAAC;GAAY;GAAW;GAAW;GAAM;GAAiB;EAAe;EAAEC,SAAS;CAAK;CAC7GC,WAAW;EAAEF,SAAS,CAAC,UAAU,OAAQ;EAAEG,UAAUhB,wBAAwBC,aAAAA;CAAe;CAC5FgB,YAAY,EAAEC,UAAU,GAAG;CAC3BjB;AACJ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/consent/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAOhD,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/consent/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAOhD,eAAO,MAAM,aAAa,4CAsCxB,CAAC"}
|
|
@@ -9,6 +9,22 @@ import { defineSchema } from "@rapiq/core";
|
|
|
9
9
|
const schemaMapping = { realm: EntityType.REALM };
|
|
10
10
|
const consentSchema = defineSchema({
|
|
11
11
|
name: EntityType.CONSENT,
|
|
12
|
+
indexes: [
|
|
13
|
+
["id"],
|
|
14
|
+
[
|
|
15
|
+
"clientId",
|
|
16
|
+
"sub",
|
|
17
|
+
"subKind",
|
|
18
|
+
"scope"
|
|
19
|
+
],
|
|
20
|
+
["sub"],
|
|
21
|
+
["subKind"],
|
|
22
|
+
["scope"],
|
|
23
|
+
["realmId"],
|
|
24
|
+
["userId"],
|
|
25
|
+
["createdAt"],
|
|
26
|
+
["updatedAt"]
|
|
27
|
+
],
|
|
12
28
|
fields: { default: [
|
|
13
29
|
"id",
|
|
14
30
|
"clientId",
|
|
@@ -21,16 +37,22 @@ const consentSchema = defineSchema({
|
|
|
21
37
|
"createdAt",
|
|
22
38
|
"updatedAt"
|
|
23
39
|
] },
|
|
24
|
-
filters: {
|
|
40
|
+
filters: {
|
|
41
|
+
allowed: [...CONSENT_FILTER_KEYS, "userId"],
|
|
42
|
+
indexed: true
|
|
43
|
+
},
|
|
25
44
|
relations: {
|
|
26
45
|
allowed: ["realm"],
|
|
27
46
|
validate: createRelationsReadGate(schemaMapping)
|
|
28
47
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
48
|
+
sorts: {
|
|
49
|
+
allowed: [
|
|
50
|
+
"createdAt",
|
|
51
|
+
"updatedAt",
|
|
52
|
+
"scope"
|
|
53
|
+
],
|
|
54
|
+
indexed: true
|
|
55
|
+
},
|
|
34
56
|
pagination: { maxLimit: 50 },
|
|
35
57
|
schemaMapping
|
|
36
58
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","CONSENT_FILTER_KEYS","createRelationsReadGate","schemaMapping","realm","REALM","consentSchema","name","CONSENT","fields","default","filters","allowed","relations","validate","
|
|
1
|
+
{"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","CONSENT_FILTER_KEYS","createRelationsReadGate","schemaMapping","realm","REALM","consentSchema","name","CONSENT","indexes","fields","default","filters","allowed","indexed","relations","validate","sorts","pagination","maxLimit"],"sources":["../../../../src/core/entities/consent/schema.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { defineSchema } from '@rapiq/core';\nimport type { Consent } from '@authup/core-kit';\nimport { EntityType } from '@authup/core-kit';\nimport { CONSENT_FILTER_KEYS } from './types.ts';\nimport { createRelationsReadGate } from '../../query/relations.ts';\n\nconst schemaMapping = { realm: EntityType.REALM };\n\nexport const consentSchema = defineSchema<Consent>({\n name: EntityType.CONSENT,\n indexes: [\n ['id'],\n ['clientId', 'sub', 'subKind', 'scope'],\n ['sub'],\n ['subKind'],\n ['scope'],\n ['realmId'],\n ['userId'],\n ['createdAt'],\n ['updatedAt'],\n ],\n fields: {\n // `default` (not just `allowed`) so the adapter adds an explicit\n // per-column SELECT: it populates expressionMap.selects, which\n // applyRealmScopeSelect dedupes against. Without it the default\n // \"select all\" is implicit (empty selects) and the force-select\n // re-adds consent.sub — a duplicate `consent_sub` alias that\n // mysql rejects under the client join (see helpers.ts).\n default: [\n 'id',\n 'clientId',\n 'realmId',\n 'userId',\n 'sub',\n 'subKind',\n 'scope',\n 'expiresAt',\n 'createdAt',\n 'updatedAt',\n ],\n },\n filters: { allowed: [...CONSENT_FILTER_KEYS, 'userId'], indexed: true },\n relations: { allowed: ['realm'], validate: createRelationsReadGate(schemaMapping) },\n sorts: { allowed: ['createdAt', 'updatedAt', 'scope'], indexed: true },\n pagination: { maxLimit: 50 },\n schemaMapping,\n});\n"],"mappings":";;;;;;;;AAaA,MAAMI,gBAAgB,EAAEC,OAAOJ,WAAWK,MAAM;AAEhD,MAAaC,gBAAgBP,aAAsB;CAC/CQ,MAAMP,WAAWQ;CACjBC,SAAS;EACL,CAAC,IAAK;EACN;GAAC;GAAY;GAAO;GAAW;EAAQ;EACvC,CAAC,KAAM;EACP,CAAC,SAAU;EACX,CAAC,OAAQ;EACT,CAAC,SAAU;EACX,CAAC,QAAS;EACV,CAAC,WAAY;EACb,CAAC,WAAY;CAChB;CACDC,QAAQ,EAOJC,SAAS;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACH,EACL;CACAC,SAAS;EAAEC,SAAS,CAAIZ,GAAAA,qBAAqB,QAAS;EAAEa,SAAS;CAAK;CACtEC,WAAW;EAAEF,SAAS,CAAC,OAAQ;EAAEG,UAAUd,wBAAwBC,aAAAA;CAAe;CAClFc,OAAO;EAAEJ,SAAS;GAAC;GAAa;GAAa;EAAQ;EAAEC,SAAS;CAAK;CACrEI,YAAY,EAAEC,UAAU,GAAG;CAC3BhB;AACJ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-event-handler.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/entity-event-handler.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,KAAK,EACR,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,yBAAyB,GAAG;IACpC,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC;IACvD,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-event-handler.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/entity-event-handler.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,KAAK,EACR,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,yBAAyB,GAAG;IACpC,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC;IACvD,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC;AA4CF;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,SAAS,CAAC,YAAY,EAAG,aAAa,CAAC;IAEvC,SAAS,CAAC,cAAc,CAAC,EAAG,MAAM,mBAAmB,GAAG,SAAS,CAAC;IAElE,SAAS,CAAC,OAAO,EAAG,yBAAyB,CAAC;gBAElC,GAAG,EAAE,yBAAyB;IAMpC,MAAM,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAsD9D"}
|
|
@@ -16,6 +16,7 @@ const ENTITY_REALM_KEY_MAP = {
|
|
|
16
16
|
[EntityType.CLIENT_ROLE]: "clientRealmId",
|
|
17
17
|
[EntityType.CLIENT_SCOPE]: "clientRealmId",
|
|
18
18
|
[EntityType.CONSENT]: "realmId",
|
|
19
|
+
[EntityType.SESSION_TOKEN]: "sessionId",
|
|
19
20
|
[EntityType.EVENT]: "realmId",
|
|
20
21
|
[EntityType.IDENTITY_PROVIDER]: "realmId",
|
|
21
22
|
[EntityType.IDENTITY_PROVIDER_ACCOUNT]: "userRealmId",
|
|
@@ -76,6 +77,7 @@ const ENTITY_REALM_KEY_MAP = {
|
|
|
76
77
|
actorType: requestContext?.actorType ?? null,
|
|
77
78
|
actorId: requestContext?.actorId ?? null,
|
|
78
79
|
actorName: requestContext?.actorName ?? null,
|
|
80
|
+
sessionId: requestContext?.sessionId ?? null,
|
|
79
81
|
requestPath: requestContext?.requestPath ?? null,
|
|
80
82
|
requestMethod: requestContext?.requestMethod ?? null,
|
|
81
83
|
requestIpAddress: requestContext?.requestIpAddress ?? null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-event-handler.mjs","names":["EntityDefaultEventName","EntityType","EventName","EventScope","hasOwnProperty","isObject","buildEntityDiff","ENTITY_EVENT_NAME_MAP","CREATED","UPDATED","DELETED","ENTITY_REALM_KEY_MAP","CLIENT","CLIENT_PERMISSION","CLIENT_ROLE","CLIENT_SCOPE","CONSENT","EVENT","IDENTITY_PROVIDER","IDENTITY_PROVIDER_ACCOUNT","IDENTITY_PROVIDER_ATTRIBUTE","IDENTITY_PROVIDER_ATTRIBUTE_MAPPING","IDENTITY_PROVIDER_PERMISSION_MAPPING","IDENTITY_PROVIDER_ROLE_MAPPING","KEY","POLICY","POLICY_ATTRIBUTE","PERMISSION","PERMISSION_POLICY","REALM","ROLE","ROLE_ATTRIBUTE","ROLE_PERMISSION","SCOPE","SESSION","TRUST_ANCHOR","USER","USER_ATTRIBUTE","USER_AUTHENTICATOR","USER_PERMISSION","USER_ROLE","EntityEventHandler","eventService","requestContext","options","ctx","handle","content","type","name","event","refId","data","id","realmIdCurrent","resolveEntityRealmId","realmId","dataPrevious","undefined","diff","Object","keys","length","record","scope","ENTITY","refType","actorType","actorId","actorName","requestPath","requestMethod","requestIpAddress","requestUserAgent","retentionDays","key"],"sources":["../../../../src/core/entities/event/entity-event-handler.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n EntityDefaultEventName,\n EntityType,\n EventName,\n EventScope,\n} from '@authup/core-kit';\nimport { hasOwnProperty, isObject } from '@authup/kit';\nimport type { DomainEventPublishContext, IDomainEventHandler } from '@authup/server-kit';\nimport { buildEntityDiff } from './diff.ts';\nimport type {\n EntityEventHandlerOptions,\n EventRequestContext,\n IEventService,\n} from './types.ts';\n\nexport type EntityEventHandlerContext = {\n eventService: IEventService,\n requestContext?: () => EventRequestContext | undefined,\n options?: EntityEventHandlerOptions,\n};\n\nconst ENTITY_EVENT_NAME_MAP : Record<string, `${EventName}`> = {\n [EntityDefaultEventName.CREATED]: EventName.CREATED,\n [EntityDefaultEventName.UPDATED]: EventName.UPDATED,\n [EntityDefaultEventName.DELETED]: EventName.DELETED,\n};\n\nconst ENTITY_REALM_KEY_MAP : Record<`${EntityType}`, string> = {\n [EntityType.CLIENT]: 'realmId',\n [EntityType.CLIENT_PERMISSION]: 'clientRealmId',\n [EntityType.CLIENT_ROLE]: 'clientRealmId',\n [EntityType.CLIENT_SCOPE]: 'clientRealmId',\n [EntityType.CONSENT]: 'realmId',\n [EntityType.EVENT]: 'realmId',\n [EntityType.IDENTITY_PROVIDER]: 'realmId',\n [EntityType.IDENTITY_PROVIDER_ACCOUNT]: 'userRealmId',\n [EntityType.IDENTITY_PROVIDER_ATTRIBUTE]: 'realmId',\n [EntityType.IDENTITY_PROVIDER_ATTRIBUTE_MAPPING]: 'providerRealmId',\n [EntityType.IDENTITY_PROVIDER_PERMISSION_MAPPING]: 'providerRealmId',\n [EntityType.IDENTITY_PROVIDER_ROLE_MAPPING]: 'providerRealmId',\n [EntityType.KEY]: 'realmId',\n [EntityType.POLICY]: 'realmId',\n [EntityType.POLICY_ATTRIBUTE]: 'realmId',\n [EntityType.PERMISSION]: 'realmId',\n [EntityType.PERMISSION_POLICY]: 'permissionRealmId',\n [EntityType.REALM]: 'id',\n [EntityType.ROLE]: 'realmId',\n [EntityType.ROLE_ATTRIBUTE]: 'realmId',\n [EntityType.ROLE_PERMISSION]: 'roleRealmId',\n [EntityType.SCOPE]: 'realmId',\n [EntityType.SESSION]: 'realmId',\n [EntityType.TRUST_ANCHOR]: 'realmId',\n [EntityType.USER]: 'realmId',\n [EntityType.USER_ATTRIBUTE]: 'realmId',\n [EntityType.USER_AUTHENTICATOR]: 'realmId',\n [EntityType.USER_PERMISSION]: 'userRealmId',\n [EntityType.USER_ROLE]: 'userRealmId',\n};\n\n/**\n * Bridges every entity create/update/delete published on the\n * DomainEventPublisher bus into the auth_events audit table (scope `entity`).\n */\nexport class EntityEventHandler implements IDomainEventHandler {\n protected eventService : IEventService;\n\n protected requestContext? : () => EventRequestContext | undefined;\n\n protected options : EntityEventHandlerOptions;\n\n constructor(ctx: EntityEventHandlerContext) {\n this.eventService = ctx.eventService;\n this.requestContext = ctx.requestContext;\n this.options = ctx.options ?? {};\n }\n\n async handle(ctx: DomainEventPublishContext): Promise<void> {\n try {\n // recursion guard — no event subscriber exists today (the\n // auth_events entity is deliberately subscriber-less), so this is\n // defense in depth against an audit-write feedback loop.\n if (ctx.content.type === 'event') {\n return;\n }\n\n const name = ENTITY_EVENT_NAME_MAP[ctx.content.event];\n if (!name) {\n return;\n }\n\n const refId = ctx.content.data?.id ?? null;\n const realmIdCurrent = resolveEntityRealmId(ctx.content.type, ctx.content.data);\n const realmId = typeof realmIdCurrent === 'undefined' ?\n (resolveEntityRealmId(ctx.content.type, ctx.dataPrevious) ?? null) :\n realmIdCurrent;\n\n const requestContext = this.requestContext ?\n this.requestContext() :\n undefined;\n\n let data : Record<string, any> | null = null;\n if (name === EventName.UPDATED && isObject(ctx.content.data) && isObject(ctx.dataPrevious)) {\n const diff = buildEntityDiff(ctx.content.data, ctx.dataPrevious);\n if (Object.keys(diff).length > 0) {\n data = { diff };\n }\n }\n\n await this.eventService.record({\n scope: EventScope.ENTITY,\n name,\n refType: ctx.content.type,\n refId,\n realmId,\n actorType: requestContext?.actorType ?? null,\n actorId: requestContext?.actorId ?? null,\n actorName: requestContext?.actorName ?? null,\n requestPath: requestContext?.requestPath ?? null,\n requestMethod: requestContext?.requestMethod ?? null,\n requestIpAddress: requestContext?.requestIpAddress ?? null,\n requestUserAgent: requestContext?.requestUserAgent ?? null,\n data,\n retentionDays: this.options.retentionDays,\n });\n } catch {\n // record() never throws, but the bridge itself must also never\n // fail the originating publish.\n }\n }\n}\n\nfunction resolveEntityRealmId(\n type: string,\n data: unknown,\n): string | null | undefined {\n if (!isObject(data)) {\n return undefined;\n }\n\n const key = ENTITY_REALM_KEY_MAP[type as `${EntityType}`] ?? 'realmId';\n if (!hasOwnProperty(data, key)) {\n return undefined;\n }\n\n return typeof data[key] === 'string' ? data[key] : null;\n}\n"],"mappings":";;;;;;;AA4BA,MAAMO,wBAAyD;EAC1DP,uBAAuBQ,UAAUN,UAAUM;EAC3CR,uBAAuBS,UAAUP,UAAUO;EAC3CT,uBAAuBU,UAAUR,UAAUQ;AAChD;AAEA,MAAMC,uBAAyD;EAC1DV,WAAWW,SAAS;EACpBX,WAAWY,oBAAoB;EAC/BZ,WAAWa,cAAc;EACzBb,WAAWc,eAAe;EAC1Bd,WAAWe,UAAU;
|
|
1
|
+
{"version":3,"file":"entity-event-handler.mjs","names":["EntityDefaultEventName","EntityType","EventName","EventScope","hasOwnProperty","isObject","buildEntityDiff","ENTITY_EVENT_NAME_MAP","CREATED","UPDATED","DELETED","ENTITY_REALM_KEY_MAP","CLIENT","CLIENT_PERMISSION","CLIENT_ROLE","CLIENT_SCOPE","CONSENT","SESSION_TOKEN","EVENT","IDENTITY_PROVIDER","IDENTITY_PROVIDER_ACCOUNT","IDENTITY_PROVIDER_ATTRIBUTE","IDENTITY_PROVIDER_ATTRIBUTE_MAPPING","IDENTITY_PROVIDER_PERMISSION_MAPPING","IDENTITY_PROVIDER_ROLE_MAPPING","KEY","POLICY","POLICY_ATTRIBUTE","PERMISSION","PERMISSION_POLICY","REALM","ROLE","ROLE_ATTRIBUTE","ROLE_PERMISSION","SCOPE","SESSION","TRUST_ANCHOR","USER","USER_ATTRIBUTE","USER_AUTHENTICATOR","USER_PERMISSION","USER_ROLE","EntityEventHandler","eventService","requestContext","options","ctx","handle","content","type","name","event","refId","data","id","realmIdCurrent","resolveEntityRealmId","realmId","dataPrevious","undefined","diff","Object","keys","length","record","scope","ENTITY","refType","actorType","actorId","actorName","sessionId","requestPath","requestMethod","requestIpAddress","requestUserAgent","retentionDays","key"],"sources":["../../../../src/core/entities/event/entity-event-handler.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n EntityDefaultEventName,\n EntityType,\n EventName,\n EventScope,\n} from '@authup/core-kit';\nimport { hasOwnProperty, isObject } from '@authup/kit';\nimport type { DomainEventPublishContext, IDomainEventHandler } from '@authup/server-kit';\nimport { buildEntityDiff } from './diff.ts';\nimport type {\n EntityEventHandlerOptions,\n EventRequestContext,\n IEventService,\n} from './types.ts';\n\nexport type EntityEventHandlerContext = {\n eventService: IEventService,\n requestContext?: () => EventRequestContext | undefined,\n options?: EntityEventHandlerOptions,\n};\n\nconst ENTITY_EVENT_NAME_MAP : Record<string, `${EventName}`> = {\n [EntityDefaultEventName.CREATED]: EventName.CREATED,\n [EntityDefaultEventName.UPDATED]: EventName.UPDATED,\n [EntityDefaultEventName.DELETED]: EventName.DELETED,\n};\n\nconst ENTITY_REALM_KEY_MAP : Record<`${EntityType}`, string> = {\n [EntityType.CLIENT]: 'realmId',\n [EntityType.CLIENT_PERMISSION]: 'clientRealmId',\n [EntityType.CLIENT_ROLE]: 'clientRealmId',\n [EntityType.CLIENT_SCOPE]: 'clientRealmId',\n [EntityType.CONSENT]: 'realmId',\n // Unreachable in practice: auth_session_tokens has no entity subscriber,\n // so no domain event is ever published for it. Present for exhaustiveness,\n // and the key is the one it would resolve through if that changed.\n [EntityType.SESSION_TOKEN]: 'sessionId',\n [EntityType.EVENT]: 'realmId',\n [EntityType.IDENTITY_PROVIDER]: 'realmId',\n [EntityType.IDENTITY_PROVIDER_ACCOUNT]: 'userRealmId',\n [EntityType.IDENTITY_PROVIDER_ATTRIBUTE]: 'realmId',\n [EntityType.IDENTITY_PROVIDER_ATTRIBUTE_MAPPING]: 'providerRealmId',\n [EntityType.IDENTITY_PROVIDER_PERMISSION_MAPPING]: 'providerRealmId',\n [EntityType.IDENTITY_PROVIDER_ROLE_MAPPING]: 'providerRealmId',\n [EntityType.KEY]: 'realmId',\n [EntityType.POLICY]: 'realmId',\n [EntityType.POLICY_ATTRIBUTE]: 'realmId',\n [EntityType.PERMISSION]: 'realmId',\n [EntityType.PERMISSION_POLICY]: 'permissionRealmId',\n [EntityType.REALM]: 'id',\n [EntityType.ROLE]: 'realmId',\n [EntityType.ROLE_ATTRIBUTE]: 'realmId',\n [EntityType.ROLE_PERMISSION]: 'roleRealmId',\n [EntityType.SCOPE]: 'realmId',\n [EntityType.SESSION]: 'realmId',\n [EntityType.TRUST_ANCHOR]: 'realmId',\n [EntityType.USER]: 'realmId',\n [EntityType.USER_ATTRIBUTE]: 'realmId',\n [EntityType.USER_AUTHENTICATOR]: 'realmId',\n [EntityType.USER_PERMISSION]: 'userRealmId',\n [EntityType.USER_ROLE]: 'userRealmId',\n};\n\n/**\n * Bridges every entity create/update/delete published on the\n * DomainEventPublisher bus into the auth_events audit table (scope `entity`).\n */\nexport class EntityEventHandler implements IDomainEventHandler {\n protected eventService : IEventService;\n\n protected requestContext? : () => EventRequestContext | undefined;\n\n protected options : EntityEventHandlerOptions;\n\n constructor(ctx: EntityEventHandlerContext) {\n this.eventService = ctx.eventService;\n this.requestContext = ctx.requestContext;\n this.options = ctx.options ?? {};\n }\n\n async handle(ctx: DomainEventPublishContext): Promise<void> {\n try {\n // recursion guard — no event subscriber exists today (the\n // auth_events entity is deliberately subscriber-less), so this is\n // defense in depth against an audit-write feedback loop.\n if (ctx.content.type === 'event') {\n return;\n }\n\n const name = ENTITY_EVENT_NAME_MAP[ctx.content.event];\n if (!name) {\n return;\n }\n\n const refId = ctx.content.data?.id ?? null;\n const realmIdCurrent = resolveEntityRealmId(ctx.content.type, ctx.content.data);\n const realmId = typeof realmIdCurrent === 'undefined' ?\n (resolveEntityRealmId(ctx.content.type, ctx.dataPrevious) ?? null) :\n realmIdCurrent;\n\n const requestContext = this.requestContext ?\n this.requestContext() :\n undefined;\n\n let data : Record<string, any> | null = null;\n if (name === EventName.UPDATED && isObject(ctx.content.data) && isObject(ctx.dataPrevious)) {\n const diff = buildEntityDiff(ctx.content.data, ctx.dataPrevious);\n if (Object.keys(diff).length > 0) {\n data = { diff };\n }\n }\n\n await this.eventService.record({\n scope: EventScope.ENTITY,\n name,\n refType: ctx.content.type,\n refId,\n realmId,\n actorType: requestContext?.actorType ?? null,\n actorId: requestContext?.actorId ?? null,\n actorName: requestContext?.actorName ?? null,\n sessionId: requestContext?.sessionId ?? null,\n requestPath: requestContext?.requestPath ?? null,\n requestMethod: requestContext?.requestMethod ?? null,\n requestIpAddress: requestContext?.requestIpAddress ?? null,\n requestUserAgent: requestContext?.requestUserAgent ?? null,\n data,\n retentionDays: this.options.retentionDays,\n });\n } catch {\n // record() never throws, but the bridge itself must also never\n // fail the originating publish.\n }\n }\n}\n\nfunction resolveEntityRealmId(\n type: string,\n data: unknown,\n): string | null | undefined {\n if (!isObject(data)) {\n return undefined;\n }\n\n const key = ENTITY_REALM_KEY_MAP[type as `${EntityType}`] ?? 'realmId';\n if (!hasOwnProperty(data, key)) {\n return undefined;\n }\n\n return typeof data[key] === 'string' ? data[key] : null;\n}\n"],"mappings":";;;;;;;AA4BA,MAAMO,wBAAyD;EAC1DP,uBAAuBQ,UAAUN,UAAUM;EAC3CR,uBAAuBS,UAAUP,UAAUO;EAC3CT,uBAAuBU,UAAUR,UAAUQ;AAChD;AAEA,MAAMC,uBAAyD;EAC1DV,WAAWW,SAAS;EACpBX,WAAWY,oBAAoB;EAC/BZ,WAAWa,cAAc;EACzBb,WAAWc,eAAe;EAC1Bd,WAAWe,UAAU;EAIrBf,WAAWgB,gBAAgB;EAC3BhB,WAAWiB,QAAQ;EACnBjB,WAAWkB,oBAAoB;EAC/BlB,WAAWmB,4BAA4B;EACvCnB,WAAWoB,8BAA8B;EACzCpB,WAAWqB,sCAAsC;EACjDrB,WAAWsB,uCAAuC;EAClDtB,WAAWuB,iCAAiC;EAC5CvB,WAAWwB,MAAM;EACjBxB,WAAWyB,SAAS;EACpBzB,WAAW0B,mBAAmB;EAC9B1B,WAAW2B,aAAa;EACxB3B,WAAW4B,oBAAoB;EAC/B5B,WAAW6B,QAAQ;EACnB7B,WAAW8B,OAAO;EAClB9B,WAAW+B,iBAAiB;EAC5B/B,WAAWgC,kBAAkB;EAC7BhC,WAAWiC,QAAQ;EACnBjC,WAAWkC,UAAU;EACrBlC,WAAWmC,eAAe;EAC1BnC,WAAWoC,OAAO;EAClBpC,WAAWqC,iBAAiB;EAC5BrC,WAAWsC,qBAAqB;EAChCtC,WAAWuC,kBAAkB;EAC7BvC,WAAWwC,YAAY;AAC5B;;;;GAMA,IAAaC,qBAAb,MAAaA;CACCC;CAEAC;CAEAC;CAEV,YAAYC,KAAgC;EACxC,KAAKH,eAAeG,IAAIH;EACxB,KAAKC,iBAAiBE,IAAIF;EAC1B,KAAKC,UAAUC,IAAID,WAAW,CAAC;CACnC;CAEA,MAAME,OAAOD,KAA+C;EACxD,IAAI;GAIA,IAAIA,IAAIE,QAAQC,SAAS,SACrB;GAGJ,MAAMC,OAAO3C,sBAAsBuC,IAAIE,QAAQG;GAC/C,IAAI,CAACD,MACD;GAGJ,MAAME,QAAQN,IAAIE,QAAQK,MAAMC,MAAM;GACtC,MAAMC,iBAAiBC,qBAAqBV,IAAIE,QAAQC,MAAMH,IAAIE,QAAQK,IAAI;GAC9E,MAAMI,UAAU,OAAOF,mBAAmB,cACrCC,qBAAqBV,IAAIE,QAAQC,MAAMH,IAAIY,YAAY,KAAK,OAC7DH;GAEJ,MAAMX,iBAAiB,KAAKA,iBACxB,KAAKA,eAAc,IACnBe,KAAAA;GAEJ,IAAIN,OAAoC;GACxC,IAAIH,SAAShD,UAAUO,WAAWJ,SAASyC,IAAIE,QAAQK,IAAI,KAAKhD,SAASyC,IAAIY,YAAY,GAAG;IACxF,MAAME,OAAOtD,gBAAgBwC,IAAIE,QAAQK,MAAMP,IAAIY,YAAY;IAC/D,IAAIG,OAAOC,KAAKF,IAAAA,CAAAA,CAAMG,SAAS,GAC3BV,OAAO,EAAEO,KAAK;GAEtB;GAEA,MAAM,KAAKjB,aAAaqB,OAAO;IAC3BC,OAAO9D,WAAW+D;IAClBhB;IACAiB,SAASrB,IAAIE,QAAQC;IACrBG;IACAK;IACAW,WAAWxB,gBAAgBwB,aAAa;IACxCC,SAASzB,gBAAgByB,WAAW;IACpCC,WAAW1B,gBAAgB0B,aAAa;IACxCC,WAAW3B,gBAAgB2B,aAAa;IACxCC,aAAa5B,gBAAgB4B,eAAe;IAC5CC,eAAe7B,gBAAgB6B,iBAAiB;IAChDC,kBAAkB9B,gBAAgB8B,oBAAoB;IACtDC,kBAAkB/B,gBAAgB+B,oBAAoB;IACtDtB;IACAuB,eAAe,KAAK/B,QAAQ+B;GAChC,CAAA;EACJ,QAAQ,CAGR;CACJ;AACJ;AAEA,SAASpB,qBACLP,MACAI,MAAa;CAEb,IAAI,CAAChD,SAASgD,IAAAA,GACV;CAGJ,MAAMwB,MAAMlE,qBAAqBsC,SAA4B;CAC7D,IAAI,CAAC7C,eAAeiD,MAAMwB,GAAAA,GACtB;CAGJ,OAAO,OAAOxB,KAAKwB,SAAS,WAAWxB,KAAKwB,OAAO;AACvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/sanitize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/sanitize.ts"],"names":[],"mappings":"AAwGA,wBAAgB,iBAAiB,CAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GACnC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CA6B5B"}
|
|
@@ -11,10 +11,13 @@ import { isObject } from "@authup/kit";
|
|
|
11
11
|
* objects and arrays are dropped outright, so a nested structure can never
|
|
12
12
|
* smuggle a secret past the boundary (this subsumes a denylist: password,
|
|
13
13
|
* client_secret, code, code_verifier, *token* etc. are simply never listed).
|
|
14
|
-
*
|
|
14
|
+
* jti is an opaque correlation id, not PII (a session id is not listed here:
|
|
15
|
+
* it rides the dedicated `sessionId` column, never the data bag).
|
|
15
16
|
* name / use / status / enabled / force describe key & trust-anchor lifecycle
|
|
16
17
|
* operations (issue #3269) — canonical identifiers and enum/flag metadata,
|
|
17
18
|
* never material. kind is the MFA authenticator kind (totp/email/...).
|
|
19
|
+
* providerId / providerName identify the identity provider on account link &
|
|
20
|
+
* unlink events (plan 091): metadata only, never external tokens.
|
|
18
21
|
*
|
|
19
22
|
* The single structured exception is `diff` (entity-CRUD bridge): it survives
|
|
20
23
|
* only as a one-level object of `{ next, previous }` scalar pairs, keys
|
|
@@ -30,15 +33,15 @@ import { isObject } from "@authup/kit";
|
|
|
30
33
|
"reason",
|
|
31
34
|
"clientName",
|
|
32
35
|
"realmName",
|
|
33
|
-
"sessionId",
|
|
34
36
|
"jti",
|
|
35
|
-
"revokedSessionId",
|
|
36
37
|
"name",
|
|
37
38
|
"use",
|
|
38
39
|
"status",
|
|
39
40
|
"enabled",
|
|
40
41
|
"force",
|
|
41
|
-
"kind"
|
|
42
|
+
"kind",
|
|
43
|
+
"providerId",
|
|
44
|
+
"providerName"
|
|
42
45
|
];
|
|
43
46
|
const DATA_VALUE_MAX_LENGTH = 512;
|
|
44
47
|
function isDiffScalar(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.mjs","names":["isObject","EVENT_DIFF_SECRET_KEY_REGEX","DATA_KEY_ALLOW_LIST","DATA_VALUE_MAX_LENGTH","isDiffScalar","value","truncateDiffScalar","length","substring","sanitizeDiff","input","output","key","entry","Object","entries","test","next","previous","keys","sanitizeEventData","diff"],"sources":["../../../../src/core/entities/event/sanitize.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport { EVENT_DIFF_SECRET_KEY_REGEX } from './diff.ts';\n\n/**\n * The central PII/credential write boundary for event context data.\n *\n * Allowlist-first: only these keys survive, and only with scalar values —\n * objects and arrays are dropped outright, so a nested structure can never\n * smuggle a secret past the boundary (this subsumes a denylist: password,\n * client_secret, code, code_verifier, *token* etc. are simply never listed).\n *
|
|
1
|
+
{"version":3,"file":"sanitize.mjs","names":["isObject","EVENT_DIFF_SECRET_KEY_REGEX","DATA_KEY_ALLOW_LIST","DATA_VALUE_MAX_LENGTH","isDiffScalar","value","truncateDiffScalar","length","substring","sanitizeDiff","input","output","key","entry","Object","entries","test","next","previous","keys","sanitizeEventData","diff"],"sources":["../../../../src/core/entities/event/sanitize.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport { EVENT_DIFF_SECRET_KEY_REGEX } from './diff.ts';\n\n/**\n * The central PII/credential write boundary for event context data.\n *\n * Allowlist-first: only these keys survive, and only with scalar values —\n * objects and arrays are dropped outright, so a nested structure can never\n * smuggle a secret past the boundary (this subsumes a denylist: password,\n * client_secret, code, code_verifier, *token* etc. are simply never listed).\n * jti is an opaque correlation id, not PII (a session id is not listed here:\n * it rides the dedicated `sessionId` column, never the data bag).\n * name / use / status / enabled / force describe key & trust-anchor lifecycle\n * operations (issue #3269) — canonical identifiers and enum/flag metadata,\n * never material. kind is the MFA authenticator kind (totp/email/...).\n * providerId / providerName identify the identity provider on account link &\n * unlink events (plan 091): metadata only, never external tokens.\n *\n * The single structured exception is `diff` (entity-CRUD bridge): it survives\n * only as a one-level object of `{ next, previous }` scalar pairs, keys\n * re-checked against the diff secret denylist — the write boundary stays the\n * choke point even though buildEntityDiff pre-sanitizes.\n */\nconst DATA_KEY_ALLOW_LIST = [\n 'grantType',\n 'scope',\n 'responseType',\n 'prompt',\n 'error',\n 'errorCode',\n 'reason',\n 'clientName',\n 'realmName',\n 'jti',\n 'name',\n 'use',\n 'status',\n 'enabled',\n 'force',\n 'kind',\n 'providerId',\n 'providerName',\n] as const;\n\nconst DATA_VALUE_MAX_LENGTH = 512;\n\nfunction isDiffScalar(value: unknown): value is string | number | boolean | null {\n return value === null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean';\n}\n\nfunction truncateDiffScalar(\n value: string | number | boolean | null,\n): string | number | boolean | null {\n if (typeof value === 'string' && value.length > DATA_VALUE_MAX_LENGTH) {\n return value.substring(0, DATA_VALUE_MAX_LENGTH);\n }\n\n return value;\n}\n\nfunction sanitizeDiff(input: unknown): Record<string, any> | null {\n if (!isObject(input)) {\n return null;\n }\n\n const output: Record<string, any> = {};\n\n for (const [key, entry] of Object.entries(input)) {\n if (EVENT_DIFF_SECRET_KEY_REGEX.test(key)) {\n continue;\n }\n\n if (!isObject(entry)) {\n continue;\n }\n\n const { next, previous } = entry;\n if (!isDiffScalar(next) || !isDiffScalar(previous)) {\n continue;\n }\n\n output[key] = {\n next: truncateDiffScalar(next),\n previous: truncateDiffScalar(previous),\n };\n }\n\n if (Object.keys(output).length === 0) {\n return null;\n }\n\n return output;\n}\n\nexport function sanitizeEventData(\n input?: Record<string, any> | null,\n): Record<string, any> | null {\n if (!input) {\n return null;\n }\n\n const output: Record<string, any> = {};\n\n for (const key of DATA_KEY_ALLOW_LIST) {\n const value = input[key];\n\n if (typeof value === 'string') {\n output[key] = value.length > DATA_VALUE_MAX_LENGTH ?\n value.substring(0, DATA_VALUE_MAX_LENGTH) :\n value;\n } else if (typeof value === 'number' || typeof value === 'boolean') {\n output[key] = value;\n }\n }\n\n const diff = sanitizeDiff(input.diff);\n if (diff) {\n output.diff = diff;\n }\n\n if (Object.keys(output).length === 0) {\n return null;\n }\n\n return output;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;GA8BA,MAAME,sBAAsB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AAED,MAAMC,wBAAwB;AAE9B,SAASC,aAAaC,OAAc;CAChC,OAAOA,UAAU,QACb,OAAOA,UAAU,YACjB,OAAOA,UAAU,YACjB,OAAOA,UAAU;AACzB;AAEA,SAASC,mBACLD,OAAuC;CAEvC,IAAI,OAAOA,UAAU,YAAYA,MAAME,SAASJ,uBAC5C,OAAOE,MAAMG,UAAU,GAAGL,qBAAAA;CAG9B,OAAOE;AACX;AAEA,SAASI,aAAaC,OAAc;CAChC,IAAI,CAACV,SAASU,KAAAA,GACV,OAAO;CAGX,MAAMC,SAA8B,CAAC;CAErC,KAAK,MAAM,CAACC,KAAKC,UAAUC,OAAOC,QAAQL,KAAAA,GAAQ;EAC9C,IAAIT,4BAA4Be,KAAKJ,GAAAA,GACjC;EAGJ,IAAI,CAACZ,SAASa,KAAAA,GACV;EAGJ,MAAM,EAAEI,MAAMC,aAAaL;EAC3B,IAAI,CAACT,aAAaa,IAAAA,KAAS,CAACb,aAAac,QAAAA,GACrC;EAGJP,OAAOC,OAAO;GACVK,MAAMX,mBAAmBW,IAAAA;GACzBC,UAAUZ,mBAAmBY,QAAAA;EACjC;CACJ;CAEA,IAAIJ,OAAOK,KAAKR,MAAAA,CAAAA,CAAQJ,WAAW,GAC/B,OAAO;CAGX,OAAOI;AACX;AAEA,SAAgBS,kBACZV,OAAkC;CAElC,IAAI,CAACA,OACD,OAAO;CAGX,MAAMC,SAA8B,CAAC;CAErC,KAAK,MAAMC,OAAOV,qBAAqB;EACnC,MAAMG,QAAQK,MAAME;EAEpB,IAAI,OAAOP,UAAU,UACjBM,OAAOC,OAAOP,MAAME,SAASJ,wBACzBE,MAAMG,UAAU,GAAGL,qBAAAA,IACnBE;OACD,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,WACrDM,OAAOC,OAAOP;CAEtB;CAEA,MAAMgB,OAAOZ,aAAaC,MAAMW,IAAI;CACpC,IAAIA,MACAV,OAAOU,OAAOA;CAGlB,IAAIP,OAAOK,KAAKR,MAAAA,CAAAA,CAAQJ,WAAW,GAC/B,OAAO;CAGX,OAAOI;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,WAAW,0CAgEtB,CAAC"}
|
|
@@ -6,6 +6,27 @@ import { defineSchema } from "@rapiq/core";
|
|
|
6
6
|
//#region src/core/entities/event/schema.ts
|
|
7
7
|
const eventSchema = defineSchema({
|
|
8
8
|
name: EntityType.EVENT,
|
|
9
|
+
indexes: [
|
|
10
|
+
["id"],
|
|
11
|
+
["name", "scope"],
|
|
12
|
+
["scope"],
|
|
13
|
+
["refType", "refId"],
|
|
14
|
+
["refId"],
|
|
15
|
+
["clientId"],
|
|
16
|
+
["sessionId"],
|
|
17
|
+
["actorType"],
|
|
18
|
+
["actorId"],
|
|
19
|
+
[
|
|
20
|
+
"actorName",
|
|
21
|
+
"requestIpAddress",
|
|
22
|
+
"createdAt"
|
|
23
|
+
],
|
|
24
|
+
["requestIpAddress"],
|
|
25
|
+
["realmId"],
|
|
26
|
+
["expiring"],
|
|
27
|
+
["realmId", "createdAt"],
|
|
28
|
+
["createdAt"]
|
|
29
|
+
],
|
|
9
30
|
fields: { allowed: [
|
|
10
31
|
"id",
|
|
11
32
|
"scope",
|
|
@@ -13,6 +34,7 @@ const eventSchema = defineSchema({
|
|
|
13
34
|
"refType",
|
|
14
35
|
"refId",
|
|
15
36
|
"clientId",
|
|
37
|
+
"sessionId",
|
|
16
38
|
"actorType",
|
|
17
39
|
"actorId",
|
|
18
40
|
"actorName",
|
|
@@ -26,23 +48,30 @@ const eventSchema = defineSchema({
|
|
|
26
48
|
"expiresAt",
|
|
27
49
|
"createdAt"
|
|
28
50
|
] },
|
|
29
|
-
filters: {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
51
|
+
filters: {
|
|
52
|
+
allowed: [
|
|
53
|
+
"id",
|
|
54
|
+
"scope",
|
|
55
|
+
"name",
|
|
56
|
+
"refType",
|
|
57
|
+
"refId",
|
|
58
|
+
"clientId",
|
|
59
|
+
"sessionId",
|
|
60
|
+
"actorType",
|
|
61
|
+
"actorId",
|
|
62
|
+
"actorName",
|
|
63
|
+
"requestIpAddress",
|
|
64
|
+
"realmId",
|
|
65
|
+
"expiring",
|
|
66
|
+
"createdAt"
|
|
67
|
+
],
|
|
68
|
+
indexed: true
|
|
69
|
+
},
|
|
44
70
|
relations: { allowed: [] },
|
|
45
|
-
|
|
71
|
+
sorts: {
|
|
72
|
+
allowed: ["createdAt"],
|
|
73
|
+
indexed: true
|
|
74
|
+
},
|
|
46
75
|
pagination: { maxLimit: 50 }
|
|
47
76
|
});
|
|
48
77
|
//#endregion
|