@things-factory/auth-base 9.0.0-beta.5 → 9.0.0-beta.50
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/config/config.development.js +46 -0
- package/config/config.production.js +45 -0
- package/dist-client/auth.js +0 -3
- package/dist-client/auth.js.map +1 -1
- package/dist-client/bootstrap.d.ts +1 -1
- package/dist-client/bootstrap.js +4 -4
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/directive/privileged.d.ts +1 -1
- package/dist-client/directive/privileged.js +1 -1
- package/dist-client/directive/privileged.js.map +1 -1
- package/dist-client/index.d.ts +4 -4
- package/dist-client/index.js +4 -4
- package/dist-client/index.js.map +1 -1
- package/dist-client/profiled.js +1 -1
- package/dist-client/profiled.js.map +1 -1
- package/dist-client/reducers/auth.js +1 -1
- package/dist-client/reducers/auth.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/auth.d.ts +5 -5
- package/dist-server/controllers/auth.js +5 -5
- package/dist-server/controllers/auth.js.map +1 -1
- package/dist-server/controllers/change-pwd.js +19 -19
- package/dist-server/controllers/change-pwd.js.map +1 -1
- package/dist-server/controllers/checkin.js +4 -4
- package/dist-server/controllers/checkin.js.map +1 -1
- package/dist-server/controllers/delete-user.js +9 -9
- package/dist-server/controllers/delete-user.js.map +1 -1
- package/dist-server/controllers/invitation.js +19 -19
- package/dist-server/controllers/invitation.js.map +1 -1
- package/dist-server/controllers/profile.d.ts +5 -5
- package/dist-server/controllers/profile.js +10 -10
- package/dist-server/controllers/profile.js.map +1 -1
- package/dist-server/controllers/reset-password.js +24 -24
- package/dist-server/controllers/reset-password.js.map +1 -1
- package/dist-server/controllers/signin.d.ts +1 -1
- package/dist-server/controllers/signin.js +24 -24
- package/dist-server/controllers/signin.js.map +1 -1
- package/dist-server/controllers/signup.d.ts +1 -1
- package/dist-server/controllers/signup.js +13 -13
- package/dist-server/controllers/signup.js.map +1 -1
- package/dist-server/controllers/unlock-user.js +17 -17
- package/dist-server/controllers/unlock-user.js.map +1 -1
- package/dist-server/controllers/utils/password-rule.js +4 -4
- package/dist-server/controllers/utils/password-rule.js.map +1 -1
- package/dist-server/controllers/utils/save-invitation-token.d.ts +1 -1
- package/dist-server/controllers/utils/save-invitation-token.js +2 -2
- package/dist-server/controllers/utils/save-invitation-token.js.map +1 -1
- package/dist-server/controllers/utils/save-verification-token.d.ts +1 -1
- package/dist-server/controllers/utils/save-verification-token.js +3 -3
- package/dist-server/controllers/utils/save-verification-token.js.map +1 -1
- package/dist-server/controllers/verification.js +23 -23
- package/dist-server/controllers/verification.js.map +1 -1
- package/dist-server/errors/auth-error.js +1 -1
- package/dist-server/errors/auth-error.js.map +1 -1
- package/dist-server/errors/index.d.ts +2 -2
- package/dist-server/errors/index.js +2 -2
- package/dist-server/errors/index.js.map +1 -1
- package/dist-server/errors/user-domain-not-match-error.d.ts +1 -1
- package/dist-server/errors/user-domain-not-match-error.js +8 -8
- package/dist-server/errors/user-domain-not-match-error.js.map +1 -1
- package/dist-server/index.d.ts +16 -16
- package/dist-server/index.js +18 -18
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/authenticate-401-middleware.js +11 -11
- package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
- package/dist-server/middlewares/bypass-signin-middleware.d.ts +1 -0
- package/dist-server/middlewares/bypass-signin-middleware.js +20 -0
- package/dist-server/middlewares/bypass-signin-middleware.js.map +1 -0
- package/dist-server/middlewares/domain-authenticate-middleware.d.ts +1 -1
- package/dist-server/middlewares/domain-authenticate-middleware.js +9 -13
- package/dist-server/middlewares/domain-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/graphql-authenticate-middleware.js +4 -4
- package/dist-server/middlewares/graphql-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/index.d.ts +5 -5
- package/dist-server/middlewares/index.js +24 -19
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/middlewares/jwt-authenticate-middleware.js +15 -15
- package/dist-server/middlewares/jwt-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/signin-middleware.js +2 -2
- package/dist-server/middlewares/signin-middleware.js.map +1 -1
- package/dist-server/middlewares/verify-recaptcha-middleware.d.ts +3 -0
- package/dist-server/middlewares/verify-recaptcha-middleware.js +95 -0
- package/dist-server/middlewares/verify-recaptcha-middleware.js.map +1 -0
- package/dist-server/middlewares/webauthn-middleware.js +7 -7
- package/dist-server/middlewares/webauthn-middleware.js.map +1 -1
- package/dist-server/migrations/1548206416130-SeedUser.js +6 -6
- package/dist-server/migrations/1548206416130-SeedUser.js.map +1 -1
- package/dist-server/migrations/1566805283882-SeedPrivilege.js +2 -2
- package/dist-server/migrations/1566805283882-SeedPrivilege.js.map +1 -1
- package/dist-server/migrations/index.js.map +1 -1
- package/dist-server/router/auth-checkin-router.js +18 -17
- package/dist-server/router/auth-checkin-router.js.map +1 -1
- package/dist-server/router/auth-private-process-router.js +27 -19
- package/dist-server/router/auth-private-process-router.js.map +1 -1
- package/dist-server/router/auth-public-process-router.js +24 -24
- package/dist-server/router/auth-public-process-router.js.map +1 -1
- package/dist-server/router/auth-signin-router.js +6 -6
- package/dist-server/router/auth-signin-router.js.map +1 -1
- package/dist-server/router/auth-signup-router.js +11 -8
- package/dist-server/router/auth-signup-router.js.map +1 -1
- package/dist-server/router/index.d.ts +9 -9
- package/dist-server/router/index.js +9 -9
- package/dist-server/router/index.js.map +1 -1
- package/dist-server/router/oauth2/index.d.ts +2 -2
- package/dist-server/router/oauth2/index.js +2 -2
- package/dist-server/router/oauth2/index.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-authorize-router.js +6 -6
- package/dist-server/router/oauth2/oauth2-authorize-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-router.d.ts +1 -1
- package/dist-server/router/oauth2/oauth2-router.js +21 -21
- package/dist-server/router/oauth2/oauth2-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-server.js +21 -21
- package/dist-server/router/oauth2/oauth2-server.js.map +1 -1
- package/dist-server/router/site-root-router.js +4 -4
- package/dist-server/router/site-root-router.js.map +1 -1
- package/dist-server/router/webauthn-router.js +9 -9
- package/dist-server/router/webauthn-router.js.map +1 -1
- package/dist-server/routes.js +77 -51
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-mutation.js +4 -4
- package/dist-server/service/app-binding/app-binding-mutation.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-query.d.ts +4 -4
- package/dist-server/service/app-binding/app-binding-query.js +22 -22
- package/dist-server/service/app-binding/app-binding-query.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-types.d.ts +1 -1
- package/dist-server/service/app-binding/app-binding-types.js +2 -2
- package/dist-server/service/app-binding/app-binding-types.js.map +1 -1
- package/dist-server/service/app-binding/app-binding.d.ts +2 -2
- package/dist-server/service/app-binding/app-binding.js +4 -4
- package/dist-server/service/app-binding/app-binding.js.map +1 -1
- package/dist-server/service/app-binding/index.d.ts +2 -2
- package/dist-server/service/app-binding/index.js +3 -3
- package/dist-server/service/app-binding/index.js.map +1 -1
- package/dist-server/service/appliance/appliance-mutation.d.ts +2 -2
- package/dist-server/service/appliance/appliance-mutation.js +32 -45
- package/dist-server/service/appliance/appliance-mutation.js.map +1 -1
- package/dist-server/service/appliance/appliance-query.d.ts +3 -3
- package/dist-server/service/appliance/appliance-query.js +17 -17
- package/dist-server/service/appliance/appliance-query.js.map +1 -1
- package/dist-server/service/appliance/appliance-types.d.ts +1 -1
- package/dist-server/service/appliance/appliance-types.js +2 -2
- package/dist-server/service/appliance/appliance-types.js.map +1 -1
- package/dist-server/service/appliance/appliance.d.ts +3 -1
- package/dist-server/service/appliance/appliance.js +51 -8
- package/dist-server/service/appliance/appliance.js.map +1 -1
- package/dist-server/service/appliance/index.d.ts +3 -3
- package/dist-server/service/appliance/index.js +5 -5
- package/dist-server/service/appliance/index.js.map +1 -1
- package/dist-server/service/application/application-mutation.d.ts +8 -8
- package/dist-server/service/application/application-mutation.js +20 -20
- package/dist-server/service/application/application-mutation.js.map +1 -1
- package/dist-server/service/application/application-query.d.ts +2 -2
- package/dist-server/service/application/application-query.js +16 -16
- package/dist-server/service/application/application-query.js.map +1 -1
- package/dist-server/service/application/application-types.d.ts +1 -1
- package/dist-server/service/application/application-types.js +4 -4
- package/dist-server/service/application/application-types.js.map +1 -1
- package/dist-server/service/application/application.d.ts +1 -1
- package/dist-server/service/application/application.js +12 -12
- package/dist-server/service/application/application.js.map +1 -1
- package/dist-server/service/application/index.d.ts +3 -3
- package/dist-server/service/application/index.js +5 -5
- package/dist-server/service/application/index.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-mutation.d.ts +2 -2
- package/dist-server/service/auth-provider/auth-provider-mutation.js +20 -20
- package/dist-server/service/auth-provider/auth-provider-mutation.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-query.d.ts +3 -3
- package/dist-server/service/auth-provider/auth-provider-query.js +20 -20
- package/dist-server/service/auth-provider/auth-provider-query.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-type.d.ts +1 -1
- package/dist-server/service/auth-provider/auth-provider-type.js +2 -2
- package/dist-server/service/auth-provider/auth-provider-type.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider.d.ts +3 -3
- package/dist-server/service/auth-provider/auth-provider.js +12 -12
- package/dist-server/service/auth-provider/auth-provider.js.map +1 -1
- package/dist-server/service/auth-provider/index.d.ts +3 -3
- package/dist-server/service/auth-provider/index.js +5 -5
- package/dist-server/service/auth-provider/index.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-mutation.d.ts +1 -1
- package/dist-server/service/domain-generator/domain-generator-mutation.js +11 -11
- package/dist-server/service/domain-generator/domain-generator-mutation.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-types.d.ts +1 -1
- package/dist-server/service/domain-generator/domain-generator-types.js +3 -3
- package/dist-server/service/domain-generator/domain-generator-types.js.map +1 -1
- package/dist-server/service/domain-generator/index.d.ts +1 -1
- package/dist-server/service/domain-generator/index.js +2 -2
- package/dist-server/service/domain-generator/index.js.map +1 -1
- package/dist-server/service/domain-link/domain-link-mutation.d.ts +9 -0
- package/dist-server/service/domain-link/domain-link-mutation.js +116 -0
- package/dist-server/service/domain-link/domain-link-mutation.js.map +1 -0
- package/dist-server/service/domain-link/domain-link-query.d.ts +11 -0
- package/dist-server/service/domain-link/domain-link-query.js +75 -0
- package/dist-server/service/domain-link/domain-link-query.js.map +1 -0
- package/dist-server/service/domain-link/domain-link-types.d.ts +18 -0
- package/dist-server/service/domain-link/domain-link-types.js +66 -0
- package/dist-server/service/domain-link/domain-link-types.js.map +1 -0
- package/dist-server/service/domain-link/domain-link.d.ts +28 -0
- package/dist-server/service/domain-link/domain-link.js +105 -0
- package/dist-server/service/domain-link/domain-link.js.map +1 -0
- package/dist-server/service/domain-link/index.d.ts +6 -0
- package/dist-server/service/domain-link/index.js +10 -0
- package/dist-server/service/domain-link/index.js.map +1 -0
- package/dist-server/service/granted-role/granted-role-mutation.d.ts +3 -3
- package/dist-server/service/granted-role/granted-role-mutation.js +17 -17
- package/dist-server/service/granted-role/granted-role-mutation.js.map +1 -1
- package/dist-server/service/granted-role/granted-role-query.d.ts +2 -2
- package/dist-server/service/granted-role/granted-role-query.js +13 -13
- package/dist-server/service/granted-role/granted-role-query.js.map +1 -1
- package/dist-server/service/granted-role/granted-role.d.ts +1 -1
- package/dist-server/service/granted-role/granted-role.js +3 -3
- package/dist-server/service/granted-role/granted-role.js.map +1 -1
- package/dist-server/service/granted-role/index.d.ts +3 -3
- package/dist-server/service/granted-role/index.js +5 -5
- package/dist-server/service/granted-role/index.js.map +1 -1
- package/dist-server/service/index.d.ts +27 -25
- package/dist-server/service/index.js +75 -70
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/invitation/index.d.ts +3 -3
- package/dist-server/service/invitation/index.js +5 -5
- package/dist-server/service/invitation/index.js.map +1 -1
- package/dist-server/service/invitation/invitation-mutation.d.ts +2 -2
- package/dist-server/service/invitation/invitation-mutation.js +10 -10
- package/dist-server/service/invitation/invitation-mutation.js.map +1 -1
- package/dist-server/service/invitation/invitation-query.d.ts +1 -1
- package/dist-server/service/invitation/invitation-query.js +7 -7
- package/dist-server/service/invitation/invitation-query.js.map +1 -1
- package/dist-server/service/invitation/invitation-types.d.ts +1 -1
- package/dist-server/service/invitation/invitation-types.js +2 -2
- package/dist-server/service/invitation/invitation-types.js.map +1 -1
- package/dist-server/service/invitation/invitation.d.ts +1 -1
- package/dist-server/service/invitation/invitation.js +5 -5
- package/dist-server/service/invitation/invitation.js.map +1 -1
- package/dist-server/service/login-history/index.d.ts +2 -2
- package/dist-server/service/login-history/index.js +4 -4
- package/dist-server/service/login-history/index.js.map +1 -1
- package/dist-server/service/login-history/login-history-query.d.ts +3 -3
- package/dist-server/service/login-history/login-history-query.js +11 -11
- package/dist-server/service/login-history/login-history-query.js.map +1 -1
- package/dist-server/service/login-history/login-history-type.d.ts +1 -1
- package/dist-server/service/login-history/login-history-type.js +2 -2
- package/dist-server/service/login-history/login-history-type.js.map +1 -1
- package/dist-server/service/login-history/login-history.d.ts +1 -1
- package/dist-server/service/login-history/login-history.js +4 -4
- package/dist-server/service/login-history/login-history.js.map +1 -1
- package/dist-server/service/partner/index.d.ts +3 -3
- package/dist-server/service/partner/index.js +5 -5
- package/dist-server/service/partner/index.js.map +1 -1
- package/dist-server/service/partner/partner-mutation.js +8 -8
- package/dist-server/service/partner/partner-mutation.js.map +1 -1
- package/dist-server/service/partner/partner-query.d.ts +3 -3
- package/dist-server/service/partner/partner-query.js +17 -17
- package/dist-server/service/partner/partner-query.js.map +1 -1
- package/dist-server/service/partner/partner-types.d.ts +1 -1
- package/dist-server/service/partner/partner-types.js +2 -2
- package/dist-server/service/partner/partner-types.js.map +1 -1
- package/dist-server/service/partner/partner.d.ts +1 -1
- package/dist-server/service/partner/partner.js +5 -5
- package/dist-server/service/partner/partner.js.map +1 -1
- package/dist-server/service/password-history/index.d.ts +1 -1
- package/dist-server/service/password-history/index.js +2 -2
- package/dist-server/service/password-history/index.js.map +1 -1
- package/dist-server/service/privilege/index.d.ts +3 -3
- package/dist-server/service/privilege/index.js +5 -5
- package/dist-server/service/privilege/index.js.map +1 -1
- package/dist-server/service/privilege/privilege-directive.js +2 -2
- package/dist-server/service/privilege/privilege-directive.js.map +1 -1
- package/dist-server/service/privilege/privilege-mutation.d.ts +2 -2
- package/dist-server/service/privilege/privilege-mutation.js +15 -15
- package/dist-server/service/privilege/privilege-mutation.js.map +1 -1
- package/dist-server/service/privilege/privilege-query.d.ts +4 -4
- package/dist-server/service/privilege/privilege-query.js +20 -20
- package/dist-server/service/privilege/privilege-query.js.map +1 -1
- package/dist-server/service/privilege/privilege-types.d.ts +1 -1
- package/dist-server/service/privilege/privilege-types.js +2 -2
- package/dist-server/service/privilege/privilege-types.js.map +1 -1
- package/dist-server/service/privilege/privilege.d.ts +2 -2
- package/dist-server/service/privilege/privilege.js +10 -10
- package/dist-server/service/privilege/privilege.js.map +1 -1
- package/dist-server/service/role/index.d.ts +3 -3
- package/dist-server/service/role/index.js +5 -5
- package/dist-server/service/role/index.js.map +1 -1
- package/dist-server/service/role/role-mutation.d.ts +2 -2
- package/dist-server/service/role/role-mutation.js +19 -19
- package/dist-server/service/role/role-mutation.js.map +1 -1
- package/dist-server/service/role/role-query.d.ts +9 -5
- package/dist-server/service/role/role-query.js +38 -31
- package/dist-server/service/role/role-query.js.map +1 -1
- package/dist-server/service/role/role-types.d.ts +1 -1
- package/dist-server/service/role/role-types.js +2 -2
- package/dist-server/service/role/role-types.js.map +1 -1
- package/dist-server/service/role/role.d.ts +2 -2
- package/dist-server/service/role/role.js +12 -12
- package/dist-server/service/role/role.js.map +1 -1
- package/dist-server/service/user/domain-query.d.ts +1 -1
- package/dist-server/service/user/domain-query.js +3 -3
- package/dist-server/service/user/domain-query.js.map +1 -1
- package/dist-server/service/user/index.d.ts +4 -4
- package/dist-server/service/user/index.js +6 -6
- package/dist-server/service/user/index.js.map +1 -1
- package/dist-server/service/user/user-mutation.d.ts +3 -3
- package/dist-server/service/user/user-mutation.js +42 -42
- package/dist-server/service/user/user-mutation.js.map +1 -1
- package/dist-server/service/user/user-query.d.ts +4 -3
- package/dist-server/service/user/user-query.js +31 -21
- package/dist-server/service/user/user-query.js.map +1 -1
- package/dist-server/service/user/user-types.d.ts +1 -1
- package/dist-server/service/user/user-types.js +2 -2
- package/dist-server/service/user/user-types.js.map +1 -1
- package/dist-server/service/user/user.d.ts +3 -3
- package/dist-server/service/user/user.js +40 -40
- package/dist-server/service/user/user.js.map +1 -1
- package/dist-server/service/users-auth-providers/index.d.ts +1 -1
- package/dist-server/service/users-auth-providers/index.js +2 -2
- package/dist-server/service/users-auth-providers/index.js.map +1 -1
- package/dist-server/service/users-auth-providers/users-auth-providers.d.ts +2 -2
- package/dist-server/service/users-auth-providers/users-auth-providers.js +8 -8
- package/dist-server/service/users-auth-providers/users-auth-providers.js.map +1 -1
- package/dist-server/service/verification-token/index.d.ts +1 -1
- package/dist-server/service/verification-token/index.js +2 -2
- package/dist-server/service/verification-token/index.js.map +1 -1
- package/dist-server/service/web-auth-credential/index.d.ts +1 -1
- package/dist-server/service/web-auth-credential/index.js +2 -2
- package/dist-server/service/web-auth-credential/index.js.map +1 -1
- package/dist-server/service/web-auth-credential/web-auth-credential.d.ts +1 -1
- package/dist-server/service/web-auth-credential/web-auth-credential.js +10 -10
- package/dist-server/service/web-auth-credential/web-auth-credential.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/types.d.ts +1 -1
- package/dist-server/types.js.map +1 -1
- package/dist-server/utils/access-token-cookie.js +2 -11
- package/dist-server/utils/access-token-cookie.js.map +1 -1
- package/dist-server/utils/check-permission.d.ts +2 -2
- package/dist-server/utils/check-permission.js +3 -3
- package/dist-server/utils/check-permission.js.map +1 -1
- package/dist-server/utils/check-user-belongs-domain.d.ts +1 -1
- package/dist-server/utils/check-user-belongs-domain.js +2 -2
- package/dist-server/utils/check-user-belongs-domain.js.map +1 -1
- package/dist-server/utils/get-domain-users.d.ts +1 -1
- package/dist-server/utils/get-domain-users.js +2 -2
- package/dist-server/utils/get-domain-users.js.map +1 -1
- package/dist-server/utils/get-user-domains.d.ts +2 -3
- package/dist-server/utils/get-user-domains.js +30 -26
- package/dist-server/utils/get-user-domains.js.map +1 -1
- package/helps/config/recaptcha.ja.md +49 -0
- package/helps/config/recaptcha.ko.md +49 -0
- package/helps/config/recaptcha.md +49 -0
- package/helps/config/recaptcha.ms.md +49 -0
- package/helps/config/recaptcha.zh.md +49 -0
- package/package.json +7 -6
- package/dist-server/utils/get-domain-from-hostname.d.ts +0 -1
- package/dist-server/utils/get-domain-from-hostname.js +0 -9
- package/dist-server/utils/get-domain-from-hostname.js.map +0 -1
@@ -1,9 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
const tslib_1 = require("tslib");
|
4
|
-
tslib_1.__exportStar(require("./change-pwd"), exports);
|
5
|
-
tslib_1.__exportStar(require("./signin"), exports);
|
6
|
-
tslib_1.__exportStar(require("./signup"), exports);
|
7
|
-
tslib_1.__exportStar(require("./verification"), exports);
|
8
|
-
tslib_1.__exportStar(require("./invitation"), exports);
|
4
|
+
tslib_1.__exportStar(require("./change-pwd.js"), exports);
|
5
|
+
tslib_1.__exportStar(require("./signin.js"), exports);
|
6
|
+
tslib_1.__exportStar(require("./signup.js"), exports);
|
7
|
+
tslib_1.__exportStar(require("./verification.js"), exports);
|
8
|
+
tslib_1.__exportStar(require("./invitation.js"), exports);
|
9
9
|
//# sourceMappingURL=auth.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../server/controllers/auth.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../server/controllers/auth.ts"],"names":[],"mappings":";;;AAAA,0DAA+B;AAC/B,sDAA2B;AAC3B,sDAA2B;AAC3B,4DAAiC;AACjC,0DAA+B","sourcesContent":["export * from './change-pwd.js'\nexport * from './signin.js'\nexport * from './signup.js'\nexport * from './verification.js'\nexport * from './invitation.js'\n"]}
|
@@ -3,29 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.changePwd = changePwd;
|
4
4
|
const env_1 = require("@things-factory/env");
|
5
5
|
const shell_1 = require("@things-factory/shell");
|
6
|
-
const
|
7
|
-
const
|
8
|
-
const
|
9
|
-
const
|
6
|
+
const error_code_js_1 = require("../constants/error-code.js");
|
7
|
+
const auth_error_js_1 = require("../errors/auth-error.js");
|
8
|
+
const password_history_js_1 = require("../service/password-history/password-history.js");
|
9
|
+
const user_js_1 = require("../service/user/user.js");
|
10
10
|
const HISTORY_SIZE = env_1.config.get('password', { history: 0 }).history;
|
11
11
|
async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
|
12
12
|
const { domain } = context.state;
|
13
13
|
// TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
|
14
|
-
const repository = (0, shell_1.getRepository)(
|
14
|
+
const repository = (0, shell_1.getRepository)(user_js_1.User);
|
15
15
|
const user = await repository.findOne({ where: { id: attrs.id } });
|
16
16
|
if (!user) {
|
17
|
-
throw new
|
18
|
-
errorCode:
|
17
|
+
throw new auth_error_js_1.AuthError({
|
18
|
+
errorCode: error_code_js_1.USER_NOT_FOUND
|
19
19
|
});
|
20
20
|
}
|
21
21
|
if (newPass !== confirmPass) {
|
22
|
-
throw new
|
23
|
-
errorCode:
|
22
|
+
throw new auth_error_js_1.AuthError({
|
23
|
+
errorCode: error_code_js_1.CONFIRM_PASSWORD_NOT_MATCHED
|
24
24
|
});
|
25
25
|
}
|
26
|
-
if (!
|
27
|
-
throw new
|
28
|
-
errorCode:
|
26
|
+
if (!user_js_1.User.verify(user.password, currentPass, user.salt)) {
|
27
|
+
throw new auth_error_js_1.AuthError({
|
28
|
+
errorCode: error_code_js_1.PASSWORD_NOT_MATCHED,
|
29
29
|
detail: {
|
30
30
|
username: user.username,
|
31
31
|
email: user.email,
|
@@ -34,10 +34,10 @@ async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
|
|
34
34
|
});
|
35
35
|
}
|
36
36
|
/* check if password is following the rule */
|
37
|
-
|
38
|
-
user.password =
|
37
|
+
user_js_1.User.validatePasswordByRule(newPass, context === null || context === void 0 ? void 0 : context.lng);
|
38
|
+
user.password = user_js_1.User.encode(newPass, user.salt);
|
39
39
|
if (HISTORY_SIZE > 0) {
|
40
|
-
var passwordHistory = await (0, shell_1.getRepository)(
|
40
|
+
var passwordHistory = await (0, shell_1.getRepository)(password_history_js_1.PasswordHistory).findOneBy({ userId: user.id });
|
41
41
|
var history = [];
|
42
42
|
if (passwordHistory) {
|
43
43
|
try {
|
@@ -51,11 +51,11 @@ async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
|
|
51
51
|
console.error('password history currupted - not json format');
|
52
52
|
}
|
53
53
|
const found = history.slice(0, HISTORY_SIZE).find(h => {
|
54
|
-
return
|
54
|
+
return user_js_1.User.verify(h.password, newPass, h.salt);
|
55
55
|
});
|
56
56
|
if (found) {
|
57
|
-
throw new
|
58
|
-
errorCode:
|
57
|
+
throw new auth_error_js_1.AuthError({
|
58
|
+
errorCode: error_code_js_1.PASSWORD_USED_PAST
|
59
59
|
});
|
60
60
|
}
|
61
61
|
}
|
@@ -69,7 +69,7 @@ async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
|
|
69
69
|
},
|
70
70
|
...history
|
71
71
|
].slice(0, HISTORY_SIZE);
|
72
|
-
await (0, shell_1.getRepository)(
|
72
|
+
await (0, shell_1.getRepository)(password_history_js_1.PasswordHistory).save({
|
73
73
|
userId: user.id,
|
74
74
|
history: JSON.stringify(history)
|
75
75
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"change-pwd.js","sourceRoot":"","sources":["../../server/controllers/change-pwd.ts"],"names":[],"mappings":";;AAeA,8BAoFC;AAnGD,6CAA4C;AAC5C,iDAAqD;AAErD,
|
1
|
+
{"version":3,"file":"change-pwd.js","sourceRoot":"","sources":["../../server/controllers/change-pwd.ts"],"names":[],"mappings":"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","sourcesContent":["import { config } from '@things-factory/env'\nimport { getRepository } from '@things-factory/shell'\n\nimport {\n CONFIRM_PASSWORD_NOT_MATCHED,\n PASSWORD_NOT_MATCHED,\n PASSWORD_USED_PAST,\n USER_NOT_FOUND\n} from '../constants/error-code.js'\nimport { AuthError } from '../errors/auth-error.js'\nimport { PasswordHistory } from '../service/password-history/password-history.js'\nimport { User } from '../service/user/user.js'\n\nconst HISTORY_SIZE = config.get('password', { history: 0 }).history\n\nexport async function changePwd(attrs, currentPass, newPass, confirmPass, context) {\n const { domain } = context.state\n\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n const repository = getRepository(User)\n\n const user: User = await repository.findOne({ where: { id: attrs.id } })\n\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n if (newPass !== confirmPass) {\n throw new AuthError({\n errorCode: CONFIRM_PASSWORD_NOT_MATCHED\n })\n }\n\n if (!User.verify(user.password, currentPass, user.salt)) {\n throw new AuthError({\n errorCode: PASSWORD_NOT_MATCHED,\n detail: {\n username: user.username,\n email: user.email,\n failCount: user.failCount\n }\n })\n }\n\n /* check if password is following the rule */\n User.validatePasswordByRule(newPass, context?.lng)\n\n user.password = User.encode(newPass, user.salt)\n\n if (HISTORY_SIZE > 0) {\n var passwordHistory: PasswordHistory = await getRepository(PasswordHistory).findOneBy({ userId: user.id })\n var history = []\n\n if (passwordHistory) {\n try {\n history = JSON.parse(passwordHistory.history)\n if (!(history instanceof Array)) {\n console.error('password history maybe currupted - not an array')\n history = []\n }\n } catch (e) {\n console.error('password history currupted - not json format')\n }\n\n const found = history.slice(0, HISTORY_SIZE).find(h => {\n return User.verify(h.password, newPass, h.salt)\n })\n\n if (found) {\n throw new AuthError({\n errorCode: PASSWORD_USED_PAST\n })\n }\n }\n }\n\n await repository.save({\n ...user,\n passwordUpdatedAt: new Date()\n })\n\n if (HISTORY_SIZE > 0) {\n history = [\n {\n password: user.password,\n salt: user.salt\n },\n ...history\n ].slice(0, HISTORY_SIZE)\n\n await getRepository(PasswordHistory).save({\n userId: user.id,\n history: JSON.stringify(history)\n })\n }\n\n return await user.sign({ subdomain: domain.subdomain })\n}\n"]}
|
@@ -2,12 +2,12 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.checkin = checkin;
|
4
4
|
const shell_1 = require("@things-factory/shell");
|
5
|
-
const
|
6
|
-
const
|
5
|
+
const user_js_1 = require("../service/user/user.js");
|
6
|
+
const get_user_domains_js_1 = require("../utils/get-user-domains.js");
|
7
7
|
async function checkin({ userId, subdomain }) {
|
8
|
-
const userRepo = (0, shell_1.getRepository)(
|
8
|
+
const userRepo = (0, shell_1.getRepository)(user_js_1.User);
|
9
9
|
const user = await userRepo.findOne({ where: { id: userId } });
|
10
|
-
const domains = await (0,
|
10
|
+
const domains = await (0, get_user_domains_js_1.getUserDomains)(user);
|
11
11
|
if (!(domains === null || domains === void 0 ? void 0 : domains.length)) {
|
12
12
|
return false;
|
13
13
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../server/controllers/checkin.ts"],"names":[],"mappings":";;AAKA,0BAeC;AApBD,iDAA6D;AAE7D
|
1
|
+
{"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../server/controllers/checkin.ts"],"names":[],"mappings":";;AAKA,0BAeC;AApBD,iDAA6D;AAE7D,qDAA8C;AAC9C,sEAA6D;AAEtD,KAAK,UAAU,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;IACjD,MAAM,QAAQ,GAAG,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAsB,MAAM,IAAA,oCAAc,EAAC,IAAI,CAAC,CAAA;IAE7D,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE,CAAC;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;IACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AACvC,CAAC","sourcesContent":["import { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user.js'\nimport { getUserDomains } from '../utils/get-user-domains.js'\n\nexport async function checkin({ userId, subdomain }) {\n const userRepo = getRepository(User)\n const user = await userRepo.findOne({ where: { id: userId } })\n const domains: Partial<Domain>[] = await getUserDomains(user)\n\n if (!domains?.length) {\n return false\n }\n\n const domain = domains.find(domain => domain.subdomain == subdomain)\n if (!domain) {\n return false\n }\n\n return await user.sign({ subdomain })\n}\n"]}
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.deleteUser = deleteUser;
|
4
4
|
exports.deleteUsers = deleteUsers;
|
5
5
|
const typeorm_1 = require("typeorm");
|
6
|
-
const
|
7
|
-
const
|
8
|
-
const
|
6
|
+
const user_js_1 = require("../service/user/user.js");
|
7
|
+
const auth_error_js_1 = require("../errors/auth-error.js");
|
8
|
+
const error_code_js_1 = require("../constants/error-code.js");
|
9
9
|
async function deleteUser(attrs, tx) {
|
10
10
|
// TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
|
11
11
|
// TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.
|
12
|
-
const repository = tx === null || tx === void 0 ? void 0 : tx.getRepository(
|
12
|
+
const repository = tx === null || tx === void 0 ? void 0 : tx.getRepository(user_js_1.User);
|
13
13
|
const { username } = attrs;
|
14
14
|
var user = await repository.findOne({
|
15
15
|
where: { username },
|
@@ -22,11 +22,11 @@ async function deleteUser(attrs, tx) {
|
|
22
22
|
});
|
23
23
|
}
|
24
24
|
if (!user) {
|
25
|
-
throw new
|
26
|
-
errorCode:
|
25
|
+
throw new auth_error_js_1.AuthError({
|
26
|
+
errorCode: error_code_js_1.USER_NOT_FOUND
|
27
27
|
});
|
28
28
|
}
|
29
|
-
user.status =
|
29
|
+
user.status = user_js_1.UserStatus.DELETED;
|
30
30
|
user.domains = [];
|
31
31
|
await repository.save(user);
|
32
32
|
}
|
@@ -34,7 +34,7 @@ async function deleteUsers(attrs, tx) {
|
|
34
34
|
// TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
|
35
35
|
// TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.
|
36
36
|
const { usernames } = attrs;
|
37
|
-
const repo = tx === null || tx === void 0 ? void 0 : tx.getRepository(
|
37
|
+
const repo = tx === null || tx === void 0 ? void 0 : tx.getRepository(user_js_1.User);
|
38
38
|
const users = await repo.find({
|
39
39
|
where: {
|
40
40
|
username: (0, typeorm_1.In)(usernames)
|
@@ -42,7 +42,7 @@ async function deleteUsers(attrs, tx) {
|
|
42
42
|
});
|
43
43
|
const userIds = [];
|
44
44
|
users.forEach(user => {
|
45
|
-
user.status =
|
45
|
+
user.status = user_js_1.UserStatus.DELETED;
|
46
46
|
user.domains = [];
|
47
47
|
userIds.push(user.id);
|
48
48
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"delete-user.js","sourceRoot":"","sources":["../../server/controllers/delete-user.ts"],"names":[],"mappings":";;AAKA,gCA6BC;AAED,kCAkCC;AAtED,qCAAkD;AAClD
|
1
|
+
{"version":3,"file":"delete-user.js","sourceRoot":"","sources":["../../server/controllers/delete-user.ts"],"names":[],"mappings":";;AAKA,gCA6BC;AAED,kCAkCC;AAtED,qCAAkD;AAClD,qDAA0D;AAC1D,2DAAmD;AACnD,8DAA2D;AAEpD,KAAK,UAAU,UAAU,CAAC,KAAK,EAAE,EAAkB;IACxD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,UAAU,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,cAAI,CAAC,CAAA;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAE1B,IAAI,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAClC,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,SAAS,EAAE,CAAC,SAAS,CAAC;KACvB,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,QAAQ,CAAC,EAAE;YACjC,SAAS,EAAE,CAAC,SAAS,CAAC;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,yBAAS,CAAC;YAClB,SAAS,EAAE,8BAAc;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,GAAG,oBAAU,CAAC,OAAO,CAAA;IAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IAEjB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,KAAK,EAAE,EAAkB;IACzD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAE3B,MAAM,IAAI,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,cAAI,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE;YACL,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC;SACxB;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,MAAM,GAAG,oBAAU,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEtB,2BAA2B;IAC3B,kBAAkB;IAClB,0BAA0B;IAC1B,cAAc;IACd,2BAA2B;IAC3B,aAAa;IACb,2BAA2B;IAC3B,OAAO;IACP,eAAe;IACf,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import { EntityManager, ILike, In } from 'typeorm'\nimport { User, UserStatus } from '../service/user/user.js'\nimport { AuthError } from '../errors/auth-error.js'\nimport { USER_NOT_FOUND } from '../constants/error-code.js'\n\nexport async function deleteUser(attrs, tx?: EntityManager) {\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.\n\n const repository = tx?.getRepository(User)\n const { username } = attrs\n\n var user = await repository.findOne({\n where: { username },\n relations: ['domains']\n })\n\n if (!user && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(username)) {\n user = await repository.findOne({\n where: { email: ILike(username) },\n relations: ['domains']\n })\n }\n\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n user.status = UserStatus.DELETED\n user.domains = []\n\n await repository.save(user)\n}\n\nexport async function deleteUsers(attrs, tx?: EntityManager) {\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.\n\n const { usernames } = attrs\n\n const repo = tx?.getRepository(User)\n\n const users = await repo.find({\n where: {\n username: In(usernames)\n }\n })\n\n const userIds = []\n users.forEach(user => {\n user.status = UserStatus.DELETED\n user.domains = []\n\n userIds.push(user.id)\n })\n\n await repo.save(users)\n\n // repository api는 작동하지 않음.\n // await txManager\n // .createQueryBuilder()\n // .delete()\n // .from('users_domains')\n // .where({\n // usersId: In(userIds)\n // })\n // .execute()\n return true\n}\n"]}
|
@@ -8,14 +8,14 @@ const typeorm_1 = require("typeorm");
|
|
8
8
|
const url_1 = require("url");
|
9
9
|
const email_base_1 = require("@things-factory/email-base");
|
10
10
|
const shell_1 = require("@things-factory/shell");
|
11
|
-
const
|
12
|
-
const
|
13
|
-
const
|
14
|
-
const
|
15
|
-
const
|
11
|
+
const invitation_js_1 = require("../service/invitation/invitation.js");
|
12
|
+
const user_js_1 = require("../service/user/user.js");
|
13
|
+
const invitation_email_js_1 = require("../templates/invitation-email.js");
|
14
|
+
const make_invitation_token_js_1 = require("./utils/make-invitation-token.js");
|
15
|
+
const save_invitation_token_js_1 = require("./utils/save-invitation-token.js");
|
16
16
|
async function invite(attrs, withEmailInvitation) {
|
17
17
|
const { username, reference, type, context } = attrs;
|
18
|
-
const repository = (0, shell_1.getRepository)(
|
18
|
+
const repository = (0, shell_1.getRepository)(user_js_1.User);
|
19
19
|
var user = await repository.findOne({
|
20
20
|
where: { username },
|
21
21
|
relations: ['domains']
|
@@ -38,13 +38,13 @@ async function invite(attrs, withEmailInvitation) {
|
|
38
38
|
if (withEmailInvitation) {
|
39
39
|
const email = user.email;
|
40
40
|
// TODO 초대장의 유효기간을 설정할 수 있어야 함.
|
41
|
-
var invitation = await (0, shell_1.getRepository)(
|
41
|
+
var invitation = await (0, shell_1.getRepository)(invitation_js_1.Invitation).findOneBy({
|
42
42
|
email: (0, typeorm_1.ILike)(email),
|
43
43
|
reference,
|
44
44
|
type
|
45
45
|
});
|
46
46
|
if (!invitation) {
|
47
|
-
invitation = await (0, shell_1.getRepository)(
|
47
|
+
invitation = await (0, shell_1.getRepository)(invitation_js_1.Invitation).save({
|
48
48
|
email,
|
49
49
|
reference,
|
50
50
|
type
|
@@ -58,21 +58,21 @@ async function invite(attrs, withEmailInvitation) {
|
|
58
58
|
}
|
59
59
|
if (user) {
|
60
60
|
user.domains = [...domains, await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: reference })];
|
61
|
-
await (0, shell_1.getRepository)(
|
61
|
+
await (0, shell_1.getRepository)(user_js_1.User).save(user);
|
62
62
|
}
|
63
63
|
else {
|
64
64
|
// TODO need to signup
|
65
65
|
}
|
66
66
|
}
|
67
67
|
async function acceptInvitation(token) {
|
68
|
-
var invitation = await (0, shell_1.getRepository)(
|
68
|
+
var invitation = await (0, shell_1.getRepository)(invitation_js_1.Invitation).findOneBy({
|
69
69
|
token
|
70
70
|
});
|
71
71
|
if (!invitation) {
|
72
72
|
throw new Error(`not found invitation.`);
|
73
73
|
}
|
74
74
|
var { email, reference, type } = invitation;
|
75
|
-
var user = await (0, shell_1.getRepository)(
|
75
|
+
var user = await (0, shell_1.getRepository)(user_js_1.User).findOne({ where: { email: (0, typeorm_1.ILike)(email) }, relations: ['domains'] });
|
76
76
|
if (user) {
|
77
77
|
var domains = user.domains;
|
78
78
|
const domain = domains.find(domain => domain.id == reference);
|
@@ -81,8 +81,8 @@ async function acceptInvitation(token) {
|
|
81
81
|
throw new Error(msg);
|
82
82
|
}
|
83
83
|
user.domains = [...domains, await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: reference })];
|
84
|
-
await (0, shell_1.getRepository)(
|
85
|
-
await (0, shell_1.getRepository)(
|
84
|
+
await (0, shell_1.getRepository)(user_js_1.User).save(user);
|
85
|
+
await (0, shell_1.getRepository)(invitation_js_1.Invitation).delete(invitation.id);
|
86
86
|
}
|
87
87
|
else {
|
88
88
|
// TODO goto signup
|
@@ -91,14 +91,14 @@ async function acceptInvitation(token) {
|
|
91
91
|
}
|
92
92
|
async function sendInvitationEmail({ invitation, user, context }) {
|
93
93
|
try {
|
94
|
-
var token = (0,
|
95
|
-
var verifaction = await (0,
|
94
|
+
var token = (0, make_invitation_token_js_1.makeInvitationToken)();
|
95
|
+
var verifaction = await (0, save_invitation_token_js_1.saveInvitationToken)(invitation.id, token);
|
96
96
|
if (verifaction) {
|
97
97
|
var serviceUrl = new url_1.URL(`/auth/accept/${token}`, context.header.referer);
|
98
98
|
await (0, email_base_1.sendEmail)({
|
99
99
|
receiver: invitation.email,
|
100
100
|
subject: 'Invitation',
|
101
|
-
content: (0,
|
101
|
+
content: (0, invitation_email_js_1.getInvitationEmailForm)({
|
102
102
|
username: user.username,
|
103
103
|
email: invitation.email,
|
104
104
|
acceptUrl: serviceUrl
|
@@ -112,7 +112,7 @@ async function sendInvitationEmail({ invitation, user, context }) {
|
|
112
112
|
}
|
113
113
|
}
|
114
114
|
async function resendInvitationEmail({ email, reference, type }, context) {
|
115
|
-
var invitation = await (0, shell_1.getRepository)(
|
115
|
+
var invitation = await (0, shell_1.getRepository)(invitation_js_1.Invitation).findOneBy({
|
116
116
|
email: (0, typeorm_1.ILike)(email),
|
117
117
|
reference,
|
118
118
|
type
|
@@ -120,10 +120,10 @@ async function resendInvitationEmail({ email, reference, type }, context) {
|
|
120
120
|
if (!invitation) {
|
121
121
|
throw new Error(`not found invitation.`);
|
122
122
|
}
|
123
|
-
var user = await (0, shell_1.getRepository)(
|
123
|
+
var user = await (0, shell_1.getRepository)(user_js_1.User).findOne({
|
124
124
|
where: {
|
125
125
|
email: (0, typeorm_1.ILike)(email),
|
126
|
-
status:
|
126
|
+
status: user_js_1.UserStatus.ACTIVATED
|
127
127
|
}
|
128
128
|
});
|
129
129
|
if (!user) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../server/controllers/invitation.ts"],"names":[],"mappings":";;AAYA,wBA4DC;AAED,4CA+BC;AAED,kDAuBC;AAED,sDA8BC;AAlKD,qCAA+B;AAC/B,6BAAyB;AAEzB,2DAAsD;AACtD,iDAA6D;AAE7D,
|
1
|
+
{"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../server/controllers/invitation.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILike } from 'typeorm'\nimport { URL } from 'url'\n\nimport { sendEmail } from '@things-factory/email-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { Invitation } from '../service/invitation/invitation.js'\nimport { User, UserStatus } from '../service/user/user.js'\nimport { getInvitationEmailForm } from '../templates/invitation-email.js'\nimport { makeInvitationToken } from './utils/make-invitation-token.js'\nimport { saveInvitationToken } from './utils/save-invitation-token.js'\n\nexport async function invite(attrs, withEmailInvitation?: Boolean) {\n const { username, reference, type, context } = attrs\n const repository = getRepository(User)\n\n var user = await repository.findOne({\n where: { username },\n relations: ['domains']\n })\n\n if (!user && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(username)) {\n user = await repository.findOne({\n where: { email: ILike(username) },\n relations: ['domains']\n })\n }\n\n var domains = user.domains\n\n // TODO reference should not be a domain.id (security reason)\n\n if (user) {\n const domain = domains.find(domain => domain.id == reference)\n\n if (domain) {\n const msg = `user already a member of the ${type}.`\n throw new Error(msg)\n }\n }\n\n if (withEmailInvitation) {\n const email = user.email\n\n // TODO 초대장의 유효기간을 설정할 수 있어야 함.\n var invitation = await getRepository(Invitation).findOneBy({\n email: ILike(email),\n reference,\n type\n })\n\n if (!invitation) {\n invitation = await getRepository(Invitation).save({\n email,\n reference,\n type\n })\n }\n\n return await sendInvitationEmail({\n invitation,\n user,\n context\n })\n }\n\n if (user) {\n user.domains = [...domains, await getRepository(Domain).findOneBy({ id: reference })]\n await getRepository(User).save(user)\n } else {\n // TODO need to signup\n }\n}\n\nexport async function acceptInvitation(token) {\n var invitation = await getRepository(Invitation).findOneBy({\n token\n })\n\n if (!invitation) {\n throw new Error(`not found invitation.`)\n }\n\n var { email, reference, type } = invitation\n\n var user = await getRepository(User).findOne({ where: { email: ILike(email) }, relations: ['domains'] })\n\n if (user) {\n var domains = user.domains\n const domain = domains.find(domain => domain.id == reference)\n\n if (domain) {\n const msg = `user already a member of the ${type}.`\n throw new Error(msg)\n }\n\n user.domains = [...domains, await getRepository(Domain).findOneBy({ id: reference })]\n await getRepository(User).save(user)\n\n await getRepository(Invitation).delete(invitation.id)\n } else {\n // TODO goto signup\n }\n\n return true\n}\n\nexport async function sendInvitationEmail({ invitation, user, context }) {\n try {\n var token = makeInvitationToken()\n var verifaction = await saveInvitationToken(invitation.id, token)\n\n if (verifaction) {\n var serviceUrl = new URL(`/auth/accept/${token}`, context.header.referer)\n\n await sendEmail({\n receiver: invitation.email,\n subject: 'Invitation',\n content: getInvitationEmailForm({\n username: user.username,\n email: invitation.email,\n acceptUrl: serviceUrl\n })\n })\n\n return true\n }\n } catch (e) {\n return false\n }\n}\n\nexport async function resendInvitationEmail(\n { email, reference, type }: { email: string; reference: string; type: string },\n context\n) {\n var invitation = await getRepository(Invitation).findOneBy({\n email: ILike(email),\n reference,\n type\n })\n\n if (!invitation) {\n throw new Error(`not found invitation.`)\n }\n\n var user = await getRepository(User).findOne({\n where: {\n email: ILike(email),\n status: UserStatus.ACTIVATED\n }\n })\n\n if (!user) {\n throw new Error(`user not found: ${email}`)\n }\n\n return await sendInvitationEmail({\n invitation,\n user,\n context\n })\n}\n"]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { User } from '../service/user/user';
|
1
|
+
import { User } from '../service/user/user.js';
|
2
2
|
export declare function updateProfile({ id }: {
|
3
3
|
id: any;
|
4
4
|
}, newProfiles: any): Promise<{
|
@@ -10,17 +10,17 @@ export declare function updateProfile({ id }: {
|
|
10
10
|
description: string;
|
11
11
|
domains?: import("@things-factory/shell").Domain[];
|
12
12
|
password: string;
|
13
|
-
roles?: import("
|
13
|
+
roles?: import("../index.js").Role[];
|
14
14
|
userType: string;
|
15
15
|
reference: string;
|
16
16
|
salt: string;
|
17
17
|
ssoId: string;
|
18
|
-
status: import("../service/user/user").UserStatus;
|
18
|
+
status: import("../service/user/user.js").UserStatus;
|
19
19
|
failCount: number;
|
20
20
|
passwordUpdatedAt: Date;
|
21
21
|
owner: boolean;
|
22
|
-
credentials: import("
|
23
|
-
usersAuthProviders: import("
|
22
|
+
credentials: import("../index.js").WebAuthCredential[];
|
23
|
+
usersAuthProviders: import("../index.js").UsersAuthProviders[];
|
24
24
|
creator: User;
|
25
25
|
creatorId: string;
|
26
26
|
updater: User;
|
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateProfile = updateProfile;
|
4
4
|
const typeorm_1 = require("typeorm");
|
5
5
|
const shell_1 = require("@things-factory/shell");
|
6
|
-
const
|
7
|
-
const
|
8
|
-
const
|
6
|
+
const error_code_js_1 = require("../constants/error-code.js");
|
7
|
+
const auth_error_js_1 = require("../errors/auth-error.js");
|
8
|
+
const user_js_1 = require("../service/user/user.js");
|
9
9
|
async function updateProfile({ id }, newProfiles) {
|
10
|
-
const repository = (0, shell_1.getRepository)(
|
10
|
+
const repository = (0, shell_1.getRepository)(user_js_1.User);
|
11
11
|
const user = await repository.findOneBy({ id });
|
12
12
|
if (!user) {
|
13
|
-
throw new
|
14
|
-
errorCode:
|
13
|
+
throw new auth_error_js_1.AuthError({
|
14
|
+
errorCode: error_code_js_1.USER_NOT_FOUND
|
15
15
|
});
|
16
16
|
}
|
17
17
|
/* only 'username', 'name', 'email' and 'locale' attributes can be changed */
|
@@ -25,16 +25,16 @@ async function updateProfile({ id }, newProfiles) {
|
|
25
25
|
if ('email' in allowed) {
|
26
26
|
var found = await repository.findOne({ where: { email: (0, typeorm_1.ILike)(allowed.email) } });
|
27
27
|
if (found && found.id != id) {
|
28
|
-
throw new
|
29
|
-
errorCode:
|
28
|
+
throw new auth_error_js_1.AuthError({
|
29
|
+
errorCode: auth_error_js_1.AuthError.ERROR_CODES.EMAIL_ALREADY_EXISTS
|
30
30
|
});
|
31
31
|
}
|
32
32
|
}
|
33
33
|
if ('username' in allowed) {
|
34
34
|
var found = await repository.findOne({ where: { username: allowed.username } });
|
35
35
|
if (found && found.id != id) {
|
36
|
-
throw new
|
37
|
-
errorCode:
|
36
|
+
throw new auth_error_js_1.AuthError({
|
37
|
+
errorCode: auth_error_js_1.AuthError.ERROR_CODES.USERNAME_ALREADY_EXISTS
|
38
38
|
});
|
39
39
|
}
|
40
40
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../server/controllers/profile.ts"],"names":[],"mappings":";;AAQA,sCA8CC;AAtDD,qCAA+B;AAE/B,iDAAqD;AAErD,
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../server/controllers/profile.ts"],"names":[],"mappings":";;AAQA,sCA8CC;AAtDD,qCAA+B;AAE/B,iDAAqD;AAErD,8DAA2D;AAC3D,2DAAmD;AACnD,qDAA8C;AAEvC,KAAK,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW;IACrD,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,yBAAS,CAAC;YAClB,SAAS,EAAE,8BAAc;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,OAAO,GAKP,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;SACxC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;SACnC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACpB,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;IAER,2CAA2C;IAC3C,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACvB,IAAI,KAAK,GAAS,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAEtF,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,yBAAS,CAAC;gBAClB,SAAS,EAAE,yBAAS,CAAC,WAAW,CAAC,oBAAoB;aACtD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,GAAS,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACrF,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,yBAAS,CAAC;gBAClB,SAAS,EAAE,yBAAS,CAAC,WAAW,CAAC,uBAAuB;aACzD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,IAAI,GACJ,OAAO,EACV,CAAA;AACJ,CAAC","sourcesContent":["import { ILike } from 'typeorm'\n\nimport { getRepository } from '@things-factory/shell'\n\nimport { USER_NOT_FOUND } from '../constants/error-code.js'\nimport { AuthError } from '../errors/auth-error.js'\nimport { User } from '../service/user/user.js'\n\nexport async function updateProfile({ id }, newProfiles) {\n const repository = getRepository(User)\n const user = await repository.findOneBy({ id })\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n /* only 'username', 'name', 'email' and 'locale' attributes can be changed */\n var allowed: {\n username?: string\n name?: string\n email?: string\n locale?: string\n } = ['username', 'name', 'email', 'locale']\n .filter(attr => attr in newProfiles)\n .reduce((sum, attr) => {\n sum[attr] = newProfiles[attr]\n return sum\n }, {})\n\n /* check if email and username is unique */\n if ('email' in allowed) {\n var found: User = await repository.findOne({ where: { email: ILike(allowed.email) } })\n\n if (found && found.id != id) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.EMAIL_ALREADY_EXISTS\n })\n }\n }\n\n if ('username' in allowed) {\n var found: User = await repository.findOne({ where: { username: allowed.username } })\n if (found && found.id != id) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USERNAME_ALREADY_EXISTS\n })\n }\n }\n\n return await repository.save({\n ...user,\n ...allowed\n })\n}\n"]}
|
@@ -6,25 +6,25 @@ const url_1 = require("url");
|
|
6
6
|
const email_base_1 = require("@things-factory/email-base");
|
7
7
|
const env_1 = require("@things-factory/env");
|
8
8
|
const shell_1 = require("@things-factory/shell");
|
9
|
-
const
|
10
|
-
const
|
11
|
-
const
|
12
|
-
const
|
13
|
-
const
|
14
|
-
const
|
15
|
-
const
|
16
|
-
const
|
9
|
+
const error_code_js_1 = require("../constants/error-code.js");
|
10
|
+
const auth_error_js_1 = require("../errors/auth-error.js");
|
11
|
+
const password_history_js_1 = require("../service/password-history/password-history.js");
|
12
|
+
const user_js_1 = require("../service/user/user.js");
|
13
|
+
const verification_token_js_1 = require("../service/verification-token/verification-token.js");
|
14
|
+
const reset_password_email_js_1 = require("../templates/reset-password-email.js");
|
15
|
+
const make_verification_token_js_1 = require("./utils/make-verification-token.js");
|
16
|
+
const save_verification_token_js_1 = require("./utils/save-verification-token.js");
|
17
17
|
const HISTORY_SIZE = env_1.config.get('password', { history: 0 }).history;
|
18
18
|
async function sendPasswordResetEmail({ user, context }) {
|
19
19
|
try {
|
20
|
-
var token = (0,
|
21
|
-
var verifaction = await (0,
|
20
|
+
var token = (0, make_verification_token_js_1.makeVerificationToken)();
|
21
|
+
var verifaction = await (0, save_verification_token_js_1.saveVerificationToken)(user.id, token, verification_token_js_1.VerificationTokenType.PASSWORD_RESET);
|
22
22
|
if (verifaction) {
|
23
23
|
var serviceUrl = new url_1.URL(`/auth/reset-password?token=${token}`, context.header.referer);
|
24
24
|
await (0, email_base_1.sendEmail)({
|
25
25
|
receiver: user.email,
|
26
26
|
subject: 'Reset your password',
|
27
|
-
content: (0,
|
27
|
+
content: (0, reset_password_email_js_1.getResetPasswordEmailForm)({
|
28
28
|
name: user.name,
|
29
29
|
resetUrl: serviceUrl
|
30
30
|
})
|
@@ -38,10 +38,10 @@ async function sendPasswordResetEmail({ user, context }) {
|
|
38
38
|
}
|
39
39
|
async function resetPassword(token, password, context) {
|
40
40
|
const { t } = context;
|
41
|
-
const verificationToken = await (0, shell_1.getRepository)(
|
41
|
+
const verificationToken = await (0, shell_1.getRepository)(verification_token_js_1.VerificationToken).findOne({
|
42
42
|
where: {
|
43
43
|
token,
|
44
|
-
type:
|
44
|
+
type: verification_token_js_1.VerificationTokenType.PASSWORD_RESET
|
45
45
|
}
|
46
46
|
});
|
47
47
|
if (!verificationToken) {
|
@@ -51,7 +51,7 @@ async function resetPassword(token, password, context) {
|
|
51
51
|
if (!userId) {
|
52
52
|
throw new Error(t('text.invalid verification token'));
|
53
53
|
}
|
54
|
-
var user = await (0, shell_1.getRepository)(
|
54
|
+
var user = await (0, shell_1.getRepository)(user_js_1.User).findOneBy({ id: userId });
|
55
55
|
if (!user) {
|
56
56
|
throw new Error(t('error.user not found'));
|
57
57
|
}
|
@@ -59,10 +59,10 @@ async function resetPassword(token, password, context) {
|
|
59
59
|
// throw new Error(t('text.inactive user'))
|
60
60
|
// }
|
61
61
|
/* check if password is following the rule */
|
62
|
-
|
63
|
-
user.password =
|
62
|
+
user_js_1.User.validatePasswordByRule(password, context === null || context === void 0 ? void 0 : context.lng);
|
63
|
+
user.password = user_js_1.User.encode(password, user.salt);
|
64
64
|
if (HISTORY_SIZE > 0) {
|
65
|
-
var passwordHistory = await (0, shell_1.getRepository)(
|
65
|
+
var passwordHistory = await (0, shell_1.getRepository)(password_history_js_1.PasswordHistory).findOneBy({ userId: user.id });
|
66
66
|
var history = [];
|
67
67
|
if (passwordHistory) {
|
68
68
|
try {
|
@@ -76,20 +76,20 @@ async function resetPassword(token, password, context) {
|
|
76
76
|
console.error('password history currupted - not json format');
|
77
77
|
}
|
78
78
|
const found = history.slice(0, HISTORY_SIZE).find(h => {
|
79
|
-
return
|
79
|
+
return user_js_1.User.verify(h.password, password, h.salt);
|
80
80
|
});
|
81
81
|
if (found) {
|
82
|
-
throw new
|
83
|
-
errorCode:
|
82
|
+
throw new auth_error_js_1.AuthError({
|
83
|
+
errorCode: error_code_js_1.PASSWORD_USED_PAST
|
84
84
|
});
|
85
85
|
}
|
86
86
|
}
|
87
87
|
}
|
88
|
-
await (0, shell_1.getRepository)(
|
89
|
-
await (0, shell_1.getRepository)(
|
88
|
+
await (0, shell_1.getRepository)(user_js_1.User).save(Object.assign(Object.assign({}, user), { passwordUpdatedAt: new Date() }));
|
89
|
+
await (0, shell_1.getRepository)(verification_token_js_1.VerificationToken).delete({
|
90
90
|
userId,
|
91
91
|
token,
|
92
|
-
type:
|
92
|
+
type: verification_token_js_1.VerificationTokenType.PASSWORD_RESET
|
93
93
|
});
|
94
94
|
if (HISTORY_SIZE > 0) {
|
95
95
|
history = [
|
@@ -99,7 +99,7 @@ async function resetPassword(token, password, context) {
|
|
99
99
|
},
|
100
100
|
...history
|
101
101
|
].slice(0, HISTORY_SIZE);
|
102
|
-
await (0, shell_1.getRepository)(
|
102
|
+
await (0, shell_1.getRepository)(password_history_js_1.PasswordHistory).save({
|
103
103
|
userId: user.id,
|
104
104
|
history: JSON.stringify(history)
|
105
105
|
});
|