@things-factory/auth-base 5.0.7 → 6.0.0-alpha.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/client/actions/auth.ts +23 -0
- package/client/{auth.js → auth.ts} +66 -59
- package/client/{bootstrap.js → bootstrap.ts} +5 -4
- package/client/index.ts +1 -0
- package/client/reducers/{auth.js → auth.ts} +1 -1
- package/config/config.development.js +2 -1
- package/dist-client/actions/auth.d.ts +8 -0
- package/dist-client/actions/auth.js +15 -0
- package/dist-client/actions/auth.js.map +1 -0
- package/dist-client/auth.d.ts +34 -0
- package/dist-client/auth.js +209 -0
- package/dist-client/auth.js.map +1 -0
- package/dist-client/bootstrap.d.ts +1 -0
- package/dist-client/bootstrap.js +34 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/index.d.ts +1 -0
- package/dist-client/index.js +2 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/reducers/auth.d.ts +14 -0
- package/dist-client/reducers/auth.js +19 -0
- package/dist-client/reducers/auth.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-server/constants/error-code.d.ts +17 -0
- package/dist-server/constants/error-code.js.map +1 -1
- package/dist-server/constants/error-message.d.ts +0 -0
- package/dist-server/constants/error-message.js.map +1 -1
- package/dist-server/constants/max-age.d.ts +1 -0
- package/dist-server/constants/max-age.js.map +1 -1
- package/dist-server/controllers/auth.d.ts +5 -0
- package/dist-server/controllers/auth.js +6 -18
- package/dist-server/controllers/auth.js.map +1 -1
- package/dist-server/controllers/change-pwd.d.ts +1 -0
- package/dist-server/controllers/change-pwd.js +11 -12
- package/dist-server/controllers/change-pwd.js.map +1 -1
- package/dist-server/controllers/checkin.d.ts +4 -0
- package/dist-server/controllers/checkin.js +3 -3
- package/dist-server/controllers/checkin.js.map +1 -1
- package/dist-server/controllers/delete-user.d.ts +3 -0
- package/dist-server/controllers/delete-user.js.map +1 -1
- package/dist-server/controllers/invitation.d.ts +11 -0
- package/dist-server/controllers/invitation.js +14 -20
- package/dist-server/controllers/invitation.js.map +1 -1
- package/dist-server/controllers/profile.d.ts +26 -0
- package/dist-server/controllers/profile.js +4 -4
- package/dist-server/controllers/profile.js.map +1 -1
- package/dist-server/controllers/reset-password.d.ts +5 -0
- package/dist-server/controllers/reset-password.js +14 -16
- package/dist-server/controllers/reset-password.js.map +1 -1
- package/dist-server/controllers/signin.d.ts +6 -0
- package/dist-server/controllers/signin.js +4 -3
- package/dist-server/controllers/signin.js.map +1 -1
- package/dist-server/controllers/signup.d.ts +8 -0
- package/dist-server/controllers/signup.js +13 -9
- package/dist-server/controllers/signup.js.map +1 -1
- package/dist-server/controllers/unlock-user.d.ts +5 -0
- package/dist-server/controllers/unlock-user.js +6 -6
- package/dist-server/controllers/unlock-user.js.map +1 -1
- package/dist-server/controllers/utils/make-invitation-token.d.ts +1 -0
- package/dist-server/controllers/utils/make-invitation-token.js +2 -4
- package/dist-server/controllers/utils/make-invitation-token.js.map +1 -1
- package/dist-server/controllers/utils/make-verification-token.d.ts +1 -0
- package/dist-server/controllers/utils/make-verification-token.js +2 -4
- package/dist-server/controllers/utils/make-verification-token.js.map +1 -1
- package/dist-server/controllers/utils/password-rule.d.ts +14 -0
- package/dist-server/controllers/utils/password-rule.js +2 -5
- package/dist-server/controllers/utils/password-rule.js.map +1 -1
- package/dist-server/controllers/utils/save-invitation-token.d.ts +5 -0
- 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 +6 -0
- package/dist-server/controllers/utils/save-verification-token.js +2 -2
- package/dist-server/controllers/utils/save-verification-token.js.map +1 -1
- package/dist-server/controllers/verification.d.ts +6 -0
- package/dist-server/controllers/verification.js +8 -8
- package/dist-server/controllers/verification.js.map +1 -1
- package/dist-server/errors/auth-error.d.ts +11 -0
- package/dist-server/errors/auth-error.js +2 -24
- package/dist-server/errors/auth-error.js.map +1 -1
- package/dist-server/errors/index.d.ts +2 -0
- package/dist-server/errors/index.js +3 -16
- package/dist-server/errors/index.js.map +1 -1
- package/dist-server/errors/user-domain-not-match-error.d.ts +9 -0
- package/dist-server/errors/user-domain-not-match-error.js.map +1 -1
- package/dist-server/index.d.ts +13 -0
- package/dist-server/index.js +13 -25
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/authenticate-401-middleware.d.ts +1 -0
- package/dist-server/middlewares/authenticate-401-middleware.js +12 -20
- package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
- package/dist-server/middlewares/domain-authenticate-middleware.d.ts +11 -0
- package/dist-server/middlewares/domain-authenticate-middleware.js +8 -8
- package/dist-server/middlewares/domain-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/graphql-authenticate-middleware.d.ts +1 -0
- package/dist-server/middlewares/graphql-authenticate-middleware.js +1 -3
- package/dist-server/middlewares/graphql-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/index.d.ts +5 -0
- package/dist-server/middlewares/index.js +6 -24
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/middlewares/jwt-authenticate-middleware.d.ts +1 -0
- package/dist-server/middlewares/jwt-authenticate-middleware.js +5 -11
- package/dist-server/middlewares/jwt-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/signin-middleware.d.ts +1 -0
- package/dist-server/middlewares/signin-middleware.js +2 -6
- package/dist-server/middlewares/signin-middleware.js.map +1 -1
- package/dist-server/migrations/1548206416130-SeedUser.d.ts +5 -0
- package/dist-server/migrations/1548206416130-SeedUser.js +4 -5
- package/dist-server/migrations/1548206416130-SeedUser.js.map +1 -1
- package/dist-server/migrations/1566805283882-SeedPrivilege.d.ts +5 -0
- package/dist-server/migrations/1566805283882-SeedPrivilege.js +2 -2
- package/dist-server/migrations/1566805283882-SeedPrivilege.js.map +1 -1
- package/dist-server/migrations/index.d.ts +1 -0
- package/dist-server/migrations/index.js.map +1 -1
- package/dist-server/router/auth-checkin-router.d.ts +1 -0
- package/dist-server/router/auth-checkin-router.js +3 -8
- package/dist-server/router/auth-checkin-router.js.map +1 -1
- package/dist-server/router/auth-private-process-router.d.ts +1 -0
- package/dist-server/router/auth-private-process-router.js +16 -21
- package/dist-server/router/auth-private-process-router.js.map +1 -1
- package/dist-server/router/auth-public-process-router.d.ts +1 -0
- package/dist-server/router/auth-public-process-router.js +6 -25
- package/dist-server/router/auth-public-process-router.js.map +1 -1
- package/dist-server/router/auth-signin-router.d.ts +1 -0
- package/dist-server/router/auth-signin-router.js +2 -7
- package/dist-server/router/auth-signin-router.js.map +1 -1
- package/dist-server/router/auth-signup-router.d.ts +1 -0
- package/dist-server/router/auth-signup-router.js +34 -40
- package/dist-server/router/auth-signup-router.js.map +1 -1
- package/dist-server/router/index.d.ts +8 -0
- package/dist-server/router/index.js +9 -22
- package/dist-server/router/index.js.map +1 -1
- package/dist-server/router/oauth2/index.d.ts +2 -0
- package/dist-server/router/oauth2/index.js +3 -16
- package/dist-server/router/oauth2/index.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-authorize-router.d.ts +1 -0
- package/dist-server/router/oauth2/oauth2-authorize-router.js +4 -11
- package/dist-server/router/oauth2/oauth2-authorize-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-router.d.ts +9 -0
- package/dist-server/router/oauth2/oauth2-router.js +11 -17
- package/dist-server/router/oauth2/oauth2-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-server.d.ts +5 -0
- package/dist-server/router/oauth2/oauth2-server.js +25 -35
- package/dist-server/router/oauth2/oauth2-server.js.map +1 -1
- package/dist-server/router/oauth2/passport-oauth2-client-password.d.ts +7 -0
- package/dist-server/router/oauth2/passport-oauth2-client-password.js +3 -5
- package/dist-server/router/oauth2/passport-oauth2-client-password.js.map +1 -1
- package/dist-server/router/oauth2/passport-refresh-token.d.ts +7 -0
- package/dist-server/router/oauth2/passport-refresh-token.js +3 -5
- package/dist-server/router/oauth2/passport-refresh-token.js.map +1 -1
- package/dist-server/router/path-base-domain-router.d.ts +1 -0
- package/dist-server/router/path-base-domain-router.js +2 -6
- package/dist-server/router/path-base-domain-router.js.map +1 -1
- package/dist-server/router/site-root-router.d.ts +1 -0
- package/dist-server/router/site-root-router.js +4 -13
- package/dist-server/router/site-root-router.js.map +1 -1
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/routes.js +2 -9
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-mutation.d.ts +3 -0
- package/dist-server/service/app-binding/app-binding-mutation.js +11 -24
- package/dist-server/service/app-binding/app-binding-mutation.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-query.d.ts +14 -0
- package/dist-server/service/app-binding/app-binding-query.js +51 -60
- package/dist-server/service/app-binding/app-binding-query.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-types.d.ts +5 -0
- package/dist-server/service/app-binding/app-binding-types.js +6 -14
- package/dist-server/service/app-binding/app-binding-types.js.map +1 -1
- package/dist-server/service/app-binding/app-binding.d.ts +7 -0
- package/dist-server/service/app-binding/app-binding.js +8 -16
- package/dist-server/service/app-binding/app-binding.js.map +1 -1
- package/dist-server/service/app-binding/index.d.ts +3 -0
- package/dist-server/service/app-binding/index.js.map +1 -1
- package/dist-server/service/appliance/appliance-mutation.d.ts +8 -0
- package/dist-server/service/appliance/appliance-mutation.js +40 -53
- package/dist-server/service/appliance/appliance-mutation.js.map +1 -1
- package/dist-server/service/appliance/appliance-query.d.ts +11 -0
- package/dist-server/service/appliance/appliance-query.js +35 -48
- package/dist-server/service/appliance/appliance-query.js.map +1 -1
- package/dist-server/service/appliance/appliance-types.d.ts +22 -0
- package/dist-server/service/appliance/appliance-types.js +34 -42
- package/dist-server/service/appliance/appliance-types.js.map +1 -1
- package/dist-server/service/appliance/appliance.d.ts +22 -0
- package/dist-server/service/appliance/appliance.js +35 -47
- package/dist-server/service/appliance/appliance.js.map +1 -1
- package/dist-server/service/appliance/index.d.ts +5 -0
- package/dist-server/service/appliance/index.js.map +1 -1
- package/dist-server/service/application/application-mutation.d.ts +66 -0
- package/dist-server/service/application/application-mutation.js +47 -61
- package/dist-server/service/application/application-mutation.js.map +1 -1
- package/dist-server/service/application/application-query.d.ts +16 -0
- package/dist-server/service/application/application-query.js +54 -67
- package/dist-server/service/application/application-query.js.map +1 -1
- package/dist-server/service/application/application-types.d.ts +27 -0
- package/dist-server/service/application/application-types.js +41 -49
- package/dist-server/service/application/application-types.js.map +1 -1
- package/dist-server/service/application/application.d.ts +35 -0
- package/dist-server/service/application/application.js +42 -54
- package/dist-server/service/application/application.js.map +1 -1
- package/dist-server/service/application/index.d.ts +5 -0
- package/dist-server/service/application/index.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-mutation.d.ts +6 -0
- package/dist-server/service/domain-generator/domain-generator-mutation.js +21 -32
- package/dist-server/service/domain-generator/domain-generator-mutation.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-types.d.ts +19 -0
- package/dist-server/service/domain-generator/domain-generator-types.js +26 -35
- package/dist-server/service/domain-generator/domain-generator-types.js.map +1 -1
- package/dist-server/service/domain-generator/index.d.ts +2 -0
- package/dist-server/service/domain-generator/index.js.map +1 -1
- package/dist-server/service/granted-role/granted-role-mutation.d.ts +11 -0
- package/dist-server/service/granted-role/granted-role-mutation.js +23 -29
- package/dist-server/service/granted-role/granted-role-mutation.js.map +1 -1
- package/dist-server/service/granted-role/granted-role-query.d.ts +16 -0
- package/dist-server/service/granted-role/granted-role-query.js +31 -43
- package/dist-server/service/granted-role/granted-role-query.js.map +1 -1
- package/dist-server/service/granted-role/granted-role.d.ts +9 -0
- package/dist-server/service/granted-role/granted-role.js +12 -21
- package/dist-server/service/granted-role/granted-role.js.map +1 -1
- package/dist-server/service/granted-role/index.d.ts +5 -0
- package/dist-server/service/granted-role/index.js.map +1 -1
- package/dist-server/service/index.d.ts +31 -0
- package/dist-server/service/index.js +22 -35
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/invitation/index.d.ts +5 -0
- package/dist-server/service/invitation/index.js.map +1 -1
- package/dist-server/service/invitation/invitation-mutation.d.ts +17 -0
- package/dist-server/service/invitation/invitation-mutation.js +26 -37
- package/dist-server/service/invitation/invitation-mutation.js.map +1 -1
- package/dist-server/service/invitation/invitation-query.d.ts +8 -0
- package/dist-server/service/invitation/invitation-query.js +19 -30
- package/dist-server/service/invitation/invitation-query.js.map +1 -1
- package/dist-server/service/invitation/invitation-types.d.ts +5 -0
- package/dist-server/service/invitation/invitation-types.js +6 -14
- package/dist-server/service/invitation/invitation-types.js.map +1 -1
- package/dist-server/service/invitation/invitation.d.ts +14 -0
- package/dist-server/service/invitation/invitation.js +24 -32
- package/dist-server/service/invitation/invitation.js.map +1 -1
- package/dist-server/service/login-history/index.d.ts +4 -0
- package/dist-server/service/login-history/index.js.map +1 -1
- package/dist-server/service/login-history/login-history-query.d.ts +8 -0
- package/dist-server/service/login-history/login-history-query.js +27 -40
- package/dist-server/service/login-history/login-history-query.js.map +1 -1
- package/dist-server/service/login-history/login-history.d.ts +12 -0
- package/dist-server/service/login-history/login-history.js +29 -38
- package/dist-server/service/login-history/login-history.js.map +1 -1
- package/dist-server/service/partner/index.d.ts +5 -0
- package/dist-server/service/partner/index.js.map +1 -1
- package/dist-server/service/partner/partner-mutation.d.ts +4 -0
- package/dist-server/service/partner/partner-mutation.js +20 -32
- package/dist-server/service/partner/partner-mutation.js.map +1 -1
- package/dist-server/service/partner/partner-query.d.ts +14 -0
- package/dist-server/service/partner/partner-query.js +53 -66
- package/dist-server/service/partner/partner-query.js.map +1 -1
- package/dist-server/service/partner/partner-types.d.ts +5 -0
- package/dist-server/service/partner/partner-types.js +6 -14
- package/dist-server/service/partner/partner-types.js.map +1 -1
- package/dist-server/service/partner/partner.d.ts +15 -0
- package/dist-server/service/partner/partner.js +24 -33
- package/dist-server/service/partner/partner.js.map +1 -1
- package/dist-server/service/password-history/index.d.ts +2 -0
- package/dist-server/service/password-history/index.js.map +1 -1
- package/dist-server/service/password-history/password-history.d.ts +4 -0
- package/dist-server/service/password-history/password-history.js +6 -14
- package/dist-server/service/password-history/password-history.js.map +1 -1
- package/dist-server/service/privilege/index.d.ts +5 -0
- package/dist-server/service/privilege/index.js.map +1 -1
- package/dist-server/service/privilege/privilege-directive.d.ts +3 -0
- package/dist-server/service/privilege/privilege-directive.js +4 -7
- package/dist-server/service/privilege/privilege-directive.js.map +1 -1
- package/dist-server/service/privilege/privilege-mutation.d.ts +7 -0
- package/dist-server/service/privilege/privilege-mutation.js +32 -42
- package/dist-server/service/privilege/privilege-mutation.js.map +1 -1
- package/dist-server/service/privilege/privilege-query.d.ts +13 -0
- package/dist-server/service/privilege/privilege-query.js +41 -53
- package/dist-server/service/privilege/privilege-query.js.map +1 -1
- package/dist-server/service/privilege/privilege-types.d.ts +25 -0
- package/dist-server/service/privilege/privilege-types.js +35 -43
- package/dist-server/service/privilege/privilege-types.js.map +1 -1
- package/dist-server/service/privilege/privilege.d.ts +15 -0
- package/dist-server/service/privilege/privilege.js +24 -32
- package/dist-server/service/privilege/privilege.js.map +1 -1
- package/dist-server/service/role/index.d.ts +5 -0
- package/dist-server/service/role/index.js.map +1 -1
- package/dist-server/service/role/role-mutation.d.ts +8 -0
- package/dist-server/service/role/role-mutation.js +40 -49
- package/dist-server/service/role/role-mutation.js.map +1 -1
- package/dist-server/service/role/role-query.d.ts +18 -0
- package/dist-server/service/role/role-query.js +73 -84
- package/dist-server/service/role/role-query.js.map +1 -1
- package/dist-server/service/role/role-types.d.ts +33 -0
- package/dist-server/service/role/role-types.js +48 -56
- package/dist-server/service/role/role-types.js.map +1 -1
- package/dist-server/service/role/role.d.ts +18 -0
- package/dist-server/service/role/role.js +28 -37
- package/dist-server/service/role/role.js.map +1 -1
- package/dist-server/service/user/index.d.ts +5 -0
- package/dist-server/service/user/index.js.map +1 -1
- package/dist-server/service/user/user-mutation.d.ts +28 -0
- package/dist-server/service/user/user-mutation.js +89 -93
- package/dist-server/service/user/user-mutation.js.map +1 -1
- package/dist-server/service/user/user-query.d.ts +16 -0
- package/dist-server/service/user/user-query.js +73 -82
- package/dist-server/service/user/user-query.js.map +1 -1
- package/dist-server/service/user/user-types.d.ts +26 -0
- package/dist-server/service/user/user-types.js +40 -48
- package/dist-server/service/user/user-types.js.map +1 -1
- package/dist-server/service/user/user.d.ts +39 -0
- package/dist-server/service/user/user.js +53 -63
- package/dist-server/service/user/user.js.map +1 -1
- package/dist-server/service/verification-token/index.d.ts +2 -0
- package/dist-server/service/verification-token/index.js.map +1 -1
- package/dist-server/service/verification-token/verification-token.d.ts +14 -0
- package/dist-server/service/verification-token/verification-token.js +14 -22
- package/dist-server/service/verification-token/verification-token.js.map +1 -1
- package/dist-server/templates/account-unlock-email.d.ts +4 -0
- package/dist-server/templates/account-unlock-email.js.map +1 -1
- package/dist-server/templates/invitation-email.d.ts +4 -0
- package/dist-server/templates/invitation-email.js.map +1 -1
- package/dist-server/templates/reset-password-email.d.ts +4 -0
- package/dist-server/templates/reset-password-email.js.map +1 -1
- package/dist-server/templates/verification-email.d.ts +4 -0
- package/dist-server/templates/verification-email.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/dist-server/types.d.ts +17 -0
- package/dist-server/types.js +3 -0
- package/dist-server/types.js.map +1 -0
- package/dist-server/utils/accepts.d.ts +1 -0
- package/dist-server/utils/accepts.js.map +1 -1
- package/dist-server/utils/access-token-cookie.d.ts +3 -0
- package/dist-server/utils/access-token-cookie.js.map +1 -1
- package/dist-server/utils/check-user-belongs-domain.d.ts +10 -0
- 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-from-hostname.d.ts +1 -0
- package/dist-server/utils/get-domain-from-hostname.js.map +1 -1
- package/dist-server/utils/get-domain-users.d.ts +5 -0
- package/dist-server/utils/get-domain-users.js +2 -3
- package/dist-server/utils/get-domain-users.js.map +1 -1
- package/dist-server/utils/get-secret.d.ts +1 -0
- package/dist-server/utils/get-secret.js.map +1 -1
- package/dist-server/utils/get-user-domains.d.ts +5 -0
- package/dist-server/utils/get-user-domains.js +7 -5
- package/dist-server/utils/get-user-domains.js.map +1 -1
- package/package.json +15 -13
- package/server/controllers/auth.ts +1 -0
- package/server/controllers/change-pwd.ts +12 -15
- package/server/controllers/checkin.ts +3 -3
- package/server/controllers/invitation.ts +10 -16
- package/server/controllers/profile.ts +4 -3
- package/server/controllers/reset-password.ts +13 -14
- package/server/controllers/signin.ts +4 -2
- package/server/controllers/signup.ts +13 -8
- package/server/controllers/unlock-user.ts +5 -3
- package/server/controllers/utils/password-rule.ts +0 -1
- package/server/controllers/utils/save-invitation-token.ts +2 -1
- package/server/controllers/utils/save-verification-token.ts +2 -1
- package/server/controllers/verification.ts +6 -4
- package/server/errors/auth-error.ts +3 -0
- package/server/errors/user-domain-not-match-error.ts +3 -0
- package/server/index.ts +3 -1
- package/server/middlewares/authenticate-401-middleware.ts +15 -11
- package/server/middlewares/domain-authenticate-middleware.ts +11 -12
- package/server/middlewares/graphql-authenticate-middleware.ts +1 -5
- package/server/middlewares/index.ts +0 -4
- package/server/middlewares/jwt-authenticate-middleware.ts +4 -9
- package/server/middlewares/signin-middleware.ts +6 -5
- package/server/migrations/1548206416130-SeedUser.ts +3 -3
- package/server/migrations/1566805283882-SeedPrivilege.ts +2 -1
- package/server/router/auth-checkin-router.ts +5 -7
- package/server/router/auth-private-process-router.ts +16 -18
- package/server/router/auth-public-process-router.ts +6 -37
- package/server/router/auth-signin-router.ts +1 -5
- package/server/router/auth-signup-router.ts +40 -47
- package/server/router/oauth2/oauth2-authorize-router.ts +4 -10
- package/server/router/oauth2/oauth2-router.ts +4 -11
- package/server/router/oauth2/oauth2-server.ts +19 -34
- package/server/router/path-base-domain-router.ts +0 -4
- package/server/router/site-root-router.ts +4 -11
- package/server/routes.ts +8 -13
- package/server/service/app-binding/app-binding-mutation.ts +6 -8
- package/server/service/app-binding/app-binding-query.ts +15 -14
- package/server/service/appliance/appliance-mutation.ts +14 -13
- package/server/service/appliance/appliance-query.ts +11 -10
- package/server/service/application/application-mutation.ts +24 -18
- package/server/service/application/application-query.ts +20 -17
- package/server/service/domain-generator/domain-generator-mutation.ts +15 -10
- package/server/service/granted-role/granted-role-mutation.ts +15 -13
- package/server/service/granted-role/granted-role-query.ts +12 -10
- package/server/service/invitation/invitation-mutation.ts +7 -5
- package/server/service/invitation/invitation-query.ts +6 -4
- package/server/service/login-history/login-history-query.ts +13 -11
- package/server/service/login-history/login-history.ts +5 -4
- package/server/service/partner/partner-mutation.ts +10 -9
- package/server/service/partner/partner-query.ts +10 -10
- package/server/service/privilege/privilege-directive.ts +1 -3
- package/server/service/privilege/privilege-mutation.ts +15 -9
- package/server/service/privilege/privilege-query.ts +7 -7
- package/server/service/role/role-mutation.ts +18 -11
- package/server/service/role/role-query.ts +18 -16
- package/server/service/user/user-mutation.ts +39 -34
- package/server/service/user/user-query.ts +29 -21
- package/server/service/user/user.ts +12 -10
- package/server/types.ts +21 -0
- package/server/utils/check-user-belongs-domain.ts +2 -2
- package/server/utils/get-domain-users.ts +4 -2
- package/server/utils/get-user-domains.ts +8 -5
- package/things-factory.config.js +1 -1
- package/translations/en.json +2 -5
- package/translations/ko.json +5 -8
- package/translations/ms.json +2 -5
- package/translations/zh.json +2 -5
- package/client/actions/auth.js +0 -16
- package/client/index.js +0 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import Router from 'koa-router'
|
|
2
|
+
|
|
2
3
|
import { config } from '@things-factory/env'
|
|
4
|
+
|
|
3
5
|
import { signup } from '../controllers/signup'
|
|
4
|
-
import { setAccessTokenCookie } from '../utils/access-token-cookie'
|
|
5
6
|
import { accepts } from '../utils/accepts'
|
|
6
|
-
|
|
7
|
-
const debug = require('debug')('things-factory:auth-base:auth-signup-router')
|
|
7
|
+
import { setAccessTokenCookie } from '../utils/access-token-cookie'
|
|
8
8
|
|
|
9
9
|
const passwordRule = config.get('password') || {
|
|
10
10
|
lowerCase: true,
|
|
@@ -23,8 +23,6 @@ export const authSignupRouter = new Router()
|
|
|
23
23
|
authSignupRouter.get('/auth/signup', async (context, next) => {
|
|
24
24
|
const { email } = context.query
|
|
25
25
|
|
|
26
|
-
debug('get:/auth/signup', email)
|
|
27
|
-
|
|
28
26
|
await context.render('auth-page', {
|
|
29
27
|
pageElement: 'auth-signup',
|
|
30
28
|
elementScript: '/auth/signup.js',
|
|
@@ -40,51 +38,46 @@ authSignupRouter.post('/auth/signup', async (context, next) => {
|
|
|
40
38
|
const { domain } = context.state
|
|
41
39
|
const user = context.request.body
|
|
42
40
|
|
|
43
|
-
try {
|
|
44
|
-
|
|
41
|
+
// try {
|
|
42
|
+
const { token } = await signup(
|
|
43
|
+
{
|
|
45
44
|
...user,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
...user,
|
|
52
|
-
context,
|
|
53
|
-
domain
|
|
54
|
-
},
|
|
55
|
-
true
|
|
56
|
-
)
|
|
45
|
+
context,
|
|
46
|
+
domain
|
|
47
|
+
},
|
|
48
|
+
true
|
|
49
|
+
)
|
|
57
50
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
setAccessTokenCookie(context, token)
|
|
51
|
+
const message = t('text.user registered successfully')
|
|
52
|
+
context.body = {
|
|
53
|
+
message,
|
|
54
|
+
token
|
|
55
|
+
}
|
|
65
56
|
|
|
66
|
-
|
|
67
|
-
await context.render('auth-page', {
|
|
68
|
-
pageElement: 'auth-result',
|
|
69
|
-
elementScript: '/auth/result.js',
|
|
70
|
-
data: {
|
|
71
|
-
message
|
|
72
|
-
}
|
|
73
|
-
})
|
|
74
|
-
}
|
|
75
|
-
} catch (e) {
|
|
76
|
-
context.status = 401
|
|
77
|
-
context.body = e.message
|
|
57
|
+
setAccessTokenCookie(context, token)
|
|
78
58
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
})
|
|
88
|
-
}
|
|
59
|
+
if (accepts(header.accept, ['text/html', '*/*'])) {
|
|
60
|
+
await context.render('auth-page', {
|
|
61
|
+
pageElement: 'auth-result',
|
|
62
|
+
elementScript: '/auth/result.js',
|
|
63
|
+
data: {
|
|
64
|
+
message
|
|
65
|
+
}
|
|
66
|
+
})
|
|
89
67
|
}
|
|
68
|
+
// } catch (e) {
|
|
69
|
+
// context.status = 401
|
|
70
|
+
// context.body = e.message
|
|
71
|
+
|
|
72
|
+
// if (accepts(header.accept, ['text/html', '*/*'])) {
|
|
73
|
+
// await context.render('auth-page', {
|
|
74
|
+
// pageElement: 'auth-signup',
|
|
75
|
+
// elementScript: '/auth/signup.js',
|
|
76
|
+
// data: {
|
|
77
|
+
// message: e instanceof AuthError ? t(`error.${e.message}`) : e.message,
|
|
78
|
+
// passwordRule
|
|
79
|
+
// }
|
|
80
|
+
// })
|
|
81
|
+
// }
|
|
82
|
+
// }
|
|
90
83
|
})
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import Router from 'koa-router'
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { getRepository } from '@things-factory/shell'
|
|
4
|
+
|
|
3
5
|
import { Application } from '../../service/application/application'
|
|
4
6
|
import { NonClient, server as oauth2orizeServer } from './oauth2-server'
|
|
5
7
|
|
|
6
|
-
const debug = require('debug')('things-factory:auth-base:oauth2-authorize-router')
|
|
7
|
-
|
|
8
8
|
export const oauth2AuthorizeRouter = new Router()
|
|
9
9
|
|
|
10
10
|
// user authorization endpoint
|
|
@@ -26,7 +26,7 @@ export const oauth2AuthorizeRouter = new Router()
|
|
|
26
26
|
oauth2AuthorizeRouter.get(
|
|
27
27
|
'/authorize',
|
|
28
28
|
oauth2orizeServer.authorize(async function (clientID, redirectURI) {
|
|
29
|
-
const client = await getRepository(Application).
|
|
29
|
+
const client = await getRepository(Application).findOneBy({
|
|
30
30
|
appKey: clientID
|
|
31
31
|
})
|
|
32
32
|
// CONFIRM-ME redirectUrl 의 허용 범위는 ?
|
|
@@ -34,8 +34,6 @@ oauth2AuthorizeRouter.get(
|
|
|
34
34
|
// return false
|
|
35
35
|
// }
|
|
36
36
|
|
|
37
|
-
debug('authorize fetch client', clientID, redirectURI, client)
|
|
38
|
-
|
|
39
37
|
return [client || NonClient, redirectURI]
|
|
40
38
|
}),
|
|
41
39
|
async function (context, next) {
|
|
@@ -45,13 +43,10 @@ oauth2AuthorizeRouter.get(
|
|
|
45
43
|
let elementScript: string = '/oauth2/oauth2-decision-page.js'
|
|
46
44
|
|
|
47
45
|
if (oauth2.client.id === NonClient.id) {
|
|
48
|
-
debug('authorize client not found : will render not found error in the decision page')
|
|
49
46
|
pageElement = 'oauth2-decision-error'
|
|
50
47
|
elementScript = '/oauth2/oauth2-decision-error-page.js'
|
|
51
48
|
}
|
|
52
49
|
|
|
53
|
-
debug('authorize render page', oauth2)
|
|
54
|
-
|
|
55
50
|
try {
|
|
56
51
|
await context.render('oauth2-page', {
|
|
57
52
|
pageElement,
|
|
@@ -74,7 +69,6 @@ oauth2AuthorizeRouter.get(
|
|
|
74
69
|
// availableScopes
|
|
75
70
|
// })
|
|
76
71
|
} catch (e) {
|
|
77
|
-
debug('render decision page error', e)
|
|
78
72
|
throw e
|
|
79
73
|
}
|
|
80
74
|
}
|
|
@@ -2,9 +2,8 @@ import jwt from 'jsonwebtoken'
|
|
|
2
2
|
import compose from 'koa-compose'
|
|
3
3
|
import passport from 'koa-passport'
|
|
4
4
|
import Router from 'koa-router'
|
|
5
|
-
import { getRepository } from 'typeorm'
|
|
6
5
|
|
|
7
|
-
import { Domain } from '@things-factory/shell'
|
|
6
|
+
import { Domain, getRepository } from '@things-factory/shell'
|
|
8
7
|
|
|
9
8
|
import { jwtAuthenticateMiddleware } from '../../middlewares'
|
|
10
9
|
import { Application } from '../../service/application/application'
|
|
@@ -22,17 +21,13 @@ declare global {
|
|
|
22
21
|
}
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
const debug = require('debug')('things-factory:auth-base:oauth2-router')
|
|
26
|
-
|
|
27
24
|
export const oauth2Router = new Router()
|
|
28
25
|
|
|
29
26
|
passport.use(
|
|
30
27
|
'oauth2-client-password',
|
|
31
28
|
new ClientPasswordStrategy({}, (clientId, clientSecret, done) => {
|
|
32
|
-
debug('oauth2-client-password', clientId, clientSecret)
|
|
33
|
-
|
|
34
29
|
getRepository(Application)
|
|
35
|
-
.
|
|
30
|
+
.findOneBy({
|
|
36
31
|
appKey: clientId
|
|
37
32
|
})
|
|
38
33
|
.then(client => {
|
|
@@ -84,7 +79,7 @@ oauth2Router.post('/refresh-token', async (context, next) => {
|
|
|
84
79
|
const refreshToken: string | undefined = context.request?.body?.refreshToken
|
|
85
80
|
if (!refreshToken) throw new Error('Missing refresh token')
|
|
86
81
|
|
|
87
|
-
const appUser: User | undefined = await getRepository(User).
|
|
82
|
+
const appUser: User | undefined = await getRepository(User).findOneBy({
|
|
88
83
|
password: refreshToken
|
|
89
84
|
})
|
|
90
85
|
|
|
@@ -122,8 +117,6 @@ oauth2Router.post('/refresh-token', async (context, next) => {
|
|
|
122
117
|
oauth2Router.get('/profile', jwtAuthenticateMiddleware, async (context, next) => {
|
|
123
118
|
const { user, domain } = context.state
|
|
124
119
|
|
|
125
|
-
debug('getting user/application profile', user, domain)
|
|
126
|
-
|
|
127
120
|
const { name, description, email, userType: type, locale } = user
|
|
128
121
|
const { name: domainName, subdomain, brandName, brandImage, contentImage, timezone } = domain || {}
|
|
129
122
|
|
|
@@ -154,7 +147,7 @@ oauth2Router.get('/profile', jwtAuthenticateMiddleware, async (context, next) =>
|
|
|
154
147
|
|
|
155
148
|
oauth2Router.post('/disconnect', jwtAuthenticateMiddleware, async (context, next) => {
|
|
156
149
|
try {
|
|
157
|
-
let { user }
|
|
150
|
+
let { user } = context.state
|
|
158
151
|
|
|
159
152
|
if (typeof process.oauthDisconnect === 'function') {
|
|
160
153
|
await process.oauthDisconnect(user)
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import oauth2orize from 'oauth2orize-koa'
|
|
2
|
-
import {
|
|
2
|
+
import { In } from 'typeorm'
|
|
3
3
|
|
|
4
4
|
import { logger } from '@things-factory/env'
|
|
5
|
-
import { Domain } from '@things-factory/shell'
|
|
5
|
+
import { Domain, getRepository } from '@things-factory/shell'
|
|
6
6
|
|
|
7
7
|
import { Application } from '../../service/application/application'
|
|
8
8
|
import { Role } from '../../service/role/role'
|
|
9
9
|
import { User, UserStatus } from '../../service/user/user'
|
|
10
10
|
|
|
11
11
|
const crypto = require('crypto')
|
|
12
|
-
const debug = require('debug')('things-factory:auth-base:oauth2-server')
|
|
13
12
|
|
|
14
13
|
export const NOTFOUND = 'NOTFOUND'
|
|
15
14
|
export const NonClient = {
|
|
@@ -33,18 +32,15 @@ export const server = oauth2orize.createServer()
|
|
|
33
32
|
// the client by ID from the database.
|
|
34
33
|
|
|
35
34
|
server.serializeClient(async function (client) {
|
|
36
|
-
debug('serialze', client)
|
|
37
35
|
return client.id
|
|
38
36
|
})
|
|
39
37
|
|
|
40
38
|
server.deserializeClient(async function (id) {
|
|
41
39
|
if (id == NOTFOUND) {
|
|
42
|
-
debug('deserialize - not found')
|
|
43
40
|
return {}
|
|
44
41
|
}
|
|
45
42
|
|
|
46
|
-
const application = await getRepository(Application).
|
|
47
|
-
debug('deserialize', id, application)
|
|
43
|
+
const application = await getRepository(Application).findOneBy({ id })
|
|
48
44
|
return application
|
|
49
45
|
})
|
|
50
46
|
|
|
@@ -81,24 +77,19 @@ server.exchange(
|
|
|
81
77
|
try {
|
|
82
78
|
/* authorization code */
|
|
83
79
|
var decoded: any = Application.verifyAuthCode(code)
|
|
84
|
-
debug('exchange code - decoded', decoded)
|
|
85
80
|
} catch (e) {
|
|
86
|
-
debug('exchange code', e)
|
|
87
81
|
return false
|
|
88
82
|
}
|
|
89
83
|
let { email, appKey, subdomain, scopes } = decoded
|
|
90
84
|
|
|
91
|
-
const application: Application = await getRepository(Application).
|
|
85
|
+
const application: Application = await getRepository(Application).findOneBy({
|
|
92
86
|
appKey
|
|
93
87
|
})
|
|
94
88
|
|
|
95
89
|
if (!application) {
|
|
96
|
-
debug('exchange code', 'application is not exist')
|
|
97
90
|
return false
|
|
98
91
|
}
|
|
99
92
|
|
|
100
|
-
debug('exchange code - application', application)
|
|
101
|
-
|
|
102
93
|
/* DONT-FORGET uncomment after test */
|
|
103
94
|
// if (redirectUrl !== application.redirectUrl && redirectUrl.indexOf(application.redirectUrl) != 0) {
|
|
104
95
|
// logger.error(
|
|
@@ -112,24 +103,23 @@ server.exchange(
|
|
|
112
103
|
// )
|
|
113
104
|
// }
|
|
114
105
|
|
|
115
|
-
const domain: Domain = await getRepository(Domain).
|
|
106
|
+
const domain: Domain = await getRepository(Domain).findOneBy({
|
|
116
107
|
subdomain
|
|
117
108
|
})
|
|
118
109
|
|
|
119
|
-
const creator: User = await getRepository(User).
|
|
110
|
+
const creator: User = await getRepository(User).findOneBy({ email })
|
|
120
111
|
|
|
121
112
|
const appuserEmail = `${crypto.randomUUID()}@${subdomain}`
|
|
122
113
|
|
|
123
|
-
var appuser: User = await getRepository(User).findOne(
|
|
124
|
-
{
|
|
114
|
+
var appuser: User = await getRepository(User).findOne({
|
|
115
|
+
where: {
|
|
125
116
|
email: appuserEmail,
|
|
126
117
|
reference: application.id,
|
|
127
118
|
userType: 'application'
|
|
128
119
|
},
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
)
|
|
120
|
+
|
|
121
|
+
relations: ['domains', 'creator', 'updater']
|
|
122
|
+
})
|
|
133
123
|
|
|
134
124
|
appuser = await getRepository(User).save({
|
|
135
125
|
...(appuser || {}),
|
|
@@ -179,7 +169,6 @@ server.exchange(
|
|
|
179
169
|
try {
|
|
180
170
|
/* refresh token */
|
|
181
171
|
var decoded: any = Application.verifyAuthCode(refreshToken)
|
|
182
|
-
debug('exchange refresh-token - decoded', decoded)
|
|
183
172
|
} catch (e) {
|
|
184
173
|
logger.error(e)
|
|
185
174
|
return false
|
|
@@ -194,7 +183,7 @@ server.exchange(
|
|
|
194
183
|
exp: expires_in
|
|
195
184
|
} = decoded
|
|
196
185
|
|
|
197
|
-
const application: Application = await getRepository(Application).
|
|
186
|
+
const application: Application = await getRepository(Application).findOneBy({
|
|
198
187
|
appKey
|
|
199
188
|
})
|
|
200
189
|
|
|
@@ -203,34 +192,30 @@ server.exchange(
|
|
|
203
192
|
return false
|
|
204
193
|
}
|
|
205
194
|
|
|
206
|
-
debug('exchange refresh-token - application', application?.name)
|
|
207
|
-
|
|
208
195
|
if (Date.now() > expires_in * 1000) {
|
|
209
196
|
logger.error('refresh token is expired')
|
|
210
197
|
return false
|
|
211
198
|
}
|
|
212
199
|
|
|
213
|
-
const domain: Domain = await getRepository(Domain).
|
|
200
|
+
const domain: Domain = await getRepository(Domain).findOneBy({
|
|
214
201
|
subdomain
|
|
215
202
|
})
|
|
216
203
|
|
|
217
|
-
const creator: User = await getRepository(User).
|
|
204
|
+
const creator: User = await getRepository(User).findOneBy({
|
|
218
205
|
id,
|
|
219
206
|
userType
|
|
220
207
|
})
|
|
221
208
|
|
|
222
209
|
const appuserEmail = `${appKey}@${subdomain}`
|
|
223
210
|
|
|
224
|
-
var appuser: User = await getRepository(User).findOne(
|
|
225
|
-
{
|
|
211
|
+
var appuser: User = await getRepository(User).findOne({
|
|
212
|
+
where: {
|
|
226
213
|
email: appuserEmail,
|
|
227
214
|
reference: application.id,
|
|
228
215
|
userType: 'application'
|
|
229
216
|
},
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
-
)
|
|
217
|
+
relations: ['domain', 'creator', 'updater']
|
|
218
|
+
})
|
|
234
219
|
|
|
235
220
|
if (!appuser) {
|
|
236
221
|
logger.error('application is not bound')
|
|
@@ -251,7 +236,7 @@ server.exchange(
|
|
|
251
236
|
return false
|
|
252
237
|
}
|
|
253
238
|
|
|
254
|
-
const roles = await getRepository(Role).
|
|
239
|
+
const roles = await getRepository(Role).findBy({
|
|
255
240
|
name: In(scopes),
|
|
256
241
|
domain
|
|
257
242
|
})
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import Router from 'koa-router'
|
|
2
2
|
|
|
3
|
-
const debug = require('debug')('things-factory:auth-base:path-base-domain-router')
|
|
4
|
-
|
|
5
3
|
export const pathBaseDomainRouter = new Router()
|
|
6
4
|
|
|
7
5
|
/* browser history fallback 을 위한 라우터. */
|
|
8
6
|
pathBaseDomainRouter.get('/(.*)', async (context, next) => {
|
|
9
|
-
debug('get:/(.*)', context.path)
|
|
10
|
-
|
|
11
7
|
await next()
|
|
12
8
|
})
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Domain, domainMiddleware } from '@things-factory/shell'
|
|
2
1
|
import Router from 'koa-router'
|
|
3
2
|
import passport from 'passport'
|
|
3
|
+
|
|
4
|
+
import { Domain, domainMiddleware } from '@things-factory/shell'
|
|
5
|
+
|
|
4
6
|
import { User } from '../service/user/user'
|
|
5
7
|
import { getUserDomains } from '../utils/get-user-domains'
|
|
6
8
|
|
|
7
|
-
const debug = require('debug')('things-factory:auth-base:site-root-router')
|
|
8
|
-
|
|
9
9
|
export const siteRootRouter = new Router()
|
|
10
10
|
|
|
11
11
|
async function findAuth(context, next) {
|
|
@@ -14,9 +14,7 @@ async function findAuth(context, next) {
|
|
|
14
14
|
try {
|
|
15
15
|
const user = await User.checkAuth(decoded)
|
|
16
16
|
context.state.user = user
|
|
17
|
-
} catch (e) {
|
|
18
|
-
debug('not signed in', e)
|
|
19
|
-
}
|
|
17
|
+
} catch (e) {}
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
await next()
|
|
@@ -25,24 +23,19 @@ async function findAuth(context, next) {
|
|
|
25
23
|
|
|
26
24
|
siteRootRouter.get('/', findAuth, domainMiddleware, async (context, next) => {
|
|
27
25
|
const { user, domain } = context.state
|
|
28
|
-
debug('get:/', user?.email, domain?.subdomain)
|
|
29
26
|
|
|
30
27
|
const subdomain = domain?.subdomain
|
|
31
28
|
|
|
32
29
|
if (user && subdomain) {
|
|
33
30
|
const userDomains: Domain[] = await getUserDomains(user)
|
|
34
31
|
if (userDomains.find(userDomain => userDomain.subdomain == subdomain)) {
|
|
35
|
-
debug('get:/', user.email, subdomain, 'user have access right to the subdomain. so, redirect to business-home')
|
|
36
32
|
return await next()
|
|
37
33
|
}
|
|
38
34
|
|
|
39
|
-
debug('get:/', user.email, subdomain, "user doesn't have access right to the subdomain. so, redirect to checkin")
|
|
40
|
-
|
|
41
35
|
return context.redirect(`/auth/checkin/${subdomain}`)
|
|
42
36
|
}
|
|
43
37
|
|
|
44
38
|
if (user && !subdomain) {
|
|
45
|
-
debug('get:/', user?.email, 'redirect to checkin')
|
|
46
39
|
context.redirect('/auth/checkin')
|
|
47
40
|
|
|
48
41
|
return
|
package/server/routes.ts
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
|
+
import session from 'koa-session'
|
|
2
|
+
|
|
1
3
|
import { config } from '@things-factory/env'
|
|
4
|
+
|
|
2
5
|
import { domainAuthenticateMiddleware, jwtAuthenticateMiddleware } from './middlewares'
|
|
3
6
|
import {
|
|
4
|
-
|
|
7
|
+
authCheckinRouter,
|
|
5
8
|
authPrivateProcessRouter,
|
|
6
9
|
authPublicProcessRouter,
|
|
7
10
|
authSigninRouter,
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
authSignupRouter,
|
|
12
|
+
oauth2AuthorizeRouter,
|
|
10
13
|
oauth2Router,
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
pathBaseDomainRouter,
|
|
15
|
+
siteRootRouter
|
|
13
16
|
} from './router'
|
|
14
|
-
import session from 'koa-session'
|
|
15
17
|
import { SECRET } from './utils/get-secret'
|
|
16
18
|
|
|
17
19
|
const isPathBaseDomain = !config.get('subdomain') && !config.get('useVirtualHostBasedDomain')
|
|
18
|
-
const debug = require('debug')('things-factory:auth-base:routes')
|
|
19
20
|
|
|
20
21
|
process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {
|
|
21
|
-
debug('bootstrap-module-global-public-route')
|
|
22
|
-
|
|
23
22
|
globalPublicRouter.use(siteRootRouter.routes(), siteRootRouter.allowedMethods())
|
|
24
23
|
globalPublicRouter.use(authPublicProcessRouter.routes(), authPublicProcessRouter.allowedMethods())
|
|
25
24
|
})
|
|
@@ -33,8 +32,6 @@ process.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRo
|
|
|
33
32
|
})
|
|
34
33
|
|
|
35
34
|
process.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {
|
|
36
|
-
debug('bootstrap-module-domain-public-route')
|
|
37
|
-
|
|
38
35
|
/* domainPublicRouter based nested-routers */
|
|
39
36
|
domainPublicRouter.use(authSigninRouter.routes(), authSigninRouter.allowedMethods())
|
|
40
37
|
domainPublicRouter.use(authSignupRouter.routes(), authSignupRouter.allowedMethods())
|
|
@@ -71,8 +68,6 @@ process.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRo
|
|
|
71
68
|
// '(.[^.]+)' 은 '', '/'는 제외하고, '/xxx', '/yyy/zzz' 등 모두를 포함하지만, path에 '.'가 있는 경우는 제외한다.
|
|
72
69
|
// (테스트는 여기서 : http://forbeslindesay.github.io/express-route-tester/)
|
|
73
70
|
domainPrivateRouter.get('(.[^.]+)', async (context, next) => {
|
|
74
|
-
const { path } = context
|
|
75
|
-
debug('get:(.[^.]+)', path)
|
|
76
71
|
await next()
|
|
77
72
|
})
|
|
78
73
|
})
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import { getRepository } from 'typeorm'
|
|
1
|
+
import { Arg, Ctx, Mutation, Resolver } from 'type-graphql'
|
|
2
|
+
|
|
3
|
+
import { getRepository } from '@things-factory/shell'
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
import { User } from '../user/user'
|
|
6
|
+
import { AppBinding } from './app-binding'
|
|
7
7
|
|
|
8
8
|
@Resolver(AppBinding)
|
|
9
9
|
export class AppBindingMutation {
|
|
10
10
|
@Mutation(returns => Boolean)
|
|
11
|
-
async deleteAppBinding(@Arg('id') id: string, @Ctx() context:
|
|
11
|
+
async deleteAppBinding(@Arg('id') id: string, @Ctx() context: ResolverContext) {
|
|
12
12
|
const { domain } = context.state
|
|
13
13
|
|
|
14
|
-
debug('user', id)
|
|
15
|
-
|
|
16
14
|
// TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
|
|
17
15
|
// TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.
|
|
18
16
|
await getRepository(User).delete({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
-
import {
|
|
2
|
+
import { SelectQueryBuilder } from 'typeorm'
|
|
3
3
|
|
|
4
|
-
import { buildQuery,
|
|
4
|
+
import { buildQuery, getRepository, ListParam } from '@things-factory/shell'
|
|
5
5
|
|
|
6
6
|
import { buildDomainUsersQueryBuilder } from '../../utils/get-domain-users'
|
|
7
7
|
import { Application } from '../application/application'
|
|
@@ -13,22 +13,23 @@ import { AppBindingList } from './app-binding-types'
|
|
|
13
13
|
@Resolver(AppBinding)
|
|
14
14
|
export class AppBindingQuery {
|
|
15
15
|
@Query(returns => AppBinding)
|
|
16
|
-
async appBinding(@Arg('id') id: string, @Ctx() context:
|
|
16
|
+
async appBinding(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<User> {
|
|
17
17
|
const { domain } = context.state
|
|
18
18
|
|
|
19
19
|
// TODO should check domain is available
|
|
20
|
-
return await getRepository(User).
|
|
20
|
+
return await getRepository(User).findOneBy({ id, userType: 'application' })
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* TODO optimize query */
|
|
23
24
|
@Query(returns => AppBindingList)
|
|
24
|
-
async appBindings(@Args() params: ListParam, @Ctx() context:
|
|
25
|
+
async appBindings(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<UserList> {
|
|
25
26
|
const { domain } = context.state
|
|
26
27
|
|
|
27
|
-
const convertedParams = convertListParams(params)
|
|
28
|
-
convertedParams.where = {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
28
|
+
// const convertedParams = convertListParams(params)
|
|
29
|
+
// convertedParams.where = {
|
|
30
|
+
// ...convertedParams.where,
|
|
31
|
+
// userType: 'application'
|
|
32
|
+
// } as any
|
|
32
33
|
|
|
33
34
|
const alias: string = 'USER'
|
|
34
35
|
const qb: SelectQueryBuilder<User> = buildDomainUsersQueryBuilder(domain.id, alias)
|
|
@@ -47,7 +48,7 @@ export class AppBindingQuery {
|
|
|
47
48
|
// .map(async (user: User) => {
|
|
48
49
|
// const email = user.email
|
|
49
50
|
// const appKey = email.substr(0, email.lastIndexOf('@'))
|
|
50
|
-
// const application = await getRepository(Application).
|
|
51
|
+
// const application = await getRepository(Application).findOneBy({
|
|
51
52
|
// appKey
|
|
52
53
|
// })
|
|
53
54
|
|
|
@@ -65,7 +66,7 @@ export class AppBindingQuery {
|
|
|
65
66
|
|
|
66
67
|
@FieldResolver(type => Application)
|
|
67
68
|
async application(@Root() appBinding: AppBinding): Promise<Application> {
|
|
68
|
-
return await getRepository(Application).
|
|
69
|
+
return await getRepository(Application).findOneBy({ id: appBinding.reference })
|
|
69
70
|
}
|
|
70
71
|
|
|
71
72
|
@FieldResolver(type => String)
|
|
@@ -81,11 +82,11 @@ export class AppBindingQuery {
|
|
|
81
82
|
|
|
82
83
|
@FieldResolver(type => User)
|
|
83
84
|
async updater(@Root() appBinding: AppBinding): Promise<User> {
|
|
84
|
-
return await getRepository(User).
|
|
85
|
+
return await getRepository(User).findOneBy({ id: appBinding.updaterId })
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
@FieldResolver(type => User)
|
|
88
89
|
async creator(@Root() appBinding: AppBinding): Promise<User> {
|
|
89
|
-
return await getRepository(User).
|
|
90
|
+
return await getRepository(User).findOneBy({ id: appBinding.creatorId })
|
|
90
91
|
}
|
|
91
92
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Arg, Ctx, Mutation, Resolver } from 'type-graphql'
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { getRepository } from '@things-factory/shell'
|
|
3
4
|
|
|
4
5
|
import { User, UserStatus } from '../user/user'
|
|
5
6
|
import { Appliance } from './appliance'
|
|
@@ -7,12 +8,13 @@ import { AppliancePatch, NewAppliance } from './appliance-types'
|
|
|
7
8
|
|
|
8
9
|
const crypto = require('crypto')
|
|
9
10
|
|
|
10
|
-
const debug = require('debug')('things-factory:auth-base:appliance')
|
|
11
|
-
|
|
12
11
|
@Resolver(Appliance)
|
|
13
12
|
export class ApplianceMutation {
|
|
14
13
|
@Mutation(returns => Appliance, { description: 'To create new appliance' })
|
|
15
|
-
async createAppliance(
|
|
14
|
+
async createAppliance(
|
|
15
|
+
@Arg('appliance') appliance: NewAppliance,
|
|
16
|
+
@Ctx() context: ResolverContext
|
|
17
|
+
): Promise<Appliance> {
|
|
16
18
|
return await getRepository(Appliance).save({
|
|
17
19
|
domain: context.state.domain,
|
|
18
20
|
creator: context.state.user,
|
|
@@ -22,7 +24,7 @@ export class ApplianceMutation {
|
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
@Mutation(returns => Boolean, { description: 'To delete appliance' })
|
|
25
|
-
async deleteAppliance(@Arg('id') id: string, @Ctx() context:
|
|
27
|
+
async deleteAppliance(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Boolean> {
|
|
26
28
|
const { domain } = context.state
|
|
27
29
|
// TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
|
|
28
30
|
// TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.
|
|
@@ -31,16 +33,16 @@ export class ApplianceMutation {
|
|
|
31
33
|
userType: 'appliance'
|
|
32
34
|
})
|
|
33
35
|
|
|
34
|
-
await getRepository(Appliance).delete({ domain, id })
|
|
36
|
+
await getRepository(Appliance).delete({ domain: { id: domain.id }, id })
|
|
35
37
|
|
|
36
38
|
return true
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
@Mutation(returns => Appliance)
|
|
40
|
-
async generateApplianceSecret(@Arg('id') id: string, @Ctx() context:
|
|
42
|
+
async generateApplianceSecret(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Appliance> {
|
|
41
43
|
const { domain, user } = context.state
|
|
42
44
|
|
|
43
|
-
const appliance: Appliance = await getRepository(Appliance).
|
|
45
|
+
const appliance: Appliance = await getRepository(Appliance).findOneBy({ domain: { id: domain.id }, id })
|
|
44
46
|
|
|
45
47
|
const appuserEmail = `${crypto.randomUUID()}@${domain?.subdomain}`
|
|
46
48
|
let appuser: User = await getRepository(User).findOne({
|
|
@@ -69,10 +71,7 @@ export class ApplianceMutation {
|
|
|
69
71
|
context.throw(401, 'appliance is not allowed for this domain')
|
|
70
72
|
}
|
|
71
73
|
|
|
72
|
-
debug('appiance user', appuser)
|
|
73
|
-
|
|
74
74
|
appuser.password = Appliance.generateAccessToken(domain, appuser, appliance)
|
|
75
|
-
debug('access token', appuser.password)
|
|
76
75
|
|
|
77
76
|
await getRepository(User).save(appuser)
|
|
78
77
|
|
|
@@ -87,11 +86,13 @@ export class ApplianceMutation {
|
|
|
87
86
|
async updateAppliance(
|
|
88
87
|
@Arg('id') id: string,
|
|
89
88
|
@Arg('patch') patch: AppliancePatch,
|
|
90
|
-
@Ctx() context:
|
|
89
|
+
@Ctx() context: ResolverContext
|
|
91
90
|
): Promise<Appliance> {
|
|
91
|
+
const { domain } = context.state
|
|
92
|
+
|
|
92
93
|
const applianceRepository = getRepository(Appliance)
|
|
93
94
|
const userRepository = getRepository(User)
|
|
94
|
-
const appliance = await applianceRepository.findOne({ where: { domain:
|
|
95
|
+
const appliance = await applianceRepository.findOne({ where: { domain: { id: domain.id }, id } })
|
|
95
96
|
const user = await userRepository.findOne({ where: { reference: id, userType: 'appliance' } })
|
|
96
97
|
|
|
97
98
|
userRepository.save({
|