@authup/server-core 1.0.0-beta.56 → 1.0.0-beta.57
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/role/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/role/entity.mjs +2 -1
- package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1784970000000-RoleClientForeignKey.d.ts +25 -0
- package/dist/adapters/database/migrations/mysql/1784970000000-RoleClientForeignKey.d.ts.map +1 -0
- package/dist/adapters/database/migrations/mysql/1784970000000-RoleClientForeignKey.mjs +60 -0
- package/dist/adapters/database/migrations/mysql/1784970000000-RoleClientForeignKey.mjs.map +1 -0
- package/dist/adapters/database/migrations/postgres/1784970000000-RoleClientForeignKey.d.ts +25 -0
- package/dist/adapters/database/migrations/postgres/1784970000000-RoleClientForeignKey.d.ts.map +1 -0
- package/dist/adapters/database/migrations/postgres/1784970000000-RoleClientForeignKey.mjs +60 -0
- package/dist/adapters/database/migrations/postgres/1784970000000-RoleClientForeignKey.mjs.map +1 -0
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/client/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client/module.mjs +30 -7
- package/dist/adapters/http/controllers/entities/client/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-permission/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/client-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-permission/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/client-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-role/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/client-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-role/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/client-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-scope/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/client-scope/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-scope/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/client-scope/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/consent/module.d.ts +3 -3
- package/dist/adapters/http/controllers/entities/consent/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/consent/module.mjs +15 -3
- package/dist/adapters/http/controllers/entities/consent/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/event/module.d.ts +2 -2
- package/dist/adapters/http/controllers/entities/event/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/event/module.mjs +11 -2
- package/dist/adapters/http/controllers/entities/event/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +23 -7
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/key/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/key/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/key/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/key/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/permission-policy/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.d.ts +7 -7
- package/dist/adapters/http/controllers/entities/policy/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/policy/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.mjs +29 -8
- package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/role-attribute/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-permission/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/role-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role-permission/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/role-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/scope/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/scope/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/scope/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/scope/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/session/module.d.ts +3 -3
- package/dist/adapters/http/controllers/entities/session/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/session/module.mjs +15 -3
- package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/trust-anchor/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/trust-anchor/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/user/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/user/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/user-attribute/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-authenticator/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/user-authenticator/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-permission/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/user-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-permission/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/user-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-role/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/user-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-role/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/user-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/index.mjs +2 -1
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs +1 -1
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/index.d.ts +1 -0
- package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/index.mjs +3 -1
- package/dist/adapters/http/controllers/workflows/logout/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/logout/module.mjs +5 -1
- package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/userinfo/index.d.ts +2 -0
- package/dist/adapters/http/controllers/workflows/userinfo/index.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/userinfo/index.mjs +5 -0
- package/dist/adapters/http/controllers/workflows/userinfo/module.d.ts +18 -0
- package/dist/adapters/http/controllers/workflows/userinfo/module.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/userinfo/module.mjs +53 -0
- package/dist/adapters/http/controllers/workflows/userinfo/module.mjs.map +1 -0
- package/dist/adapters/http/index.mjs +2 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +1 -0
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs +8 -0
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.mjs +2 -0
- package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
- package/dist/adapters/http/request/event-context.mjs +1 -1
- package/dist/adapters/http/request/event-context.mjs.map +1 -1
- package/dist/app/factory.d.ts +2 -1
- package/dist/app/factory.d.ts.map +1 -1
- package/dist/app/factory.mjs +2 -2
- package/dist/app/factory.mjs.map +1 -1
- package/dist/app/index.d.ts +1 -0
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.mjs +5 -1
- package/dist/app/modules/authentication/repositories/session.mjs +2 -2
- package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
- package/dist/app/modules/components/module.d.ts +3 -0
- package/dist/app/modules/components/module.d.ts.map +1 -1
- package/dist/app/modules/components/module.mjs +17 -2
- package/dist/app/modules/components/module.mjs.map +1 -1
- package/dist/app/modules/config/constants.d.ts +1 -0
- package/dist/app/modules/config/constants.d.ts.map +1 -1
- package/dist/app/modules/config/constants.mjs +1 -0
- package/dist/app/modules/config/constants.mjs.map +1 -1
- package/dist/app/modules/config/helpers.d.ts +9 -0
- package/dist/app/modules/config/helpers.d.ts.map +1 -0
- package/dist/app/modules/config/helpers.mjs +21 -0
- package/dist/app/modules/config/helpers.mjs.map +1 -0
- package/dist/app/modules/config/index.d.ts +2 -0
- package/dist/app/modules/config/index.d.ts.map +1 -1
- package/dist/app/modules/config/index.mjs +6 -1
- package/dist/app/modules/config/module.d.ts.map +1 -1
- package/dist/app/modules/config/module.mjs +2 -7
- package/dist/app/modules/config/module.mjs.map +1 -1
- package/dist/app/modules/config/normalize.d.ts.map +1 -1
- package/dist/app/modules/config/normalize.mjs +4 -0
- package/dist/app/modules/config/normalize.mjs.map +1 -1
- package/dist/app/modules/config/read/env.d.ts.map +1 -1
- package/dist/app/modules/config/read/env.mjs +2 -0
- package/dist/app/modules/config/read/env.mjs.map +1 -1
- package/dist/app/modules/config/read/fs.d.ts.map +1 -1
- package/dist/app/modules/config/read/fs.mjs +31 -8
- package/dist/app/modules/config/read/fs.mjs.map +1 -1
- package/dist/app/modules/config/trust-proxy.d.ts +28 -0
- package/dist/app/modules/config/trust-proxy.d.ts.map +1 -0
- package/dist/app/modules/config/trust-proxy.mjs +64 -0
- package/dist/app/modules/config/trust-proxy.mjs.map +1 -0
- package/dist/app/modules/config/types.d.ts +18 -0
- package/dist/app/modules/config/types.d.ts.map +1 -1
- package/dist/app/modules/config/validator.d.ts.map +1 -1
- package/dist/app/modules/config/validator.mjs +7 -0
- package/dist/app/modules/config/validator.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.mjs +3 -4
- package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-permission/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/client-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-role/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/client-role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-scope/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/client-scope/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/event/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/event/repository.mjs +4 -3
- package/dist/app/modules/database/repositories/event/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/key/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/key/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/permission/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/permission-policy/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/permission-policy/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/policy/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/query.d.ts +20 -0
- package/dist/app/modules/database/repositories/query.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/query.mjs +26 -3
- package/dist/app/modules/database/repositories/query.mjs.map +1 -1
- package/dist/app/modules/database/repositories/realm/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role-attribute/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role-permission/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/role-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/schema-validation.d.ts +17 -3
- package/dist/app/modules/database/repositories/schema-validation.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/schema-validation.mjs +29 -5
- package/dist/app/modules/database/repositories/schema-validation.mjs.map +1 -1
- package/dist/app/modules/database/repositories/scope/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/trust-anchor/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/trust-anchor/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-attribute/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-authenticator/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user-authenticator/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-permission/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-role/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user-role/repository.mjs.map +1 -1
- package/dist/app/modules/http/constants.d.ts +2 -13
- package/dist/app/modules/http/constants.d.ts.map +1 -1
- package/dist/app/modules/http/constants.mjs.map +1 -1
- package/dist/app/modules/http/module.d.ts.map +1 -1
- package/dist/app/modules/http/module.mjs +7 -1
- package/dist/app/modules/http/module.mjs.map +1 -1
- package/dist/app/modules/http/modules/controller.d.ts +4 -2
- package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
- package/dist/app/modules/http/modules/controller.mjs +16 -3
- package/dist/app/modules/http/modules/controller.mjs.map +1 -1
- package/dist/app/modules/index.mjs +5 -1
- package/dist/app/modules/oauth2/repositories/consent/repository.mjs +2 -2
- package/dist/app/modules/oauth2/repositories/consent/repository.mjs.map +1 -1
- package/dist/app/modules/provisioning/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/module.mjs +12 -4
- package/dist/app/modules/provisioning/module.mjs.map +1 -1
- package/dist/app/types.d.ts +5 -0
- package/dist/app/types.d.ts.map +1 -0
- package/dist/app/types.mjs +4 -0
- package/dist/cli/commands/healthcheck.d.ts +2 -1
- package/dist/cli/commands/healthcheck.d.ts.map +1 -1
- package/dist/cli/commands/healthcheck.mjs +3 -2
- package/dist/cli/commands/healthcheck.mjs.map +1 -1
- package/dist/cli/commands/index.d.ts +0 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.mjs +1 -2
- package/dist/cli/commands/migration.d.ts +2 -1
- package/dist/cli/commands/migration.d.ts.map +1 -1
- package/dist/cli/commands/migration.mjs +3 -2
- package/dist/cli/commands/migration.mjs.map +1 -1
- package/dist/cli/commands/start.d.ts +2 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.mjs +3 -2
- package/dist/cli/commands/start.mjs.map +1 -1
- package/dist/cli/config.d.ts +18 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.mjs +34 -0
- package/dist/cli/config.mjs.map +1 -0
- package/dist/cli/module.d.ts +8 -8
- package/dist/cli/module.d.ts.map +1 -1
- package/dist/cli/module.mjs +8 -28
- package/dist/cli/module.mjs.map +1 -1
- package/dist/cli/types.d.ts +5 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.mjs +4 -0
- package/dist/components/event-cleaner/module.d.ts.map +1 -1
- package/dist/components/event-cleaner/module.mjs +26 -14
- package/dist/components/event-cleaner/module.mjs.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.mjs +1 -4
- package/dist/components/oauth2-cleaner/module.d.ts.map +1 -1
- package/dist/components/oauth2-cleaner/module.mjs +29 -17
- package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
- package/dist/components/types.d.ts +1 -0
- package/dist/components/types.d.ts.map +1 -1
- package/dist/core/authentication/login-throttle/service.d.ts.map +1 -1
- package/dist/core/authentication/login-throttle/service.mjs +2 -1
- package/dist/core/authentication/login-throttle/service.mjs.map +1 -1
- package/dist/core/entities/client/constants.d.ts +10 -0
- package/dist/core/entities/client/constants.d.ts.map +1 -0
- package/dist/core/entities/client/constants.mjs +20 -0
- package/dist/core/entities/client/constants.mjs.map +1 -0
- package/dist/core/entities/client/index.d.ts +1 -0
- package/dist/core/entities/client/index.d.ts.map +1 -1
- package/dist/core/entities/client/index.mjs +3 -2
- package/dist/core/entities/client/schema.d.ts.map +1 -1
- package/dist/core/entities/client/schema.mjs +40 -3
- package/dist/core/entities/client/schema.mjs.map +1 -1
- package/dist/core/entities/client/service.d.ts.map +1 -1
- package/dist/core/entities/client/service.mjs +8 -60
- package/dist/core/entities/client/service.mjs.map +1 -1
- package/dist/core/entities/client/web-client.d.ts +39 -3
- package/dist/core/entities/client/web-client.d.ts.map +1 -1
- package/dist/core/entities/client/web-client.mjs +68 -12
- package/dist/core/entities/client/web-client.mjs.map +1 -1
- package/dist/core/entities/client-scope/schema.d.ts.map +1 -1
- package/dist/core/entities/client-scope/schema.mjs +3 -1
- package/dist/core/entities/client-scope/schema.mjs.map +1 -1
- package/dist/core/entities/event/constants.d.ts +7 -0
- package/dist/core/entities/event/constants.d.ts.map +1 -1
- package/dist/core/entities/event/constants.mjs +7 -1
- package/dist/core/entities/event/constants.mjs.map +1 -1
- package/dist/core/entities/event/index.mjs +2 -2
- package/dist/core/entities/event/service.mjs +1 -1
- package/dist/core/entities/event/service.mjs.map +1 -1
- package/dist/core/entities/index.mjs +4 -3
- package/dist/core/entities/role/schema.d.ts.map +1 -1
- package/dist/core/entities/role/schema.mjs +4 -0
- package/dist/core/entities/role/schema.mjs.map +1 -1
- package/dist/core/entities/session/schema.d.ts.map +1 -1
- package/dist/core/entities/session/schema.mjs +2 -0
- package/dist/core/entities/session/schema.mjs.map +1 -1
- package/dist/core/entities/user/schema.d.ts.map +1 -1
- package/dist/core/entities/user/schema.mjs +2 -0
- package/dist/core/entities/user/schema.mjs.map +1 -1
- package/dist/core/identity/password-recovery/check.mjs +4 -4
- package/dist/core/identity/password-recovery/check.mjs.map +1 -1
- package/dist/core/identity/registration/check.mjs +2 -2
- package/dist/core/identity/registration/check.mjs.map +1 -1
- package/dist/core/index.mjs +5 -3
- package/dist/core/key/check.mjs +2 -2
- package/dist/core/key/check.mjs.map +1 -1
- package/dist/core/provisioning/entities/client/relations-validator.d.ts.map +1 -1
- package/dist/core/provisioning/entities/client/relations-validator.mjs +2 -0
- package/dist/core/provisioning/entities/client/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/client/types.d.ts +8 -0
- package/dist/core/provisioning/entities/client/types.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/client/module.d.ts +3 -1
- package/dist/core/provisioning/synchronizer/client/module.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/client/module.mjs +10 -0
- package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/client/types.d.ts +3 -1
- package/dist/core/provisioning/synchronizer/client/types.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.d.ts +4 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.mjs +14 -29
- package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/index.d.ts +1 -0
- package/dist/core/provisioning/synchronizer/index.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/realm/module.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/realm/module.mjs +8 -8
- package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/types.d.ts +11 -0
- package/dist/core/provisioning/synchronizer/types.d.ts.map +1 -0
- package/dist/core/provisioning/synchronizer/types.mjs +4 -0
- package/dist/core/query/describe.d.ts +25 -0
- package/dist/core/query/describe.d.ts.map +1 -0
- package/dist/core/query/describe.mjs +50 -0
- package/dist/core/query/describe.mjs.map +1 -0
- package/dist/core/query/fields.d.ts +44 -0
- package/dist/core/query/fields.d.ts.map +1 -0
- package/dist/core/query/fields.mjs +46 -0
- package/dist/core/query/fields.mjs.map +1 -0
- package/dist/core/query/index.d.ts +1 -0
- package/dist/core/query/index.d.ts.map +1 -1
- package/dist/core/query/index.mjs +2 -1
- package/dist/core/query/module.d.ts +1 -1
- package/dist/core/query/module.mjs +1 -1
- package/dist/core/query/module.mjs.map +1 -1
- package/dist/index.mjs +6 -2
- package/dist/swagger.json +852 -145
- package/dist/ui/client/.vite/ssr-manifest.json +858 -750
- package/dist/ui/client/assets/index-Bk6-OZy9.css +2 -0
- package/dist/ui/client/assets/index-DO6_7NTJ.js +106 -0
- package/dist/ui/client/index.html +2 -2
- package/dist/ui/server/server.js +2472 -6357
- package/package.json +40 -40
- package/dist/cli/commands/reset.d.ts +0 -2
- package/dist/cli/commands/reset.d.ts.map +0 -1
- package/dist/cli/commands/reset.mjs +0 -23
- package/dist/cli/commands/reset.mjs.map +0 -1
- package/dist/components/database/index.d.ts +0 -2
- package/dist/components/database/index.d.ts.map +0 -1
- package/dist/components/database/index.mjs +0 -7
- package/dist/components/database/unique-entries/factory.d.ts +0 -4
- package/dist/components/database/unique-entries/factory.d.ts.map +0 -1
- package/dist/components/database/unique-entries/factory.mjs +0 -12
- package/dist/components/database/unique-entries/factory.mjs.map +0 -1
- package/dist/components/database/unique-entries/index.d.ts +0 -3
- package/dist/components/database/unique-entries/index.d.ts.map +0 -1
- package/dist/components/database/unique-entries/index.mjs +0 -6
- package/dist/components/database/unique-entries/module.d.ts +0 -15
- package/dist/components/database/unique-entries/module.d.ts.map +0 -1
- package/dist/components/database/unique-entries/module.mjs +0 -69
- package/dist/components/database/unique-entries/module.mjs.map +0 -1
- package/dist/ui/client/assets/index-C05uGFDe.js +0 -131
- package/dist/ui/client/assets/index-CiHrf73J.css +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["buildRedisKeyPath","isUUID","validateEntityJoinColumns","applyQuery","DatabaseConflictError","CachePrefix","UserEntity","UserPermissionEntity","UserRoleEntity","applyRealmScopeSelect","isEntityUnique","translateWhereConditions","loadBoundPermissions","RealmRepositoryAdapter","UserRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","extendManyWithEA","data","meta","findOneById","id","entity","findOneBy","extendOneWithEA","findOneByName","name","realmKey","where","realmId","resolveId","andWhere","getOne","findOneByIdOrName","idOrName","realm","findOne","findManyBy","findBy","findOneByWithEmail","addSelect","translated","create","merge","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting","getBoundRoles","entries","getRepository","find","userId","relations","role","cache","prefix","USER_OWNED_ROLES","key","milliseconds","map","entry","getBoundPermissions","junctionTarget","cachePrefix","USER_OWNED_PERMISSIONS","cacheKey"],"sources":["../../../../../../src/app/modules/database/repositories/user/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { Realm, Role, User } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { PermissionPolicyBinding } from '@authup/access';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRealmRepository, IUserRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport type { UserRepository } from '../../../../../adapters/database/domains/index.ts';\nimport {\n CachePrefix,\n UserEntity,\n UserPermissionEntity,\n UserRoleEntity,\n} from '../../../../../adapters/database/domains/index.ts';\nimport { applyRealmScopeSelect, isEntityUnique, translateWhereConditions } from '../helpers.ts';\nimport { loadBoundPermissions } from '../bindings.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type UserRepositoryAdapterContext = {\n repository: UserRepository,\n realmRepository: Repository<Realm>,\n};\n\nexport class UserRepositoryAdapter implements IUserRepository {\n private readonly repository: UserRepository;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: UserRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<User>> {\n const qb = this.repository.createQueryBuilder('user');\n qb.groupBy('user.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'user', ['id']);\n\n const [entities, total] = await qb.getManyAndCount();\n\n await this.repository.extendManyWithEA(entities);\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneById(id: string): Promise<User | null> {\n const entity = await this.findOneBy({ id });\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n qb.where('user.name = :name', { name });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('user.realmId = :realmId', { realmId });\n }\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<User | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findOne(id: string, query?: IQuery, realmKey?: string): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n\n if (isUUID(id)) {\n qb.where('user.id = :id', { id });\n } else {\n qb.where('user.name = :name', { name: id });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('user.realmId = :realmId', { realmId });\n }\n }\n\n applyQuery(qb, query);\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findManyBy(where: Record<string, any>): Promise<User[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<User | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n async findOneByWithEmail(where: Record<string, any>): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n qb.addSelect('user.email');\n\n const translated = translateWhereConditions(where);\n qb.where(translated);\n\n return qb.getOne();\n }\n\n create(data: Partial<User>): User {\n return this.repository.create(data);\n }\n\n merge(entity: User, data: Partial<User>): User {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: User): Promise<User> {\n return this.repository.save(entity);\n }\n\n async remove(entity: User): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<User>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserEntity,\n });\n }\n\n async checkUniqueness(data: Partial<User>, existing?: User): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: UserEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n\n async getBoundRoles(entity: string | User): Promise<Role[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n const entries = await this.repository.manager\n .getRepository(UserRoleEntity)\n .find({\n where: { userId: id },\n relations: { role: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: id,\n }),\n milliseconds: 60_000,\n },\n });\n\n return entries.map((entry) => entry.role);\n }\n\n async getBoundPermissions(entity: string | User): Promise<PermissionPolicyBinding[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n return loadBoundPermissions({\n manager: this.repository.manager,\n junctionTarget: UserPermissionEntity,\n where: { userId: id },\n cachePrefix: CachePrefix.USER_OWNED_PERMISSIONS,\n cacheKey: id,\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["buildRedisKeyPath","isUUID","validateEntityJoinColumns","applyQuery","redactFieldConditions","DatabaseConflictError","CachePrefix","UserEntity","UserPermissionEntity","UserRoleEntity","applyRealmScopeSelect","isEntityUnique","translateWhereConditions","loadBoundPermissions","RealmRepositoryAdapter","UserRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","extendManyWithEA","data","meta","findOneById","id","entity","findOneBy","extendOneWithEA","findOneByName","name","realmKey","where","realmId","resolveId","andWhere","getOne","findOneByIdOrName","idOrName","realm","findOne","findManyBy","findBy","findOneByWithEmail","addSelect","translated","create","merge","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting","getBoundRoles","entries","getRepository","find","userId","relations","role","cache","prefix","USER_OWNED_ROLES","key","milliseconds","map","entry","getBoundPermissions","junctionTarget","cachePrefix","USER_OWNED_PERMISSIONS","cacheKey"],"sources":["../../../../../../src/app/modules/database/repositories/user/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { Realm, Role, User } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { PermissionPolicyBinding } from '@authup/access';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRealmRepository, IUserRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport type { UserRepository } from '../../../../../adapters/database/domains/index.ts';\nimport {\n CachePrefix,\n UserEntity,\n UserPermissionEntity,\n UserRoleEntity,\n} from '../../../../../adapters/database/domains/index.ts';\nimport { applyRealmScopeSelect, isEntityUnique, translateWhereConditions } from '../helpers.ts';\nimport { loadBoundPermissions } from '../bindings.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type UserRepositoryAdapterContext = {\n repository: UserRepository,\n realmRepository: Repository<Realm>,\n};\n\nexport class UserRepositoryAdapter implements IUserRepository {\n private readonly repository: UserRepository;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: UserRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<User>> {\n const qb = this.repository.createQueryBuilder('user');\n qb.groupBy('user.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'user', ['id']);\n\n const [entities, total] = await qb.getManyAndCount();\n\n await this.repository.extendManyWithEA(entities);\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneById(id: string): Promise<User | null> {\n const entity = await this.findOneBy({ id });\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n qb.where('user.name = :name', { name });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('user.realmId = :realmId', { realmId });\n }\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<User | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findOne(id: string, query?: IQuery, realmKey?: string): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n\n if (isUUID(id)) {\n qb.where('user.id = :id', { id });\n } else {\n qb.where('user.name = :name', { name: id });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('user.realmId = :realmId', { realmId });\n }\n }\n\n applyQuery(qb, query);\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findManyBy(where: Record<string, any>): Promise<User[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<User | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n async findOneByWithEmail(where: Record<string, any>): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n qb.addSelect('user.email');\n\n const translated = translateWhereConditions(where);\n qb.where(translated);\n\n return qb.getOne();\n }\n\n create(data: Partial<User>): User {\n return this.repository.create(data);\n }\n\n merge(entity: User, data: Partial<User>): User {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: User): Promise<User> {\n return this.repository.save(entity);\n }\n\n async remove(entity: User): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<User>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserEntity,\n });\n }\n\n async checkUniqueness(data: Partial<User>, existing?: User): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: UserEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n\n async getBoundRoles(entity: string | User): Promise<Role[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n const entries = await this.repository.manager\n .getRepository(UserRoleEntity)\n .find({\n where: { userId: id },\n relations: { role: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: id,\n }),\n milliseconds: 60_000,\n },\n });\n\n return entries.map((entry) => entry.role);\n }\n\n async getBoundPermissions(entity: string | User): Promise<PermissionPolicyBinding[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n return loadBoundPermissions({\n manager: this.repository.manager,\n junctionTarget: UserPermissionEntity,\n where: { userId: id },\n cachePrefix: CachePrefix.USER_OWNED_PERMISSIONS,\n cacheKey: id,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkCA,IAAae,wBAAb,MAAaA;CACQC;CAEAC;CAEjB,YAAYC,KAAmC;EAC3C,KAAKF,aAAaE,IAAIF;EACtB,KAAKC,kBAAkB,IAAIH,uBAAuBI,IAAID,eAAe;CACzE;CAEA,MAAME,SAASC,OAA8D;EACzE,MAAMC,KAAK,KAAKL,WAAWM,mBAAmB,MAAA;EAC9CD,GAAGE,QAAQ,SAAA;EAEX,MAAM,EAAEC,eAAerB,WAAWkB,IAAID,KAAAA;EAEtCV,sBAAsBW,IAAI,QAAQ,CAAC,IAAK,CAAA;EAExC,MAAM,CAACI,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,MAAM,KAAKX,WAAWY,iBAAiBH,QAAAA;EAEvC,OAAO;GACHI,MAAMzB,sBAAsBgB,OAAOK,QAAAA;GACnCK,MAAM;IACFJ;IACA,GAAGF;GACP;EACJ;CACJ;CAEA,MAAMO,YAAYC,IAAkC;EAChD,MAAMC,SAAS,MAAM,KAAKC,UAAU,EAAEF,GAAG,CAAA;EACzC,IAAIC,QACA,MAAM,KAAKjB,WAAWmB,gBAAgBF,MAAAA;EAE1C,OAAOA;CACX;CAEA,MAAMG,cAAcC,MAAcC,UAAyC;EACvE,MAAMjB,KAAK,KAAKL,WAAWM,mBAAmB,MAAA;EAC9CD,GAAGkB,MAAM,qBAAqB,EAAEF,KAAK,CAAA;EAErC,IAAIC,UAAU;GACV,MAAME,UAAU,MAAM,KAAKvB,gBAAgBwB,UAAUH,QAAAA;GACrD,IAAI,CAACE,SACD,OAAO;GAEXnB,GAAGqB,SAAS,2BAA2B,EAAEF,QAAQ,CAAA;EACrD;EAEA,MAAMP,SAAS,MAAMZ,GAAGsB,OAAM;EAC9B,IAAIV,QACA,MAAM,KAAKjB,WAAWmB,gBAAgBF,MAAAA;EAE1C,OAAOA;CACX;CAEA,MAAMW,kBAAkBC,UAAkBC,OAAsC;EAC5E,OAAO7C,OAAO4C,QAAAA,IACV,KAAKd,YAAYc,QAAAA,IACjB,KAAKT,cAAcS,UAAUC,KAAAA;CACrC;CAEA,MAAMC,QAAQf,IAAYZ,OAAgBkB,UAAyC;EAC/E,MAAMjB,KAAK,KAAKL,WAAWM,mBAAmB,MAAA;EAE9C,IAAIrB,OAAO+B,EAAAA,GACPX,GAAGkB,MAAM,iBAAiB,EAAEP,GAAG,CAAA;OAC5B;GACHX,GAAGkB,MAAM,qBAAqB,EAAEF,MAAML,GAAG,CAAA;GAEzC,IAAIM,UAAU;IACV,MAAME,UAAU,MAAM,KAAKvB,gBAAgBwB,UAAUH,QAAAA;IACrD,IAAI,CAACE,SACD,OAAO;IAEXnB,GAAGqB,SAAS,2BAA2B,EAAEF,QAAQ,CAAA;GACrD;EACJ;EAEArC,WAAWkB,IAAID,KAAAA;EAEf,MAAMa,SAAS,MAAMZ,GAAGsB,OAAM;EAC9B,IAAIV,QACA,MAAM,KAAKjB,WAAWmB,gBAAgBF,MAAAA;EAE1C,OAAOA;CACX;CAEA,MAAMe,WAAWT,OAA6C;EAC1D,OAAO,KAAKvB,WAAWiC,OAAOrC,yBAAyB2B,KAAAA,CAAAA;CAC3D;CAEA,MAAML,UAAUK,OAAkD;EAC9D,OAAO,KAAKvB,WAAWkB,UAAUtB,yBAAyB2B,KAAAA,CAAAA;CAC9D;CAEA,MAAMW,mBAAmBX,OAAkD;EACvE,MAAMlB,KAAK,KAAKL,WAAWM,mBAAmB,MAAA;EAC9CD,GAAG8B,UAAU,YAAA;EAEb,MAAMC,aAAaxC,yBAAyB2B,KAAAA;EAC5ClB,GAAGkB,MAAMa,UAAAA;EAET,OAAO/B,GAAGsB,OAAM;CACpB;CAEAU,OAAOxB,MAA2B;EAC9B,OAAO,KAAKb,WAAWqC,OAAOxB,IAAAA;CAClC;CAEAyB,MAAMrB,QAAcJ,MAA2B;EAC3C,OAAO,KAAKb,WAAWsC,MAAMrB,QAAQJ,IAAAA;CACzC;CAEA,MAAM0B,KAAKtB,QAA6B;EACpC,OAAO,KAAKjB,WAAWuC,KAAKtB,MAAAA;CAChC;CAEA,MAAMuB,OAAOvB,QAA6B;EACtC,MAAM,KAAKjB,WAAWwC,OAAOvB,MAAAA;CACjC;CAEA,MAAMwB,oBAAoB5B,MAAoC;EAC1D,MAAM3B,0BAA0B2B,MAAM;GAClC6B,YAAY,KAAK1C,WAAW2C,QAAQC;GACpCC,cAActD;EAClB,CAAA;CACJ;CAEA,MAAMuD,gBAAgBjC,MAAqBkC,UAAgC;EAQvE,IAAI,CAACC,MAPkBrD,eAAe;GAClC+C,YAAY,KAAK1C,WAAW2C,QAAQC;GACpCC,cAActD;GACd0B,QAAQJ;GACRoC,gBAAgBF;EACpB,CAAA,GAGI,MAAM,IAAI1D,sBAAAA;CAElB;CAEA,MAAM6D,cAAcjC,QAAwC;EACxD,MAAMD,KAAK,OAAOC,WAAW,WAAWA,SAASA,OAAOD;EAexD,QAAOmC,MAde,KAAKnD,WAAW2C,QACjCS,cAAc3D,cAAAA,CAAAA,CACd4D,KAAK;GACF9B,OAAO,EAAE+B,QAAQtC,GAAG;GACpBuC,WAAW,EAAEC,MAAM,KAAK;GACxBC,OAAO;IACHzC,IAAIhC,kBAAkB;KAClB0E,QAAQpE,YAAYqE;KACpBC,KAAK5C;IACT,CAAA;IACA6C,cAAc;GAClB;EACJ,CAAA,EAAA,CAEWC,KAAKC,UAAUA,MAAMP,IAAI;CAC5C;CAEA,MAAMQ,oBAAoB/C,QAA2D;EACjF,MAAMD,KAAK,OAAOC,WAAW,WAAWA,SAASA,OAAOD;EACxD,OAAOnB,qBAAqB;GACxB8C,SAAS,KAAK3C,WAAW2C;GACzBsB,gBAAgBzE;GAChB+B,OAAO,EAAE+B,QAAQtC,GAAG;GACpBkD,aAAa5E,YAAY6E;GACzBC,UAAUpD;EACd,CAAA;CACJ;AACJ"}
|
|
@@ -3,7 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { UserAttributeEntity } from "../../../../../adapters/database/domains/user-attribute/entity.mjs";
|
|
5
5
|
import "../../../../../adapters/database/domains/index.mjs";
|
|
6
|
-
import { applyQuery } from "../query.mjs";
|
|
6
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
7
7
|
import { applyRealmScopeSelect, translateWhereConditions } from "../helpers.mjs";
|
|
8
8
|
import { validateEntityJoinColumns } from "typeorm-extension";
|
|
9
9
|
//#region src/app/modules/database/repositories/user-attribute/repository.ts
|
|
@@ -19,7 +19,7 @@ var UserAttributeRepositoryAdapter = class {
|
|
|
19
19
|
applyRealmScopeSelect(qb, "userAttribute", ["userId"]);
|
|
20
20
|
const [entities, total] = await qb.getManyAndCount();
|
|
21
21
|
return {
|
|
22
|
-
data: entities,
|
|
22
|
+
data: redactFieldConditions(query, entities),
|
|
23
23
|
meta: {
|
|
24
24
|
total,
|
|
25
25
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","UserAttributeEntity","applyRealmScopeSelect","translateWhereConditions","UserAttributeRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-attribute/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { UserAttribute } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserAttributeRepository } from '../../../../../core/index.ts';\nimport { UserAttributeEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { applyRealmScopeSelect, translateWhereConditions } from '../helpers.ts';\n\nexport class UserAttributeRepositoryAdapter implements IUserAttributeRepository {\n private readonly repository: Repository<UserAttribute>;\n\n constructor(repository: Repository<UserAttribute>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserAttribute>> {\n const qb = this.repository.createQueryBuilder('userAttribute');\n qb.groupBy('userAttribute.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'userAttribute', ['userId']);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserAttribute | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(): Promise<UserAttribute | null> {\n return null;\n }\n\n async findOneByIdOrName(idOrName: string): Promise<UserAttribute | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserAttribute[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserAttribute | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserAttribute>): UserAttribute {\n return this.repository.create(data);\n }\n\n merge(entity: UserAttribute, data: Partial<UserAttribute>): UserAttribute {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserAttribute): Promise<UserAttribute> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserAttribute): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserAttribute>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserAttributeEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","redactFieldConditions","UserAttributeEntity","applyRealmScopeSelect","translateWhereConditions","UserAttributeRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-attribute/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { UserAttribute } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserAttributeRepository } from '../../../../../core/index.ts';\nimport { UserAttributeEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { applyRealmScopeSelect, translateWhereConditions } from '../helpers.ts';\n\nexport class UserAttributeRepositoryAdapter implements IUserAttributeRepository {\n private readonly repository: Repository<UserAttribute>;\n\n constructor(repository: Repository<UserAttribute>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserAttribute>> {\n const qb = this.repository.createQueryBuilder('userAttribute');\n qb.groupBy('userAttribute.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'userAttribute', ['userId']);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserAttribute | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(): Promise<UserAttribute | null> {\n return null;\n }\n\n async findOneByIdOrName(idOrName: string): Promise<UserAttribute | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserAttribute[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserAttribute | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserAttribute>): UserAttribute {\n return this.repository.create(data);\n }\n\n merge(entity: UserAttribute, data: Partial<UserAttribute>): UserAttribute {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserAttribute): Promise<UserAttribute> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserAttribute): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserAttribute>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserAttributeEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAaM,iCAAb,MAAaA;CACQC;CAEjB,YAAYA,YAAuC;EAC/C,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAuE;EAClF,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,eAAA;EAC9CD,GAAGE,QAAQ,kBAAA;EAEX,MAAM,EAAEC,eAAeZ,WAAWS,IAAID,KAAAA;EAEtCL,sBAAsBM,IAAI,iBAAiB,CAAC,QAAS,CAAA;EAErD,MAAM,CAACI,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMf,sBAAsBO,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEAM,YAAYC,IAA2C;EACnD,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,gBAA+C;EACjD,OAAO;CACX;CAEA,MAAMC,kBAAkBC,UAAiD;EACrE,OAAO,KAAKL,YAAYK,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAsD;EACnE,OAAO,KAAKnB,WAAWoB,OAAOtB,yBAAyBqB,KAAAA,CAAAA;CAC3D;CAEA,MAAML,UAAUK,OAA2D;EACvE,OAAO,KAAKnB,WAAWc,UAAUhB,yBAAyBqB,KAAAA,CAAAA;CAC9D;CAEAE,OAAOX,MAA6C;EAChD,OAAO,KAAKV,WAAWqB,OAAOX,IAAAA;CAClC;CAEAY,MAAMC,QAAuBb,MAA6C;EACtE,OAAO,KAAKV,WAAWsB,MAAMC,QAAQb,IAAAA;CACzC;CAEA,MAAMc,KAAKD,QAA+C;EACtD,OAAO,KAAKvB,WAAWwB,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAsC;EAC/C,MAAM,KAAKvB,WAAWyB,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBhB,MAA6C;EACnE,MAAMjB,0BAA0BiB,MAAM;GAClCiB,YAAY,KAAK3B,WAAW4B,QAAQC;GACpCC,cAAclC;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "node:path";
|
|
2
2
|
import "node:url";
|
|
3
3
|
import.meta.url;
|
|
4
|
-
import { applyQuery } from "../query.mjs";
|
|
4
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
5
5
|
import { applyRealmScopeSelect } from "../helpers.mjs";
|
|
6
6
|
//#region src/app/modules/database/repositories/user-authenticator/repository.ts
|
|
7
7
|
var UserAuthenticatorRepositoryAdapter = class {
|
|
@@ -52,7 +52,7 @@ var UserAuthenticatorRepositoryAdapter = class {
|
|
|
52
52
|
if (options.owner) qb.andWhere("userAuthenticator.userId = :ownerUserId", { ownerUserId: options.owner.userId });
|
|
53
53
|
const [entities, total] = await qb.getManyAndCount();
|
|
54
54
|
return {
|
|
55
|
-
data: entities,
|
|
55
|
+
data: redactFieldConditions(query, entities),
|
|
56
56
|
meta: {
|
|
57
57
|
total,
|
|
58
58
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["applyQuery","applyRealmScopeSelect","UserAuthenticatorRepositoryAdapter","repository","create","data","save","entity","remove","removeAllByUser","userId","kind","delete","findOneById","id","findOneBy","findOneWithSecretsById","createQueryBuilder","addSelect","where","getOne","findAllByUser","find","findAllWithSecretsByUser","filter","qb","andWhere","confirmed","getMany","hasConfirmedByUser","count","countBy","findMany","query","options","pagination","owner","ownerUserId","entities","total","getManyAndCount","meta"],"sources":["../../../../../../src/app/modules/database/repositories/user-authenticator/repository.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 { UserAuthenticator, UserAuthenticatorKind } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type {\n IUserAuthenticatorRepository,\n UserAuthenticatorFindManyOptions,\n UserAuthenticatorSecretsFilter,\n} from '../../../../../core/index.ts';\nimport { applyRealmScopeSelect } from '../helpers.ts';\n\nexport class UserAuthenticatorRepositoryAdapter implements IUserAuthenticatorRepository {\n private readonly repository: Repository<UserAuthenticator>;\n\n constructor(repository: Repository<UserAuthenticator>) {\n this.repository = repository;\n }\n\n create(data: Partial<UserAuthenticator>): UserAuthenticator {\n return this.repository.create(data);\n }\n\n async save(entity: UserAuthenticator): Promise<UserAuthenticator> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserAuthenticator): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async removeAllByUser(userId: string, kind: `${UserAuthenticatorKind}`): Promise<void> {\n await this.repository.delete({ userId, kind });\n }\n\n async findOneById(id: string): Promise<UserAuthenticator | null> {\n return this.repository.findOneBy({ id });\n }\n\n async findOneWithSecretsById(id: string): Promise<UserAuthenticator | null> {\n return this.repository.createQueryBuilder('userAuthenticator')\n .addSelect(['userAuthenticator.secret', 'userAuthenticator.codes'])\n .where('userAuthenticator.id = :id', { id })\n .getOne();\n }\n\n async findAllByUser(userId: string): Promise<UserAuthenticator[]> {\n return this.repository.find({ where: { userId } });\n }\n\n async findAllWithSecretsByUser(\n userId: string,\n filter: UserAuthenticatorSecretsFilter = {},\n ): Promise<UserAuthenticator[]> {\n const qb = this.repository.createQueryBuilder('userAuthenticator')\n .addSelect(['userAuthenticator.secret', 'userAuthenticator.codes'])\n .where('userAuthenticator.userId = :userId', { userId });\n\n if (filter.kind) {\n qb.andWhere('userAuthenticator.kind = :kind', { kind: filter.kind });\n }\n\n if (typeof filter.confirmed !== 'undefined') {\n qb.andWhere('userAuthenticator.confirmed = :confirmed', { confirmed: filter.confirmed });\n }\n\n return qb.getMany();\n }\n\n async hasConfirmedByUser(userId: string): Promise<boolean> {\n const count = await this.repository.countBy({ userId, confirmed: true });\n return count > 0;\n }\n\n async findMany(\n query: IQuery,\n options: UserAuthenticatorFindManyOptions = {},\n ): Promise<EntityRepositoryFindManyResult<UserAuthenticator>> {\n const qb = this.repository.createQueryBuilder('userAuthenticator');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'userAuthenticator', ['userId']);\n\n if (options.owner) {\n // mandatory constraint — not overridable by a rapiq filter\n qb.andWhere('userAuthenticator.userId = :ownerUserId', { ownerUserId: options.owner.userId });\n }\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n}\n"],"mappings":";;;;;;AAmBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["applyQuery","redactFieldConditions","applyRealmScopeSelect","UserAuthenticatorRepositoryAdapter","repository","create","data","save","entity","remove","removeAllByUser","userId","kind","delete","findOneById","id","findOneBy","findOneWithSecretsById","createQueryBuilder","addSelect","where","getOne","findAllByUser","find","findAllWithSecretsByUser","filter","qb","andWhere","confirmed","getMany","hasConfirmedByUser","count","countBy","findMany","query","options","pagination","owner","ownerUserId","entities","total","getManyAndCount","meta"],"sources":["../../../../../../src/app/modules/database/repositories/user-authenticator/repository.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 { UserAuthenticator, UserAuthenticatorKind } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type {\n IUserAuthenticatorRepository,\n UserAuthenticatorFindManyOptions,\n UserAuthenticatorSecretsFilter,\n} from '../../../../../core/index.ts';\nimport { applyRealmScopeSelect } from '../helpers.ts';\n\nexport class UserAuthenticatorRepositoryAdapter implements IUserAuthenticatorRepository {\n private readonly repository: Repository<UserAuthenticator>;\n\n constructor(repository: Repository<UserAuthenticator>) {\n this.repository = repository;\n }\n\n create(data: Partial<UserAuthenticator>): UserAuthenticator {\n return this.repository.create(data);\n }\n\n async save(entity: UserAuthenticator): Promise<UserAuthenticator> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserAuthenticator): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async removeAllByUser(userId: string, kind: `${UserAuthenticatorKind}`): Promise<void> {\n await this.repository.delete({ userId, kind });\n }\n\n async findOneById(id: string): Promise<UserAuthenticator | null> {\n return this.repository.findOneBy({ id });\n }\n\n async findOneWithSecretsById(id: string): Promise<UserAuthenticator | null> {\n return this.repository.createQueryBuilder('userAuthenticator')\n .addSelect(['userAuthenticator.secret', 'userAuthenticator.codes'])\n .where('userAuthenticator.id = :id', { id })\n .getOne();\n }\n\n async findAllByUser(userId: string): Promise<UserAuthenticator[]> {\n return this.repository.find({ where: { userId } });\n }\n\n async findAllWithSecretsByUser(\n userId: string,\n filter: UserAuthenticatorSecretsFilter = {},\n ): Promise<UserAuthenticator[]> {\n const qb = this.repository.createQueryBuilder('userAuthenticator')\n .addSelect(['userAuthenticator.secret', 'userAuthenticator.codes'])\n .where('userAuthenticator.userId = :userId', { userId });\n\n if (filter.kind) {\n qb.andWhere('userAuthenticator.kind = :kind', { kind: filter.kind });\n }\n\n if (typeof filter.confirmed !== 'undefined') {\n qb.andWhere('userAuthenticator.confirmed = :confirmed', { confirmed: filter.confirmed });\n }\n\n return qb.getMany();\n }\n\n async hasConfirmedByUser(userId: string): Promise<boolean> {\n const count = await this.repository.countBy({ userId, confirmed: true });\n return count > 0;\n }\n\n async findMany(\n query: IQuery,\n options: UserAuthenticatorFindManyOptions = {},\n ): Promise<EntityRepositoryFindManyResult<UserAuthenticator>> {\n const qb = this.repository.createQueryBuilder('userAuthenticator');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'userAuthenticator', ['userId']);\n\n if (options.owner) {\n // mandatory constraint — not overridable by a rapiq filter\n qb.andWhere('userAuthenticator.userId = :ownerUserId', { ownerUserId: options.owner.userId });\n }\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n}\n"],"mappings":";;;;;;AAmBA,IAAaG,qCAAb,MAAaA;CACQC;CAEjB,YAAYA,YAA2C;EACnD,KAAKA,aAAaA;CACtB;CAEAC,OAAOC,MAAqD;EACxD,OAAO,KAAKF,WAAWC,OAAOC,IAAAA;CAClC;CAEA,MAAMC,KAAKC,QAAuD;EAC9D,OAAO,KAAKJ,WAAWG,KAAKC,MAAAA;CAChC;CAEA,MAAMC,OAAOD,QAA0C;EACnD,MAAM,KAAKJ,WAAWK,OAAOD,MAAAA;CACjC;CAEA,MAAME,gBAAgBC,QAAgBC,MAAiD;EACnF,MAAM,KAAKR,WAAWS,OAAO;GAAEF;GAAQC;EAAK,CAAA;CAChD;CAEA,MAAME,YAAYC,IAA+C;EAC7D,OAAO,KAAKX,WAAWY,UAAU,EAAED,GAAG,CAAA;CAC1C;CAEA,MAAME,uBAAuBF,IAA+C;EACxE,OAAO,KAAKX,WAAWc,mBAAmB,mBAAA,CAAA,CACrCC,UAAU,CAAC,4BAA4B,yBAA0B,CAAA,CAAA,CACjEC,MAAM,8BAA8B,EAAEL,GAAG,CAAA,CAAA,CACzCM,OAAM;CACf;CAEA,MAAMC,cAAcX,QAA8C;EAC9D,OAAO,KAAKP,WAAWmB,KAAK,EAAEH,OAAO,EAAET,OAAO,EAAE,CAAA;CACpD;CAEA,MAAMa,yBACFb,QACAc,SAAyC,CAAC,GACd;EAC5B,MAAMC,KAAK,KAAKtB,WAAWc,mBAAmB,mBAAA,CAAA,CACzCC,UAAU,CAAC,4BAA4B,yBAA0B,CAAA,CAAA,CACjEC,MAAM,sCAAsC,EAAET,OAAO,CAAA;EAE1D,IAAIc,OAAOb,MACPc,GAAGC,SAAS,kCAAkC,EAAEf,MAAMa,OAAOb,KAAK,CAAA;EAGtE,IAAI,OAAOa,OAAOG,cAAc,aAC5BF,GAAGC,SAAS,4CAA4C,EAAEC,WAAWH,OAAOG,UAAU,CAAA;EAG1F,OAAOF,GAAGG,QAAO;CACrB;CAEA,MAAMC,mBAAmBnB,QAAkC;EAEvD,OAAOoB,MADa,KAAK3B,WAAW4B,QAAQ;GAAErB;GAAQiB,WAAW;EAAK,CAAA,IACvD;CACnB;CAEA,MAAMK,SACFC,OACAC,UAA4C,CAAC,GACa;EAC1D,MAAMT,KAAK,KAAKtB,WAAWc,mBAAmB,mBAAA;EAE9C,MAAM,EAAEkB,eAAepC,WAAW0B,IAAIQ,KAAAA;EAEtChC,sBAAsBwB,IAAI,qBAAqB,CAAC,QAAS,CAAA;EAEzD,IAAIS,QAAQE,OAERX,GAAGC,SAAS,2CAA2C,EAAEW,aAAaH,QAAQE,MAAM1B,OAAO,CAAA;EAG/F,MAAM,CAAC4B,UAAUC,SAAS,MAAMd,GAAGe,gBAAe;EAElD,OAAO;GACHnC,MAAML,sBAAsBiC,OAAOK,QAAAA;GACnCG,MAAM;IACFF;IACA,GAAGJ;GACP;EACJ;CACJ;AACJ"}
|
|
@@ -3,7 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { UserPermissionEntity } from "../../../../../adapters/database/domains/user-permission/entity.mjs";
|
|
5
5
|
import "../../../../../adapters/database/domains/index.mjs";
|
|
6
|
-
import { applyQuery } from "../query.mjs";
|
|
6
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
7
7
|
import { translateWhereConditions } from "../helpers.mjs";
|
|
8
8
|
import { validateEntityJoinColumns } from "typeorm-extension";
|
|
9
9
|
//#region src/app/modules/database/repositories/user-permission/repository.ts
|
|
@@ -18,7 +18,7 @@ var UserPermissionRepositoryAdapter = class {
|
|
|
18
18
|
const { pagination } = applyQuery(qb, query);
|
|
19
19
|
const [entities, total] = await qb.getManyAndCount();
|
|
20
20
|
return {
|
|
21
|
-
data: entities,
|
|
21
|
+
data: redactFieldConditions(query, entities),
|
|
22
22
|
meta: {
|
|
23
23
|
total,
|
|
24
24
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","UserPermissionEntity","translateWhereConditions","UserPermissionRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-permission/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { UserPermission } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserPermissionRepository } from '../../../../../core/index.ts';\nimport { UserPermissionEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class UserPermissionRepositoryAdapter implements IUserPermissionRepository {\n private readonly repository: Repository<UserPermission>;\n\n constructor(repository: Repository<UserPermission>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserPermission>> {\n const qb = this.repository.createQueryBuilder('userPermission');\n qb.groupBy('userPermission.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserPermission | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<UserPermission | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<UserPermission | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserPermission[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserPermission | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserPermission>): UserPermission {\n return this.repository.create(data);\n }\n\n merge(entity: UserPermission, data: Partial<UserPermission>): UserPermission {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserPermission): Promise<UserPermission> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserPermission): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserPermission>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserPermissionEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","redactFieldConditions","UserPermissionEntity","translateWhereConditions","UserPermissionRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-permission/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { UserPermission } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserPermissionRepository } from '../../../../../core/index.ts';\nimport { UserPermissionEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class UserPermissionRepositoryAdapter implements IUserPermissionRepository {\n private readonly repository: Repository<UserPermission>;\n\n constructor(repository: Repository<UserPermission>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserPermission>> {\n const qb = this.repository.createQueryBuilder('userPermission');\n qb.groupBy('userPermission.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserPermission | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<UserPermission | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<UserPermission | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserPermission[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserPermission | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserPermission>): UserPermission {\n return this.repository.create(data);\n }\n\n merge(entity: UserPermission, data: Partial<UserPermission>): UserPermission {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserPermission): Promise<UserPermission> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserPermission): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserPermission>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserPermissionEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAaK,kCAAb,MAAaA;CACQC;CAEjB,YAAYA,YAAwC;EAChD,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAwE;EACnF,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,gBAAA;EAC9CD,GAAGE,QAAQ,mBAAA;EAEX,MAAM,EAAEC,eAAeX,WAAWQ,IAAID,KAAAA;EAEtC,MAAM,CAACK,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMd,sBAAsBM,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEAM,YAAYC,IAA4C;EACpD,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,cAAcC,OAA+C;EAC/D,OAAOC,QAAQC,QAAQ,IAAA;CAC3B;CAEAC,kBAAkBC,UAAkD;EAChE,OAAO,KAAKR,YAAYQ,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAuD;EACpE,OAAO,KAAKtB,WAAWuB,OAAOzB,yBAAyBwB,KAAAA,CAAAA;CAC3D;CAEA,MAAMR,UAAUQ,OAA4D;EACxE,OAAO,KAAKtB,WAAWc,UAAUhB,yBAAyBwB,KAAAA,CAAAA;CAC9D;CAEAE,OAAOd,MAA+C;EAClD,OAAO,KAAKV,WAAWwB,OAAOd,IAAAA;CAClC;CAEAe,MAAMC,QAAwBhB,MAA+C;EACzE,OAAO,KAAKV,WAAWyB,MAAMC,QAAQhB,IAAAA;CACzC;CAEA,MAAMiB,KAAKD,QAAiD;EACxD,OAAO,KAAK1B,WAAW2B,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAuC;EAChD,MAAM,KAAK1B,WAAW4B,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBnB,MAA8C;EACpE,MAAMhB,0BAA0BgB,MAAM;GAClCoB,YAAY,KAAK9B,WAAW+B,QAAQC;GACpCC,cAAcpC;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -3,7 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { UserRoleEntity } from "../../../../../adapters/database/domains/user-role/entity.mjs";
|
|
5
5
|
import "../../../../../adapters/database/domains/index.mjs";
|
|
6
|
-
import { applyQuery } from "../query.mjs";
|
|
6
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
7
7
|
import { translateWhereConditions } from "../helpers.mjs";
|
|
8
8
|
import { validateEntityJoinColumns } from "typeorm-extension";
|
|
9
9
|
//#region src/app/modules/database/repositories/user-role/repository.ts
|
|
@@ -18,7 +18,7 @@ var UserRoleRepositoryAdapter = class {
|
|
|
18
18
|
const { pagination } = applyQuery(qb, query);
|
|
19
19
|
const [entities, total] = await qb.getManyAndCount();
|
|
20
20
|
return {
|
|
21
|
-
data: entities,
|
|
21
|
+
data: redactFieldConditions(query, entities),
|
|
22
22
|
meta: {
|
|
23
23
|
total,
|
|
24
24
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","UserRoleEntity","translateWhereConditions","UserRoleRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-role/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { UserRole } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserRoleRepository } from '../../../../../core/index.ts';\nimport { UserRoleEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class UserRoleRepositoryAdapter implements IUserRoleRepository {\n private readonly repository: Repository<UserRole>;\n\n constructor(repository: Repository<UserRole>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserRole>> {\n const qb = this.repository.createQueryBuilder('userRole');\n qb.groupBy('userRole.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserRole | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<UserRole | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<UserRole | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserRole[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserRole | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserRole>): UserRole {\n return this.repository.create(data);\n }\n\n merge(entity: UserRole, data: Partial<UserRole>): UserRole {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserRole): Promise<UserRole> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserRole): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserRole>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserRoleEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","redactFieldConditions","UserRoleEntity","translateWhereConditions","UserRoleRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-role/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { UserRole } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserRoleRepository } from '../../../../../core/index.ts';\nimport { UserRoleEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class UserRoleRepositoryAdapter implements IUserRoleRepository {\n private readonly repository: Repository<UserRole>;\n\n constructor(repository: Repository<UserRole>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserRole>> {\n const qb = this.repository.createQueryBuilder('userRole');\n qb.groupBy('userRole.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserRole | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<UserRole | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<UserRole | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserRole[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserRole | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserRole>): UserRole {\n return this.repository.create(data);\n }\n\n merge(entity: UserRole, data: Partial<UserRole>): UserRole {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserRole): Promise<UserRole> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserRole): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserRole>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserRoleEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAaK,4BAAb,MAAaA;CACQC;CAEjB,YAAYA,YAAkC;EAC1C,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAkE;EAC7E,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,UAAA;EAC9CD,GAAGE,QAAQ,aAAA;EAEX,MAAM,EAAEC,eAAeX,WAAWQ,IAAID,KAAAA;EAEtC,MAAM,CAACK,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMd,sBAAsBM,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEAM,YAAYC,IAAsC;EAC9C,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,cAAcC,OAAyC;EACzD,OAAOC,QAAQC,QAAQ,IAAA;CAC3B;CAEAC,kBAAkBC,UAA4C;EAC1D,OAAO,KAAKR,YAAYQ,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAiD;EAC9D,OAAO,KAAKtB,WAAWuB,OAAOzB,yBAAyBwB,KAAAA,CAAAA;CAC3D;CAEA,MAAMR,UAAUQ,OAAsD;EAClE,OAAO,KAAKtB,WAAWc,UAAUhB,yBAAyBwB,KAAAA,CAAAA;CAC9D;CAEAE,OAAOd,MAAmC;EACtC,OAAO,KAAKV,WAAWwB,OAAOd,IAAAA;CAClC;CAEAe,MAAMC,QAAkBhB,MAAmC;EACvD,OAAO,KAAKV,WAAWyB,MAAMC,QAAQhB,IAAAA;CACzC;CAEA,MAAMiB,KAAKD,QAAqC;EAC5C,OAAO,KAAK1B,WAAW2B,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAiC;EAC1C,MAAM,KAAK1B,WAAW4B,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBnB,MAAwC;EAC9D,MAAMhB,0BAA0BgB,MAAM;GAClCoB,YAAY,KAAK9B,WAAW+B,QAAQC;GACpCC,cAAcpC;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -3,18 +3,7 @@ import { TypedToken } from 'eldin';
|
|
|
3
3
|
import type { serve } from 'routup/node';
|
|
4
4
|
export type HTTPServer = ReturnType<typeof serve>;
|
|
5
5
|
export declare const HTTPInjectionKey: {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* HTTP client for the SSR'd UI pages. `HTTPModule.setup` registers a
|
|
9
|
-
* default whose transport dispatches against the server's own listen
|
|
10
|
-
* address (see `createInternalUIHttpClient`); a registration made
|
|
11
|
-
* BEFORE setup wins (test injection). Register it with a
|
|
12
|
-
* `useFactory` provider and `lifetime: 'transient'` so every
|
|
13
|
-
* resolve yields a FRESH client: client-web-kit's authentication
|
|
14
|
-
* hook writes per-user Authorization state onto the client it
|
|
15
|
-
* attaches to, so a singleton-lifetime instance shared across
|
|
16
|
-
* concurrent renders would leak tokens between sessions.
|
|
17
|
-
*/
|
|
18
|
-
readonly UIHttpClient: TypedToken<IClient>;
|
|
6
|
+
Server: TypedToken<HTTPServer>;
|
|
7
|
+
UIHttpClient: TypedToken<IClient>;
|
|
19
8
|
};
|
|
20
9
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/http/constants.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAElD,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/http/constants.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAG;IAC5B,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CAe5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","names":["TypedToken","HTTPInjectionKey","Server","UIHttpClient"],"sources":["../../../../src/app/modules/http/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { IClient } from '@authup/core-http-kit';\nimport { TypedToken } from 'eldin';\nimport type { serve } from 'routup/node';\n\nexport type HTTPServer = ReturnType<typeof serve>;\n\nexport const HTTPInjectionKey = {\n Server: new TypedToken<HTTPServer>('Server'),\n /**\n * HTTP client for the SSR'd UI pages. `HTTPModule.setup` registers a\n * default whose transport dispatches against the server's own listen\n * address (see `createInternalUIHttpClient`); a registration made\n * BEFORE setup wins (test injection). Register it with a\n * `useFactory` provider and `lifetime: 'transient'` so every\n * resolve yields a FRESH client: client-web-kit's authentication\n * hook writes per-user Authorization state onto the client it\n * attaches to, so a singleton-lifetime instance shared across\n * concurrent renders would leak tokens between sessions.\n */\n UIHttpClient: new TypedToken<IClient>('UIHttpClient'),\n} as const;\n"],"mappings":";;;;;AAaA,MAAaC,
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":["TypedToken","HTTPInjectionKey","Server","UIHttpClient"],"sources":["../../../../src/app/modules/http/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { IClient } from '@authup/core-http-kit';\nimport { TypedToken } from 'eldin';\nimport type { serve } from 'routup/node';\n\nexport type HTTPServer = ReturnType<typeof serve>;\n\nexport const HTTPInjectionKey : {\n Server: TypedToken<HTTPServer>,\n UIHttpClient: TypedToken<IClient>,\n} = {\n Server: new TypedToken<HTTPServer>('Server'),\n /**\n * HTTP client for the SSR'd UI pages. `HTTPModule.setup` registers a\n * default whose transport dispatches against the server's own listen\n * address (see `createInternalUIHttpClient`); a registration made\n * BEFORE setup wins (test injection). Register it with a\n * `useFactory` provider and `lifetime: 'transient'` so every\n * resolve yields a FRESH client: client-web-kit's authentication\n * hook writes per-user Authorization state onto the client it\n * attaches to, so a singleton-lifetime instance shared across\n * concurrent renders would leak tokens between sessions.\n */\n UIHttpClient: new TypedToken<IClient>('UIHttpClient'),\n} as const;\n"],"mappings":";;;;;AAaA,MAAaC,mBAGT;CACAC,QAAQ,IAAIF,WAAuB,QAAA;;;;;;;;;;;IAYnCG,cAAc,IAAIH,WAAoB,cAAA;AAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/http/module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/http/module.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,qBAAa,UAAW,YAAW,OAAO;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAEhC,SAAS,CAAC,QAAQ,EAAG,UAAU,GAAG,SAAS,CAAC;IAE5C,SAAS,CAAC,UAAU,EAAG,oBAAoB,CAAC;IAE5C,SAAS,CAAC,UAAU,EAAG,oBAAoB,CAAC;IAE5C,SAAS,CAAC,sBAAsB,EAAG,OAAO,CAAC;;IAYrC,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDjD;;;;;;;OAOG;IACH,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IA+B3D;;;;;;OAMG;IACH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAehD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAevD"}
|
|
@@ -17,6 +17,7 @@ import "../metrics/index.mjs";
|
|
|
17
17
|
import { HTTPControllerModule } from "./modules/controller.mjs";
|
|
18
18
|
import { HTTPMiddlewareModule } from "./modules/middleware.mjs";
|
|
19
19
|
import "./modules/index.mjs";
|
|
20
|
+
import { AuthupError } from "@authup/errors";
|
|
20
21
|
import { App } from "routup";
|
|
21
22
|
import { Client } from "@authup/core-http-kit";
|
|
22
23
|
import { serve } from "routup/node";
|
|
@@ -45,7 +46,12 @@ var HTTPModule = class {
|
|
|
45
46
|
const config = container.resolve(ConfigInjectionKey);
|
|
46
47
|
const logger = container.resolve(LoggerInjectionKey);
|
|
47
48
|
logger.debug("Starting http server...");
|
|
48
|
-
|
|
49
|
+
let router;
|
|
50
|
+
try {
|
|
51
|
+
router = new App({ options: { trustProxy: config.trustProxy } });
|
|
52
|
+
} catch (e) {
|
|
53
|
+
throw new AuthupError(`Invalid trustProxy (TRUST_PROXY) configuration: ${e instanceof Error ? e.message : String(e)}`);
|
|
54
|
+
}
|
|
49
55
|
this.registerUIHttpClient(container);
|
|
50
56
|
this.registerMetrics(container);
|
|
51
57
|
await this.middleware.mountBefore(router, container);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["Client","App","serve","ConfigInjectionKey","createInternalUIHttpClient","NoopAuthFlowMetrics","ModuleName","HTTPInjectionKey","MetricsInjectionKey","PromAuthFlowMetrics","HTTPControllerModule","HTTPMiddlewareModule","LoggerInjectionKey","HTTPModule","name","dependencies","instance","middleware","controller","uiHttpClientRegistered","HTTP","CONFIG","LOGGER","AUTHENTICATION","IDENTITY","OAUTH2","setup","container","config","resolve","logger","debug","router","registerUIHttpClient","registerMetrics","mountBefore","mount","mountAfter","server","port","hostname","host","silent","gracefulShutdown","ready","url","register","Server","useValue","has","UIHttpClient","useFactory","c","undefined","publicURL","publicUrl","internalURL","baseURL","lifetime","enabled","middlewarePrometheus","teardown","unregister","close"],"sources":["../../../../src/app/modules/http/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { Client } from '@authup/core-http-kit';\nimport { App } from 'routup';\nimport { serve } from 'routup/node';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IModule } from 'orkos';\nimport { createInternalUIHttpClient } from '../../../adapters/http/ui/index.ts';\nimport { NoopAuthFlowMetrics } from '../../../core/index.ts';\nimport { ModuleName } from '../constants.ts';\nimport type { HTTPServer } from './constants.ts';\nimport { HTTPInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\nimport { MetricsInjectionKey, PromAuthFlowMetrics } from '../metrics/index.ts';\nimport { HTTPControllerModule, HTTPMiddlewareModule } from './modules/index.ts';\nimport { LoggerInjectionKey } from '../logger/index.ts';\n\nexport class HTTPModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected instance : HTTPServer | undefined;\n\n protected middleware : HTTPMiddlewareModule;\n\n protected controller : HTTPControllerModule;\n\n protected uiHttpClientRegistered : boolean;\n\n constructor() {\n this.name = ModuleName.HTTP;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER, ModuleName.AUTHENTICATION, ModuleName.IDENTITY, ModuleName.OAUTH2];\n this.controller = new HTTPControllerModule();\n this.middleware = new HTTPMiddlewareModule();\n this.uiHttpClientRegistered = false;\n }\n\n // ----------------------------------------------------\n\n async setup(container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const logger = container.resolve(LoggerInjectionKey);\n\n logger.debug('Starting http server...');\n\n
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["Client","AuthupError","App","serve","ConfigInjectionKey","createInternalUIHttpClient","NoopAuthFlowMetrics","ModuleName","HTTPInjectionKey","MetricsInjectionKey","PromAuthFlowMetrics","HTTPControllerModule","HTTPMiddlewareModule","LoggerInjectionKey","HTTPModule","name","dependencies","instance","middleware","controller","uiHttpClientRegistered","HTTP","CONFIG","LOGGER","AUTHENTICATION","IDENTITY","OAUTH2","setup","container","config","resolve","logger","debug","router","options","trustProxy","e","Error","message","String","registerUIHttpClient","registerMetrics","mountBefore","mount","mountAfter","server","port","hostname","host","silent","gracefulShutdown","ready","url","register","Server","useValue","has","UIHttpClient","useFactory","c","undefined","publicURL","publicUrl","internalURL","baseURL","lifetime","enabled","middlewarePrometheus","teardown","unregister","close"],"sources":["../../../../src/app/modules/http/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { Client } from '@authup/core-http-kit';\nimport { AuthupError } from '@authup/errors';\nimport { App } from 'routup';\nimport { serve } from 'routup/node';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IModule } from 'orkos';\nimport { createInternalUIHttpClient } from '../../../adapters/http/ui/index.ts';\nimport { NoopAuthFlowMetrics } from '../../../core/index.ts';\nimport { ModuleName } from '../constants.ts';\nimport type { HTTPServer } from './constants.ts';\nimport { HTTPInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\nimport { MetricsInjectionKey, PromAuthFlowMetrics } from '../metrics/index.ts';\nimport { HTTPControllerModule, HTTPMiddlewareModule } from './modules/index.ts';\nimport { LoggerInjectionKey } from '../logger/index.ts';\n\nexport class HTTPModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected instance : HTTPServer | undefined;\n\n protected middleware : HTTPMiddlewareModule;\n\n protected controller : HTTPControllerModule;\n\n protected uiHttpClientRegistered : boolean;\n\n constructor() {\n this.name = ModuleName.HTTP;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER, ModuleName.AUTHENTICATION, ModuleName.IDENTITY, ModuleName.OAUTH2];\n this.controller = new HTTPControllerModule();\n this.middleware = new HTTPMiddlewareModule();\n this.uiHttpClientRegistered = false;\n }\n\n // ----------------------------------------------------\n\n async setup(container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const logger = container.resolve(LoggerInjectionKey);\n\n logger.debug('Starting http server...');\n\n // Every request helper deriving proxy-dependent request facts\n // (getRequestIP, hostname, protocol) resolves the trust contract from\n // the app options — call sites must NOT pass their own `trustProxy`.\n let router : App;\n try {\n router = new App({ options: { trustProxy: config.trustProxy } });\n } catch (e) {\n // proxy-addr compiles the allowlist form inside the App\n // constructor; its error (\"invalid IP address: …\") does not name\n // the offending config key — attribute it.\n throw new AuthupError(\n `Invalid trustProxy (TRUST_PROXY) configuration: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n\n this.registerUIHttpClient(container);\n this.registerMetrics(container);\n\n await this.middleware.mountBefore(router, container);\n await this.controller.mount(router, container);\n await this.middleware.mountAfter(router, container);\n\n const server = serve(router, {\n port: config.port,\n hostname: config.host,\n silent: true,\n // Shutdown is driven by the orkos teardown chain (see cli/commands/start.ts);\n // srvx's plugin would only close the HTTP server, leaving DB / cache / etc. open.\n gracefulShutdown: false,\n });\n\n await server.ready();\n\n this.instance = server;\n\n if (server.url) {\n logger.debug(`Listening on ${server.url}`);\n }\n\n container.register(HTTPInjectionKey.Server, { useValue: server });\n\n logger.debug('Started http server.');\n }\n\n // ----------------------------------------------------\n\n /**\n * Default HTTP client for the SSR'd UI pages: dispatches against the\n * server's own listen address instead of round-tripping through the\n * reverse proxy at `publicUrl` (see `createInternalUIHttpClient`).\n * Skipped when the token is already bound (test injection wins).\n * Transient lifetime is mandatory — client-web-kit's authentication\n * hook writes per-user Authorization state onto the client.\n */\n protected registerUIHttpClient(container: IContainer): void {\n if (container.has(HTTPInjectionKey.UIHttpClient)) {\n return;\n }\n\n container.register(HTTPInjectionKey.UIHttpClient, {\n useFactory: (c) => {\n const config = c.resolve(ConfigInjectionKey);\n\n // The server token is registered after listen; a resolve can\n // only happen on a request, so it is present by then. The\n // guards keep an edge case on the previous (public URL)\n // dispatch behavior instead of failing the render.\n const server = c.has(HTTPInjectionKey.Server) ?\n c.resolve(HTTPInjectionKey.Server) :\n undefined;\n\n if (server && server.url) {\n return createInternalUIHttpClient({\n publicURL: config.publicUrl,\n internalURL: server.url,\n });\n }\n\n return new Client({ baseURL: config.publicUrl });\n },\n }, { lifetime: 'transient' });\n\n this.uiHttpClientRegistered = true;\n }\n\n /**\n * Auth-flow metric counters for the emit points (plan 058 Part 2).\n * Registered before the controllers are built — the factories resolve the\n * token. Prometheus-backed iff the prometheus middleware is enabled\n * (mirrors HTTPMiddlewareModule.isEnabled: boolean|object, false = off),\n * otherwise a noop so emit sites never need a guard beyond `?.`.\n */\n protected registerMetrics(container: IContainer): void {\n const config = container.resolve(ConfigInjectionKey);\n\n const enabled = typeof config.middlewarePrometheus !== 'boolean' ||\n config.middlewarePrometheus === true;\n\n container.register(MetricsInjectionKey, {\n useValue: enabled ?\n new PromAuthFlowMetrics() :\n new NoopAuthFlowMetrics(),\n });\n }\n\n // ----------------------------------------------------\n\n async teardown(container: IContainer): Promise<void> {\n if (this.uiHttpClientRegistered) {\n container.unregister(HTTPInjectionKey.UIHttpClient);\n this.uiHttpClientRegistered = false;\n }\n\n container.unregister(MetricsInjectionKey);\n\n if (!this.instance) return;\n\n container.unregister(HTTPInjectionKey.Server);\n\n await this.instance.close();\n this.instance = undefined;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { App } from 'routup';
|
|
2
2
|
import { ClientController, ClientPermissionController, ClientRoleController, ClientScopeController, ConsentController, EventController, IdentityProviderController, IdentityProviderRoleMappingController, KeyController, PermissionController, PermissionPolicyController, PolicyController, RealmController, RoleAttributeController, RoleController, RolePermissionController, ScopeController, SessionController, TrustAnchorController, UserAttributeController, UserAuthenticatorController, UserController, UserPermissionController, UserRoleController } from '../../../../adapters/http/index.ts';
|
|
3
|
-
import { ActivateController, AuthenticatorChallengeController, AuthorizeController, JwkController, LogoutController, OpenIDController, PasswordForgotController, PasswordResetController, RegisterController, StatusController, TokenController } from '../../../../adapters/http/controllers/index.ts';
|
|
3
|
+
import { ActivateController, AuthenticatorChallengeController, AuthorizeController, JwkController, LogoutController, OpenIDController, PasswordForgotController, PasswordResetController, RegisterController, StatusController, TokenController, UserInfoController } from '../../../../adapters/http/controllers/index.ts';
|
|
4
4
|
import type { IContainer } from 'eldin';
|
|
5
|
-
import { ConsentService, OAuth2AccessPolicyEvaluator, OAuth2MfaLoginService, PasswordRecoveryService, RegistrationService, UserAuthenticatorService } from '../../../../core/index.ts';
|
|
5
|
+
import { ConsentService, OAuth2AccessPolicyEvaluator, OAuth2MfaLoginService, PasswordRecoveryService, RegistrationService, UserAuthenticatorService, UserService } from '../../../../core/index.ts';
|
|
6
6
|
import type { StatusResponseFeatures } from '@authup/core-http-kit';
|
|
7
7
|
import type { Config } from '../../config/index.ts';
|
|
8
8
|
export declare class HTTPControllerModule {
|
|
@@ -46,7 +46,9 @@ export declare class HTTPControllerModule {
|
|
|
46
46
|
protected resolveMfaLoginService(container: IContainer): OAuth2MfaLoginService;
|
|
47
47
|
createAuthenticatorChallengeController(container: IContainer): AuthenticatorChallengeController;
|
|
48
48
|
createEventController(container: IContainer): EventController;
|
|
49
|
+
createUserService(container: IContainer): UserService;
|
|
49
50
|
createUserController(container: IContainer): UserController;
|
|
51
|
+
createUserInfoController(container: IContainer): UserInfoController;
|
|
50
52
|
createUserAttributeController(container: IContainer): UserAttributeController;
|
|
51
53
|
createUserPermissionController(container: IContainer): UserPermissionController;
|
|
52
54
|
createUserRoleController(container: IContainer): UserRoleController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/controller.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAmElC,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,0BAA0B,EAC1B,qCAAqC,EACrC,aAAa,EACb,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAErB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,kBAAkB,EAClB,gCAAgC,EAChC,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,6 +118,7 @@ import { PasswordResetController } from "../../../../adapters/http/controllers/w
|
|
|
118
118
|
import { RegisterController } from "../../../../adapters/http/controllers/workflows/register/module.mjs";
|
|
119
119
|
import { StatusController } from "../../../../adapters/http/controllers/workflows/status/module.mjs";
|
|
120
120
|
import { TokenController } from "../../../../adapters/http/controllers/workflows/token/module.mjs";
|
|
121
|
+
import { UserInfoController } from "../../../../adapters/http/controllers/workflows/userinfo/module.mjs";
|
|
121
122
|
import { RealmController } from "../../../../adapters/http/controllers/entities/realm/module.mjs";
|
|
122
123
|
import { RoleController } from "../../../../adapters/http/controllers/entities/role/module.mjs";
|
|
123
124
|
import { RoleAttributeController } from "../../../../adapters/http/controllers/entities/role-attribute/module.mjs";
|
|
@@ -177,6 +178,7 @@ var HTTPControllerModule = class {
|
|
|
177
178
|
this.createRegisterController(container),
|
|
178
179
|
this.createLogoutController(container),
|
|
179
180
|
this.createAuthenticatorChallengeController(container),
|
|
181
|
+
this.createUserInfoController(container),
|
|
180
182
|
this.createStatusController(container),
|
|
181
183
|
clientController,
|
|
182
184
|
clientPermissionController,
|
|
@@ -636,18 +638,24 @@ var HTTPControllerModule = class {
|
|
|
636
638
|
createEventController(container) {
|
|
637
639
|
return new EventController({ service: container.resolve(DatabaseInjectionKey.EventService) });
|
|
638
640
|
}
|
|
639
|
-
|
|
641
|
+
createUserService(container) {
|
|
640
642
|
const config = container.resolve(ConfigInjectionKey);
|
|
641
643
|
const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
|
|
642
644
|
const realmRepository = container.resolve(RealmEntity);
|
|
643
|
-
return new
|
|
645
|
+
return new UserService({
|
|
644
646
|
repository: new UserRepositoryAdapter({
|
|
645
647
|
repository: new UserRepository(dataSource),
|
|
646
648
|
realmRepository
|
|
647
649
|
}),
|
|
648
650
|
realmRepository: new RealmRepositoryAdapter(realmRepository),
|
|
649
651
|
passwordMinLength: config.passwordMinLength
|
|
650
|
-
})
|
|
652
|
+
});
|
|
653
|
+
}
|
|
654
|
+
createUserController(container) {
|
|
655
|
+
return new UserController({ service: this.createUserService(container) });
|
|
656
|
+
}
|
|
657
|
+
createUserInfoController(container) {
|
|
658
|
+
return new UserInfoController({ service: this.createUserService(container) });
|
|
651
659
|
}
|
|
652
660
|
createUserAttributeController(container) {
|
|
653
661
|
const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
|
|
@@ -713,6 +721,11 @@ var HTTPControllerModule = class {
|
|
|
713
721
|
repository,
|
|
714
722
|
webClientProvisioner: new WebClientProvisioner({
|
|
715
723
|
clientRepository,
|
|
724
|
+
scopeRepository: new ScopeRepositoryAdapter({
|
|
725
|
+
repository: container.resolve(ScopeEntity),
|
|
726
|
+
realmRepository
|
|
727
|
+
}),
|
|
728
|
+
clientScopeRepository: new ClientScopeRepositoryAdapter(container.resolve(ClientScopeEntity)),
|
|
716
729
|
appOrigins: getAppOrigins(config),
|
|
717
730
|
logger
|
|
718
731
|
}),
|