@things-factory/auth-base 8.0.38 → 9.0.0-9.0.0-beta.59.0
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/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 -3
- package/dist-client/index.js +4 -3
- 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-client/verify-webauthn.d.ts +13 -0
- package/dist-client/verify-webauthn.js +72 -0
- package/dist-client/verify-webauthn.js.map +1 -0
- 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 +10 -15
- package/dist-server/controllers/delete-user.js.map +1 -1
- package/dist-server/controllers/invitation.js +20 -25
- 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 +25 -30
- package/dist-server/controllers/signin.js.map +1 -1
- package/dist-server/controllers/signup.d.ts +1 -1
- package/dist-server/controllers/signup.js +14 -19
- 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 -9
- 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 +17 -20
- package/dist-server/router/auth-checkin-router.js.map +1 -1
- package/dist-server/router/auth-private-process-router.js +16 -23
- package/dist-server/router/auth-private-process-router.js.map +1 -1
- package/dist-server/router/auth-public-process-router.js +30 -35
- package/dist-server/router/auth-public-process-router.js.map +1 -1
- package/dist-server/router/auth-signin-router.js +7 -13
- package/dist-server/router/auth-signin-router.js.map +1 -1
- package/dist-server/router/auth-signup-router.js +13 -9
- 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 +58 -8
- package/dist-server/router/webauthn-router.js.map +1 -1
- package/dist-server/routes.js +75 -50
- 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 +49 -84
- 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 +41 -46
- 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 -2
- 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 -2
- package/dist-server/utils/get-user-domains.js +7 -5
- 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/client/actions/auth.ts +0 -24
- package/client/auth.ts +0 -268
- package/client/bootstrap.ts +0 -47
- package/client/directive/privileged.ts +0 -28
- package/client/index.ts +0 -3
- package/client/profiled.ts +0 -83
- package/client/reducers/auth.ts +0 -31
- package/server/constants/error-code.ts +0 -22
- package/server/constants/error-message.ts +0 -0
- package/server/constants/max-age.ts +0 -1
- package/server/controllers/auth.ts +0 -5
- package/server/controllers/change-pwd.ts +0 -100
- package/server/controllers/checkin.ts +0 -21
- package/server/controllers/delete-user.ts +0 -76
- package/server/controllers/invitation.ts +0 -168
- package/server/controllers/profile.ts +0 -55
- package/server/controllers/reset-password.ts +0 -126
- package/server/controllers/signin.ts +0 -103
- package/server/controllers/signup.ts +0 -77
- package/server/controllers/unlock-user.ts +0 -62
- package/server/controllers/utils/make-invitation-token.ts +0 -5
- package/server/controllers/utils/make-verification-token.ts +0 -4
- package/server/controllers/utils/password-rule.ts +0 -120
- package/server/controllers/utils/save-invitation-token.ts +0 -10
- package/server/controllers/utils/save-verification-token.ts +0 -12
- package/server/controllers/verification.ts +0 -84
- package/server/errors/auth-error.ts +0 -24
- package/server/errors/index.ts +0 -2
- package/server/errors/user-domain-not-match-error.ts +0 -29
- package/server/index.ts +0 -37
- package/server/middlewares/authenticate-401-middleware.ts +0 -114
- package/server/middlewares/domain-authenticate-middleware.ts +0 -73
- package/server/middlewares/graphql-authenticate-middleware.ts +0 -13
- package/server/middlewares/index.ts +0 -67
- package/server/middlewares/jwt-authenticate-middleware.ts +0 -84
- package/server/middlewares/signin-middleware.ts +0 -56
- package/server/middlewares/webauthn-middleware.ts +0 -131
- package/server/migrations/1548206416130-SeedUser.ts +0 -60
- package/server/migrations/1566805283882-SeedPrivilege.ts +0 -28
- package/server/migrations/index.ts +0 -9
- package/server/router/auth-checkin-router.ts +0 -115
- package/server/router/auth-private-process-router.ts +0 -127
- package/server/router/auth-public-process-router.ts +0 -319
- package/server/router/auth-signin-router.ts +0 -76
- package/server/router/auth-signup-router.ts +0 -95
- package/server/router/index.ts +0 -9
- package/server/router/oauth2/index.ts +0 -2
- package/server/router/oauth2/oauth2-authorize-router.ts +0 -81
- package/server/router/oauth2/oauth2-router.ts +0 -165
- package/server/router/oauth2/oauth2-server.ts +0 -262
- package/server/router/oauth2/passport-oauth2-client-password.ts +0 -87
- package/server/router/oauth2/passport-refresh-token.ts +0 -87
- package/server/router/path-base-domain-router.ts +0 -8
- package/server/router/site-root-router.ts +0 -48
- package/server/router/webauthn-router.ts +0 -85
- package/server/routes.ts +0 -89
- package/server/service/app-binding/app-binding-mutation.ts +0 -22
- package/server/service/app-binding/app-binding-query.ts +0 -92
- package/server/service/app-binding/app-binding-types.ts +0 -11
- package/server/service/app-binding/app-binding.ts +0 -17
- package/server/service/app-binding/index.ts +0 -4
- package/server/service/appliance/appliance-mutation.ts +0 -113
- package/server/service/appliance/appliance-query.ts +0 -76
- package/server/service/appliance/appliance-types.ts +0 -56
- package/server/service/appliance/appliance.ts +0 -133
- package/server/service/appliance/index.ts +0 -6
- package/server/service/application/application-mutation.ts +0 -104
- package/server/service/application/application-query.ts +0 -98
- package/server/service/application/application-types.ts +0 -76
- package/server/service/application/application.ts +0 -216
- package/server/service/application/index.ts +0 -6
- package/server/service/auth-provider/auth-provider-mutation.ts +0 -159
- package/server/service/auth-provider/auth-provider-parameter-spec.ts +0 -24
- package/server/service/auth-provider/auth-provider-query.ts +0 -88
- package/server/service/auth-provider/auth-provider-type.ts +0 -67
- package/server/service/auth-provider/auth-provider.ts +0 -155
- package/server/service/auth-provider/index.ts +0 -7
- package/server/service/domain-generator/domain-generator-mutation.ts +0 -117
- package/server/service/domain-generator/domain-generator-types.ts +0 -46
- package/server/service/domain-generator/index.ts +0 -3
- package/server/service/granted-role/granted-role-mutation.ts +0 -156
- package/server/service/granted-role/granted-role-query.ts +0 -60
- package/server/service/granted-role/granted-role.ts +0 -27
- package/server/service/granted-role/index.ts +0 -6
- package/server/service/index.ts +0 -90
- package/server/service/invitation/index.ts +0 -6
- package/server/service/invitation/invitation-mutation.ts +0 -78
- package/server/service/invitation/invitation-query.ts +0 -33
- package/server/service/invitation/invitation-types.ts +0 -11
- package/server/service/invitation/invitation.ts +0 -63
- package/server/service/login-history/index.ts +0 -5
- package/server/service/login-history/login-history-query.ts +0 -51
- package/server/service/login-history/login-history-type.ts +0 -12
- package/server/service/login-history/login-history.ts +0 -45
- package/server/service/partner/index.ts +0 -6
- package/server/service/partner/partner-mutation.ts +0 -61
- package/server/service/partner/partner-query.ts +0 -102
- package/server/service/partner/partner-types.ts +0 -11
- package/server/service/partner/partner.ts +0 -57
- package/server/service/password-history/index.ts +0 -3
- package/server/service/password-history/password-history.ts +0 -16
- package/server/service/privilege/index.ts +0 -6
- package/server/service/privilege/privilege-directive.ts +0 -77
- package/server/service/privilege/privilege-mutation.ts +0 -92
- package/server/service/privilege/privilege-query.ts +0 -94
- package/server/service/privilege/privilege-types.ts +0 -60
- package/server/service/privilege/privilege.ts +0 -102
- package/server/service/role/index.ts +0 -6
- package/server/service/role/role-mutation.ts +0 -109
- package/server/service/role/role-query.ts +0 -155
- package/server/service/role/role-types.ts +0 -81
- package/server/service/role/role.ts +0 -72
- package/server/service/user/domain-query.ts +0 -24
- package/server/service/user/index.ts +0 -7
- package/server/service/user/user-mutation.ts +0 -517
- package/server/service/user/user-query.ts +0 -145
- package/server/service/user/user-types.ts +0 -100
- package/server/service/user/user.ts +0 -386
- package/server/service/users-auth-providers/index.ts +0 -5
- package/server/service/users-auth-providers/users-auth-providers.ts +0 -71
- package/server/service/verification-token/index.ts +0 -3
- package/server/service/verification-token/verification-token.ts +0 -60
- package/server/service/web-auth-credential/index.ts +0 -3
- package/server/service/web-auth-credential/web-auth-credential.ts +0 -66
- package/server/templates/account-unlock-email.ts +0 -65
- package/server/templates/invitation-email.ts +0 -66
- package/server/templates/reset-password-email.ts +0 -65
- package/server/templates/verification-email.ts +0 -66
- package/server/types.ts +0 -21
- package/server/utils/accepts.ts +0 -11
- package/server/utils/access-token-cookie.ts +0 -50
- package/server/utils/check-permission.ts +0 -52
- package/server/utils/check-user-belongs-domain.ts +0 -19
- package/server/utils/check-user-has-role.ts +0 -29
- package/server/utils/encrypt-state.ts +0 -22
- package/server/utils/get-aes-256-key.ts +0 -13
- package/server/utils/get-domain-users.ts +0 -38
- package/server/utils/get-secret.ts +0 -13
- package/server/utils/get-user-domains.ts +0 -115
@@ -1,168 +0,0 @@
|
|
1
|
-
import { ILike } from 'typeorm'
|
2
|
-
import { URL } from 'url'
|
3
|
-
|
4
|
-
import { sendEmail } from '@things-factory/email-base'
|
5
|
-
import { Domain, getRepository } from '@things-factory/shell'
|
6
|
-
|
7
|
-
import { Invitation } from '../service/invitation/invitation'
|
8
|
-
import { User, UserStatus } from '../service/user/user'
|
9
|
-
import { getInvitationEmailForm } from '../templates/invitation-email'
|
10
|
-
import { makeInvitationToken } from './utils/make-invitation-token'
|
11
|
-
import { saveInvitationToken } from './utils/save-invitation-token'
|
12
|
-
|
13
|
-
export async function invite(attrs, withEmailInvitation?: Boolean) {
|
14
|
-
const { username, reference, type, context } = attrs
|
15
|
-
const repository = getRepository(User)
|
16
|
-
|
17
|
-
var user = await repository.findOne({
|
18
|
-
where: { username },
|
19
|
-
relations: ['domains']
|
20
|
-
})
|
21
|
-
|
22
|
-
/*
|
23
|
-
정확한 이메일 정규표현식은 /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(username) 이지만,
|
24
|
-
appliance 용으로 사용된 이메일로 {{uuid}}@{{domain slugger}} 식으로 사용했으므로
|
25
|
-
email 유효성 판단에 /^[^\s@]+@[^\s@]+$/.test(username) 를 사용함.
|
26
|
-
*/
|
27
|
-
if (!user && /^[^\s@]+@[^\s@]+$/.test(username)) {
|
28
|
-
user = await repository.findOne({
|
29
|
-
where: { email: ILike(username) },
|
30
|
-
relations: ['domains']
|
31
|
-
})
|
32
|
-
}
|
33
|
-
|
34
|
-
var domains = user.domains
|
35
|
-
|
36
|
-
// TODO reference should not be a domain.id (security reason)
|
37
|
-
|
38
|
-
if (user) {
|
39
|
-
const domain = domains.find(domain => domain.id == reference)
|
40
|
-
|
41
|
-
if (domain) {
|
42
|
-
const msg = `user already a member of the ${type}.`
|
43
|
-
throw new Error(msg)
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
if (withEmailInvitation) {
|
48
|
-
const email = user.email
|
49
|
-
|
50
|
-
// TODO 초대장의 유효기간을 설정할 수 있어야 함.
|
51
|
-
var invitation = await getRepository(Invitation).findOneBy({
|
52
|
-
email: ILike(email),
|
53
|
-
reference,
|
54
|
-
type
|
55
|
-
})
|
56
|
-
|
57
|
-
if (!invitation) {
|
58
|
-
invitation = await getRepository(Invitation).save({
|
59
|
-
email,
|
60
|
-
reference,
|
61
|
-
type
|
62
|
-
})
|
63
|
-
}
|
64
|
-
|
65
|
-
return await sendInvitationEmail({
|
66
|
-
invitation,
|
67
|
-
user,
|
68
|
-
context
|
69
|
-
})
|
70
|
-
}
|
71
|
-
|
72
|
-
if (user) {
|
73
|
-
user.domains = [...domains, await getRepository(Domain).findOneBy({ id: reference })]
|
74
|
-
await getRepository(User).save(user)
|
75
|
-
} else {
|
76
|
-
// TODO need to signup
|
77
|
-
}
|
78
|
-
}
|
79
|
-
|
80
|
-
export async function acceptInvitation(token) {
|
81
|
-
var invitation = await getRepository(Invitation).findOneBy({
|
82
|
-
token
|
83
|
-
})
|
84
|
-
|
85
|
-
if (!invitation) {
|
86
|
-
throw new Error(`not found invitation.`)
|
87
|
-
}
|
88
|
-
|
89
|
-
var { email, reference, type } = invitation
|
90
|
-
|
91
|
-
var user = await getRepository(User).findOne({ where: { email: ILike(email) }, relations: ['domains'] })
|
92
|
-
|
93
|
-
if (user) {
|
94
|
-
var domains = user.domains
|
95
|
-
const domain = domains.find(domain => domain.id == reference)
|
96
|
-
|
97
|
-
if (domain) {
|
98
|
-
const msg = `user already a member of the ${type}.`
|
99
|
-
throw new Error(msg)
|
100
|
-
}
|
101
|
-
|
102
|
-
user.domains = [...domains, await getRepository(Domain).findOneBy({ id: reference })]
|
103
|
-
await getRepository(User).save(user)
|
104
|
-
|
105
|
-
await getRepository(Invitation).delete(invitation.id)
|
106
|
-
} else {
|
107
|
-
// TODO goto signup
|
108
|
-
}
|
109
|
-
|
110
|
-
return true
|
111
|
-
}
|
112
|
-
|
113
|
-
export async function sendInvitationEmail({ invitation, user, context }) {
|
114
|
-
try {
|
115
|
-
var token = makeInvitationToken()
|
116
|
-
var verifaction = await saveInvitationToken(invitation.id, token)
|
117
|
-
|
118
|
-
if (verifaction) {
|
119
|
-
var serviceUrl = new URL(`/auth/accept/${token}`, context.header.referer)
|
120
|
-
|
121
|
-
await sendEmail({
|
122
|
-
receiver: invitation.email,
|
123
|
-
subject: 'Invitation',
|
124
|
-
content: getInvitationEmailForm({
|
125
|
-
username: user.username,
|
126
|
-
email: invitation.email,
|
127
|
-
acceptUrl: serviceUrl
|
128
|
-
})
|
129
|
-
})
|
130
|
-
|
131
|
-
return true
|
132
|
-
}
|
133
|
-
} catch (e) {
|
134
|
-
return false
|
135
|
-
}
|
136
|
-
}
|
137
|
-
|
138
|
-
export async function resendInvitationEmail(
|
139
|
-
{ email, reference, type }: { email: string; reference: string; type: string },
|
140
|
-
context
|
141
|
-
) {
|
142
|
-
var invitation = await getRepository(Invitation).findOneBy({
|
143
|
-
email: ILike(email),
|
144
|
-
reference,
|
145
|
-
type
|
146
|
-
})
|
147
|
-
|
148
|
-
if (!invitation) {
|
149
|
-
throw new Error(`not found invitation.`)
|
150
|
-
}
|
151
|
-
|
152
|
-
var user = await getRepository(User).findOne({
|
153
|
-
where: {
|
154
|
-
email: ILike(email),
|
155
|
-
status: UserStatus.ACTIVATED
|
156
|
-
}
|
157
|
-
})
|
158
|
-
|
159
|
-
if (!user) {
|
160
|
-
throw new Error(`user not found: ${email}`)
|
161
|
-
}
|
162
|
-
|
163
|
-
return await sendInvitationEmail({
|
164
|
-
invitation,
|
165
|
-
user,
|
166
|
-
context
|
167
|
-
})
|
168
|
-
}
|
@@ -1,55 +0,0 @@
|
|
1
|
-
import { ILike } from 'typeorm'
|
2
|
-
|
3
|
-
import { getRepository } from '@things-factory/shell'
|
4
|
-
|
5
|
-
import { USER_NOT_FOUND } from '../constants/error-code'
|
6
|
-
import { AuthError } from '../errors/auth-error'
|
7
|
-
import { User } from '../service/user/user'
|
8
|
-
|
9
|
-
export async function updateProfile({ id }, newProfiles) {
|
10
|
-
const repository = getRepository(User)
|
11
|
-
const user = await repository.findOneBy({ id })
|
12
|
-
if (!user) {
|
13
|
-
throw new AuthError({
|
14
|
-
errorCode: USER_NOT_FOUND
|
15
|
-
})
|
16
|
-
}
|
17
|
-
|
18
|
-
/* only 'username', 'name', 'email' and 'locale' attributes can be changed */
|
19
|
-
var allowed: {
|
20
|
-
username?: string
|
21
|
-
name?: string
|
22
|
-
email?: string
|
23
|
-
locale?: string
|
24
|
-
} = ['username', 'name', 'email', 'locale']
|
25
|
-
.filter(attr => attr in newProfiles)
|
26
|
-
.reduce((sum, attr) => {
|
27
|
-
sum[attr] = newProfiles[attr]
|
28
|
-
return sum
|
29
|
-
}, {})
|
30
|
-
|
31
|
-
/* check if email and username is unique */
|
32
|
-
if ('email' in allowed) {
|
33
|
-
var found: User = await repository.findOne({ where: { email: ILike(allowed.email) } })
|
34
|
-
|
35
|
-
if (found && found.id != id) {
|
36
|
-
throw new AuthError({
|
37
|
-
errorCode: AuthError.ERROR_CODES.EMAIL_ALREADY_EXISTS
|
38
|
-
})
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
if ('username' in allowed) {
|
43
|
-
var found: User = await repository.findOne({ where: { username: allowed.username } })
|
44
|
-
if (found && found.id != id) {
|
45
|
-
throw new AuthError({
|
46
|
-
errorCode: AuthError.ERROR_CODES.USERNAME_ALREADY_EXISTS
|
47
|
-
})
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
return await repository.save({
|
52
|
-
...user,
|
53
|
-
...allowed
|
54
|
-
})
|
55
|
-
}
|
@@ -1,126 +0,0 @@
|
|
1
|
-
import { URL } from 'url'
|
2
|
-
|
3
|
-
import { sendEmail } from '@things-factory/email-base'
|
4
|
-
import { config } from '@things-factory/env'
|
5
|
-
import { getRepository } from '@things-factory/shell'
|
6
|
-
|
7
|
-
import { PASSWORD_USED_PAST } from '../constants/error-code'
|
8
|
-
import { AuthError } from '../errors/auth-error'
|
9
|
-
import { PasswordHistory } from '../service/password-history/password-history'
|
10
|
-
import { User } from '../service/user/user'
|
11
|
-
import { VerificationToken, VerificationTokenType } from '../service/verification-token/verification-token'
|
12
|
-
import { getResetPasswordEmailForm } from '../templates/reset-password-email'
|
13
|
-
import { makeVerificationToken } from './utils/make-verification-token'
|
14
|
-
import { saveVerificationToken } from './utils/save-verification-token'
|
15
|
-
|
16
|
-
const HISTORY_SIZE = config.get('password', { history: 0 }).history
|
17
|
-
|
18
|
-
export async function sendPasswordResetEmail({ user, context }) {
|
19
|
-
try {
|
20
|
-
var token = makeVerificationToken()
|
21
|
-
var verifaction = await saveVerificationToken(user.id, token, VerificationTokenType.PASSWORD_RESET)
|
22
|
-
|
23
|
-
if (verifaction) {
|
24
|
-
var serviceUrl = new URL(`/auth/reset-password?token=${token}`, context.header.referer)
|
25
|
-
await sendEmail({
|
26
|
-
receiver: user.email,
|
27
|
-
subject: 'Reset your password',
|
28
|
-
content: getResetPasswordEmailForm({
|
29
|
-
name: user.name,
|
30
|
-
resetUrl: serviceUrl
|
31
|
-
})
|
32
|
-
})
|
33
|
-
|
34
|
-
return true
|
35
|
-
}
|
36
|
-
} catch (e) {
|
37
|
-
return false
|
38
|
-
}
|
39
|
-
}
|
40
|
-
|
41
|
-
export async function resetPassword(token, password, context) {
|
42
|
-
const { t } = context
|
43
|
-
|
44
|
-
const verificationToken = await getRepository(VerificationToken).findOne({
|
45
|
-
where: {
|
46
|
-
token,
|
47
|
-
type: VerificationTokenType.PASSWORD_RESET
|
48
|
-
}
|
49
|
-
})
|
50
|
-
|
51
|
-
if (!verificationToken) {
|
52
|
-
throw new Error(t('text.invalid verification token'))
|
53
|
-
}
|
54
|
-
|
55
|
-
const { userId } = verificationToken
|
56
|
-
if (!userId) {
|
57
|
-
throw new Error(t('text.invalid verification token'))
|
58
|
-
}
|
59
|
-
|
60
|
-
var user = await getRepository(User).findOneBy({ id: userId })
|
61
|
-
if (!user) {
|
62
|
-
throw new Error(t('error.user not found'))
|
63
|
-
}
|
64
|
-
|
65
|
-
// if (user.status == UserStatus.INACTIVE) {
|
66
|
-
// throw new Error(t('text.inactive user'))
|
67
|
-
// }
|
68
|
-
|
69
|
-
/* check if password is following the rule */
|
70
|
-
User.validatePasswordByRule(password, context?.lng)
|
71
|
-
|
72
|
-
user.password = User.encode(password, user.salt)
|
73
|
-
|
74
|
-
if (HISTORY_SIZE > 0) {
|
75
|
-
var passwordHistory: PasswordHistory = await getRepository(PasswordHistory).findOneBy({ userId: user.id })
|
76
|
-
var history = []
|
77
|
-
|
78
|
-
if (passwordHistory) {
|
79
|
-
try {
|
80
|
-
history = JSON.parse(passwordHistory.history)
|
81
|
-
if (!(history instanceof Array)) {
|
82
|
-
console.error('password history maybe currupted - not an array')
|
83
|
-
history = []
|
84
|
-
}
|
85
|
-
} catch (e) {
|
86
|
-
console.error('password history currupted - not json format')
|
87
|
-
}
|
88
|
-
|
89
|
-
const found = history.slice(0, HISTORY_SIZE).find(h => {
|
90
|
-
return User.verify(h.password, password, h.salt)
|
91
|
-
})
|
92
|
-
|
93
|
-
if (found) {
|
94
|
-
throw new AuthError({
|
95
|
-
errorCode: PASSWORD_USED_PAST
|
96
|
-
})
|
97
|
-
}
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
await getRepository(User).save({
|
102
|
-
...user,
|
103
|
-
passwordUpdatedAt: new Date()
|
104
|
-
})
|
105
|
-
|
106
|
-
await getRepository(VerificationToken).delete({
|
107
|
-
userId,
|
108
|
-
token,
|
109
|
-
type: VerificationTokenType.PASSWORD_RESET
|
110
|
-
})
|
111
|
-
|
112
|
-
if (HISTORY_SIZE > 0) {
|
113
|
-
history = [
|
114
|
-
{
|
115
|
-
password: user.password,
|
116
|
-
salt: user.salt
|
117
|
-
},
|
118
|
-
...history
|
119
|
-
].slice(0, HISTORY_SIZE)
|
120
|
-
|
121
|
-
await getRepository(PasswordHistory).save({
|
122
|
-
userId: user.id,
|
123
|
-
history: JSON.stringify(history)
|
124
|
-
})
|
125
|
-
}
|
126
|
-
}
|
@@ -1,103 +0,0 @@
|
|
1
|
-
import { ILike } from 'typeorm'
|
2
|
-
import { getRepository } from '@things-factory/shell'
|
3
|
-
|
4
|
-
import { sendUnlockUserEmail } from '../controllers/unlock-user'
|
5
|
-
import { AuthError } from '../errors/auth-error'
|
6
|
-
import { User, UserStatus } from '../service/user/user'
|
7
|
-
|
8
|
-
export async function signin(attrs: { username: string; password: string }, context?) {
|
9
|
-
const { domain } = context?.state || {}
|
10
|
-
const { username } = attrs
|
11
|
-
|
12
|
-
const repository = getRepository(User)
|
13
|
-
|
14
|
-
var user = await repository.findOne({
|
15
|
-
where: { username },
|
16
|
-
relations: ['domains']
|
17
|
-
})
|
18
|
-
|
19
|
-
/*
|
20
|
-
정확한 이메일 정규표현식은 /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(username) 이지만,
|
21
|
-
appliance 용으로 사용된 이메일로 {{uuid}}@{{domain slugger}} 식으로 사용했으므로
|
22
|
-
email 유효성 판단에 /^[^\s@]+@[^\s@]+$/.test(username) 를 사용함.
|
23
|
-
*/
|
24
|
-
if (!user && /^[^\s@]+@[^\s@]+$/.test(username)) {
|
25
|
-
user = await repository.findOne({
|
26
|
-
where: {
|
27
|
-
email: ILike(username)
|
28
|
-
},
|
29
|
-
relations: ['domains']
|
30
|
-
})
|
31
|
-
}
|
32
|
-
|
33
|
-
if (!user)
|
34
|
-
throw new AuthError({
|
35
|
-
errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND
|
36
|
-
})
|
37
|
-
|
38
|
-
if (user.status == UserStatus.DELETED) {
|
39
|
-
throw new AuthError({
|
40
|
-
errorCode: AuthError.ERROR_CODES.USER_DELETED
|
41
|
-
})
|
42
|
-
}
|
43
|
-
|
44
|
-
if (user.status == UserStatus.LOCKED) {
|
45
|
-
sendUnlockUserEmail({
|
46
|
-
user,
|
47
|
-
context
|
48
|
-
})
|
49
|
-
throw new AuthError({
|
50
|
-
errorCode: AuthError.ERROR_CODES.USER_LOCKED,
|
51
|
-
detail: {
|
52
|
-
username: user.username,
|
53
|
-
email: user.email
|
54
|
-
}
|
55
|
-
})
|
56
|
-
}
|
57
|
-
|
58
|
-
if (!User.verify(user.password, attrs.password, user.salt)) {
|
59
|
-
user.failCount++
|
60
|
-
if (user.failCount >= 5) user.status = UserStatus.LOCKED
|
61
|
-
await repository.save(user)
|
62
|
-
if (user.status == UserStatus.LOCKED) {
|
63
|
-
sendUnlockUserEmail({
|
64
|
-
user,
|
65
|
-
context
|
66
|
-
})
|
67
|
-
throw new AuthError({
|
68
|
-
errorCode: AuthError.ERROR_CODES.USER_LOCKED,
|
69
|
-
detail: {
|
70
|
-
username: user.username,
|
71
|
-
email: user.email
|
72
|
-
}
|
73
|
-
})
|
74
|
-
}
|
75
|
-
throw new AuthError({
|
76
|
-
errorCode: AuthError.ERROR_CODES.PASSWORD_NOT_MATCHED,
|
77
|
-
detail: {
|
78
|
-
username: user.username,
|
79
|
-
email: user.email,
|
80
|
-
failCount: user.failCount
|
81
|
-
}
|
82
|
-
})
|
83
|
-
} else {
|
84
|
-
user.failCount = 0
|
85
|
-
await repository.save(user)
|
86
|
-
}
|
87
|
-
|
88
|
-
if (user.status == UserStatus.INACTIVE) {
|
89
|
-
throw new AuthError({
|
90
|
-
errorCode: AuthError.ERROR_CODES.USER_NOT_ACTIVATED,
|
91
|
-
detail: {
|
92
|
-
username: user.username,
|
93
|
-
email: user.email
|
94
|
-
}
|
95
|
-
})
|
96
|
-
}
|
97
|
-
|
98
|
-
return {
|
99
|
-
user,
|
100
|
-
token: await user.sign({ subdomain: domain?.subdomain }),
|
101
|
-
domains: user.domains || []
|
102
|
-
}
|
103
|
-
}
|
@@ -1,77 +0,0 @@
|
|
1
|
-
import { ILike } from 'typeorm'
|
2
|
-
import { getRepository } from '@things-factory/shell'
|
3
|
-
|
4
|
-
import { USER_DUPLICATED } from '../constants/error-code'
|
5
|
-
import { AuthError } from '../errors/auth-error'
|
6
|
-
import { User } from '../service/user/user'
|
7
|
-
import { signin } from './signin'
|
8
|
-
import { sendVerificationEmail } from './verification'
|
9
|
-
|
10
|
-
export async function signup(attrs, withEmailVerification?: Boolean) {
|
11
|
-
const { name, username, password, domain, context } = attrs
|
12
|
-
|
13
|
-
/* check if password is following the rule */
|
14
|
-
User.validatePasswordByRule(password, context.lng)
|
15
|
-
|
16
|
-
const repository = getRepository(User)
|
17
|
-
|
18
|
-
var duplicated = await repository.findOne({
|
19
|
-
where: { username },
|
20
|
-
relations: ['domains']
|
21
|
-
})
|
22
|
-
|
23
|
-
/*
|
24
|
-
정확한 이메일 정규표현식은 /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(username) 이지만,
|
25
|
-
appliance 용으로 사용된 이메일로 {{uuid}}@{{domain slugger}} 식으로 사용했으므로
|
26
|
-
email 유효성 판단에 /^[^\s@]+@[^\s@]+$/.test(username) 를 사용함.
|
27
|
-
*/
|
28
|
-
if (!duplicated && /^[^\s@]+@[^\s@]+$/.test(username)) {
|
29
|
-
user = await repository.findOne({
|
30
|
-
where: { email: ILike(username) },
|
31
|
-
relations: ['domains']
|
32
|
-
})
|
33
|
-
}
|
34
|
-
|
35
|
-
if (duplicated) {
|
36
|
-
throw new AuthError({
|
37
|
-
errorCode: USER_DUPLICATED,
|
38
|
-
detail: {
|
39
|
-
name,
|
40
|
-
username
|
41
|
-
}
|
42
|
-
})
|
43
|
-
}
|
44
|
-
|
45
|
-
const salt = User.generateSalt()
|
46
|
-
|
47
|
-
var user = await repository.save({
|
48
|
-
userType: 'user',
|
49
|
-
...attrs,
|
50
|
-
salt,
|
51
|
-
password: User.encode(password, salt),
|
52
|
-
passwordUpdatedAt: new Date(),
|
53
|
-
domains: domain ? [domain] : []
|
54
|
-
})
|
55
|
-
|
56
|
-
var succeed = false
|
57
|
-
if (withEmailVerification) {
|
58
|
-
succeed = await sendVerificationEmail({
|
59
|
-
context,
|
60
|
-
user
|
61
|
-
})
|
62
|
-
}
|
63
|
-
|
64
|
-
try {
|
65
|
-
return {
|
66
|
-
token: await signin(
|
67
|
-
{
|
68
|
-
username,
|
69
|
-
password
|
70
|
-
},
|
71
|
-
{ domain }
|
72
|
-
)
|
73
|
-
}
|
74
|
-
} catch (e) {
|
75
|
-
return { token: null }
|
76
|
-
}
|
77
|
-
}
|
@@ -1,62 +0,0 @@
|
|
1
|
-
import { URL } from 'url'
|
2
|
-
|
3
|
-
import { sendEmail } from '@things-factory/email-base'
|
4
|
-
import { getRepository } from '@things-factory/shell'
|
5
|
-
|
6
|
-
import { User, UserStatus } from '../service/user/user'
|
7
|
-
import { VerificationToken, VerificationTokenType } from '../service/verification-token/verification-token'
|
8
|
-
import { getUnlockUserEmailForm } from '../templates/account-unlock-email'
|
9
|
-
import { makeVerificationToken } from './utils/make-verification-token'
|
10
|
-
import { saveVerificationToken } from './utils/save-verification-token'
|
11
|
-
|
12
|
-
export async function sendUnlockUserEmail({ user, context }) {
|
13
|
-
try {
|
14
|
-
var token = makeVerificationToken()
|
15
|
-
var verifaction = await saveVerificationToken(user.id, token, VerificationTokenType.UNLOCK)
|
16
|
-
|
17
|
-
if (verifaction) {
|
18
|
-
var serviceUrl = new URL(`/auth/unlock-user?token=${token}`, context.header.referer)
|
19
|
-
await sendEmail({
|
20
|
-
receiver: user.email,
|
21
|
-
subject: 'Your account is locked',
|
22
|
-
content: getUnlockUserEmailForm({
|
23
|
-
username: user.username,
|
24
|
-
name: user.name,
|
25
|
-
resetUrl: serviceUrl
|
26
|
-
})
|
27
|
-
})
|
28
|
-
|
29
|
-
return true
|
30
|
-
}
|
31
|
-
} catch (e) {
|
32
|
-
return false
|
33
|
-
}
|
34
|
-
}
|
35
|
-
|
36
|
-
export async function unlockUser(token, password) {
|
37
|
-
var { userId } = await getRepository(VerificationToken).findOne({
|
38
|
-
where: {
|
39
|
-
token,
|
40
|
-
type: VerificationTokenType.UNLOCK
|
41
|
-
}
|
42
|
-
})
|
43
|
-
|
44
|
-
if (!userId) return false
|
45
|
-
|
46
|
-
var userInfo = await getRepository(User).findOneBy({ id: userId })
|
47
|
-
if (!userInfo) return false
|
48
|
-
if (userInfo.status != UserStatus.LOCKED) return false
|
49
|
-
|
50
|
-
userInfo.status = UserStatus.ACTIVATED
|
51
|
-
userInfo.password = User.encode(password, userInfo.salt)
|
52
|
-
userInfo.failCount = 0
|
53
|
-
|
54
|
-
await getRepository(User).save(userInfo)
|
55
|
-
await getRepository(VerificationToken).delete({
|
56
|
-
userId,
|
57
|
-
token,
|
58
|
-
type: VerificationTokenType.UNLOCK
|
59
|
-
})
|
60
|
-
|
61
|
-
return true
|
62
|
-
}
|