@things-factory/auth-base 9.0.0-beta.0 → 9.0.0-beta.12
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 +45 -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 -4
- package/dist-client/index.js +4 -4
- package/dist-client/index.js.map +1 -1
- package/dist-client/profiled.js +1 -1
- package/dist-client/profiled.js.map +1 -1
- package/dist-client/reducers/auth.js +1 -1
- package/dist-client/reducers/auth.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/auth.d.ts +5 -5
- package/dist-server/controllers/auth.js +5 -5
- package/dist-server/controllers/auth.js.map +1 -1
- package/dist-server/controllers/change-pwd.js +19 -19
- package/dist-server/controllers/change-pwd.js.map +1 -1
- package/dist-server/controllers/checkin.js +4 -4
- package/dist-server/controllers/checkin.js.map +1 -1
- package/dist-server/controllers/delete-user.js +9 -9
- package/dist-server/controllers/delete-user.js.map +1 -1
- package/dist-server/controllers/invitation.js +19 -19
- package/dist-server/controllers/invitation.js.map +1 -1
- package/dist-server/controllers/profile.d.ts +5 -5
- package/dist-server/controllers/profile.js +10 -10
- package/dist-server/controllers/profile.js.map +1 -1
- package/dist-server/controllers/reset-password.js +24 -24
- package/dist-server/controllers/reset-password.js.map +1 -1
- package/dist-server/controllers/signin.d.ts +1 -1
- package/dist-server/controllers/signin.js +24 -24
- package/dist-server/controllers/signin.js.map +1 -1
- package/dist-server/controllers/signup.d.ts +1 -1
- package/dist-server/controllers/signup.js +13 -13
- package/dist-server/controllers/signup.js.map +1 -1
- package/dist-server/controllers/unlock-user.js +17 -17
- package/dist-server/controllers/unlock-user.js.map +1 -1
- package/dist-server/controllers/utils/password-rule.js +4 -4
- package/dist-server/controllers/utils/password-rule.js.map +1 -1
- package/dist-server/controllers/utils/save-invitation-token.d.ts +1 -1
- package/dist-server/controllers/utils/save-invitation-token.js +2 -2
- package/dist-server/controllers/utils/save-invitation-token.js.map +1 -1
- package/dist-server/controllers/utils/save-verification-token.d.ts +1 -1
- package/dist-server/controllers/utils/save-verification-token.js +3 -3
- package/dist-server/controllers/utils/save-verification-token.js.map +1 -1
- package/dist-server/controllers/verification.js +23 -23
- package/dist-server/controllers/verification.js.map +1 -1
- package/dist-server/errors/auth-error.js +1 -1
- package/dist-server/errors/auth-error.js.map +1 -1
- package/dist-server/errors/index.d.ts +2 -2
- package/dist-server/errors/index.js +2 -2
- package/dist-server/errors/index.js.map +1 -1
- package/dist-server/errors/user-domain-not-match-error.d.ts +1 -1
- package/dist-server/errors/user-domain-not-match-error.js +8 -8
- package/dist-server/errors/user-domain-not-match-error.js.map +1 -1
- package/dist-server/index.d.ts +16 -16
- package/dist-server/index.js +18 -18
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/authenticate-401-middleware.js +11 -11
- package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
- package/dist-server/middlewares/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 +18 -18
- 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 -6
- 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 +16 -13
- 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 +10 -10
- package/dist-server/router/auth-checkin-router.js.map +1 -1
- package/dist-server/router/auth-private-process-router.js +15 -15
- package/dist-server/router/auth-private-process-router.js.map +1 -1
- package/dist-server/router/auth-public-process-router.js +30 -30
- package/dist-server/router/auth-public-process-router.js.map +1 -1
- package/dist-server/router/auth-signin-router.js +12 -6
- 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 +9 -9
- package/dist-server/router/webauthn-router.js.map +1 -1
- package/dist-server/routes.js +19 -19
- 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 +21 -21
- 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 +1 -1
- package/dist-server/service/appliance/appliance.js +8 -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/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 +25 -25
- package/dist-server/service/index.js +70 -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 +4 -4
- package/dist-server/service/role/role-query.js +29 -29
- package/dist-server/service/role/role-query.js.map +1 -1
- package/dist-server/service/role/role-types.d.ts +1 -1
- package/dist-server/service/role/role-types.js +2 -2
- package/dist-server/service/role/role-types.js.map +1 -1
- package/dist-server/service/role/role.d.ts +2 -2
- package/dist-server/service/role/role.js +12 -12
- package/dist-server/service/role/role.js.map +1 -1
- package/dist-server/service/user/domain-query.d.ts +1 -1
- package/dist-server/service/user/domain-query.js +3 -3
- package/dist-server/service/user/domain-query.js.map +1 -1
- package/dist-server/service/user/index.d.ts +4 -4
- package/dist-server/service/user/index.js +6 -6
- package/dist-server/service/user/index.js.map +1 -1
- package/dist-server/service/user/user-mutation.d.ts +3 -3
- package/dist-server/service/user/user-mutation.js +42 -42
- package/dist-server/service/user/user-mutation.js.map +1 -1
- package/dist-server/service/user/user-query.d.ts +3 -3
- package/dist-server/service/user/user-query.js +21 -21
- package/dist-server/service/user/user-query.js.map +1 -1
- package/dist-server/service/user/user-types.d.ts +1 -1
- package/dist-server/service/user/user-types.js +2 -2
- package/dist-server/service/user/user-types.js.map +1 -1
- package/dist-server/service/user/user.d.ts +3 -3
- package/dist-server/service/user/user.js +40 -40
- package/dist-server/service/user/user.js.map +1 -1
- package/dist-server/service/users-auth-providers/index.d.ts +1 -1
- package/dist-server/service/users-auth-providers/index.js +2 -2
- package/dist-server/service/users-auth-providers/index.js.map +1 -1
- package/dist-server/service/users-auth-providers/users-auth-providers.d.ts +2 -2
- package/dist-server/service/users-auth-providers/users-auth-providers.js +8 -8
- package/dist-server/service/users-auth-providers/users-auth-providers.js.map +1 -1
- package/dist-server/service/verification-token/index.d.ts +1 -1
- package/dist-server/service/verification-token/index.js +2 -2
- package/dist-server/service/verification-token/index.js.map +1 -1
- package/dist-server/service/web-auth-credential/index.d.ts +1 -1
- package/dist-server/service/web-auth-credential/index.js +2 -2
- package/dist-server/service/web-auth-credential/index.js.map +1 -1
- package/dist-server/service/web-auth-credential/web-auth-credential.d.ts +1 -1
- package/dist-server/service/web-auth-credential/web-auth-credential.js +10 -10
- package/dist-server/service/web-auth-credential/web-auth-credential.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/types.d.ts +1 -1
- package/dist-server/types.js.map +1 -1
- package/dist-server/utils/access-token-cookie.js +2 -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/check-user-has-role.d.ts +1 -1
- package/dist-server/utils/check-user-has-role.js +2 -2
- package/dist-server/utils/check-user-has-role.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 +1 -1
- package/dist-server/utils/get-user-domains.js +4 -4
- 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 +9 -8
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth-provider-query.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider-query.ts"],"names":[],"mappings":";;;;AAAA,+CAA8F;AAC9F,iDAAuG;AACvG,
|
1
|
+
{"version":3,"file":"auth-provider-query.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '../user/user.js'\nimport { AuthProvider, AuthProviderTypeList } from './auth-provider.js'\nimport { AuthProviderList } from './auth-provider-type.js'\n\n@Resolver(AuthProvider)\nexport class AuthProviderQuery {\n @Query(returns => AuthProviderTypeList!, { nullable: true, description: 'To fetch a AuthProvider' })\n authProviderTypes(@Ctx() context: ResolverContext): AuthProviderTypeList {\n const { domain } = context.state\n\n return AuthProvider.getAuthProviderTypes()\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => AuthProvider!, { nullable: true, description: 'To fetch a AuthProvider' })\n async authProvider(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<AuthProvider> {\n const { domain } = context.state\n\n return await getRepository(AuthProvider).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => AuthProviderList, { description: 'To fetch multiple AuthProviders' })\n async authProviders(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<AuthProviderList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(AuthProvider),\n searchables: ['type']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => String)\n clientSecret(@Root() authProvider: AuthProvider): string {\n const clientSecret = authProvider.clientSecret\n\n if (!clientSecret || clientSecret.length <= 2) {\n return clientSecret // 입력 문자열의 길이가 2 이하인 경우 그대로 반환\n }\n const firstChar = clientSecret.charAt(0)\n const lastChar = clientSecret.charAt(clientSecret.length - 1)\n const maskedPart = '*'.repeat(clientSecret.length - 2)\n\n return firstChar + maskedPart + lastChar\n }\n\n @FieldResolver(type => String)\n privateKey(@Root() authProvider: AuthProvider): string {\n const privateKey = authProvider.privateKey\n\n if (!privateKey || privateKey.length <= 2) {\n return privateKey // 입력 문자열의 길이가 2 이하인 경우 그대로 반환\n }\n const firstChar = privateKey.charAt(0)\n const lastChar = privateKey.charAt(privateKey.length - 1)\n const maskedPart = '*'.repeat(privateKey.length - 2)\n\n return firstChar + maskedPart + lastChar\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() authProvider: AuthProvider): Promise<Domain> {\n return authProvider.domainId && (await getRepository(Domain).findOneBy({ id: authProvider.domainId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() authProvider: AuthProvider): Promise<User> {\n return authProvider.updaterId && (await getRepository(User).findOneBy({ id: authProvider.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() authProvider: AuthProvider): Promise<User> {\n return authProvider.creatorId && (await getRepository(User).findOneBy({ id: authProvider.creatorId }))\n }\n}\n"]}
|
@@ -4,7 +4,7 @@ exports.AuthProviderList = exports.AuthProviderPatch = exports.NewAuthProvider =
|
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
6
6
|
const shell_1 = require("@things-factory/shell");
|
7
|
-
const
|
7
|
+
const auth_provider_js_1 = require("./auth-provider.js");
|
8
8
|
let NewAuthProvider = class NewAuthProvider {
|
9
9
|
};
|
10
10
|
exports.NewAuthProvider = NewAuthProvider;
|
@@ -85,7 +85,7 @@ let AuthProviderList = class AuthProviderList {
|
|
85
85
|
};
|
86
86
|
exports.AuthProviderList = AuthProviderList;
|
87
87
|
tslib_1.__decorate([
|
88
|
-
(0, type_graphql_1.Field)(type => [
|
88
|
+
(0, type_graphql_1.Field)(type => [auth_provider_js_1.AuthProvider]),
|
89
89
|
tslib_1.__metadata("design:type", Array)
|
90
90
|
], AuthProviderList.prototype, "items", void 0);
|
91
91
|
tslib_1.__decorate([
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth-provider-type.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AAEpE,iDAAoD;AACpD,
|
1
|
+
{"version":3,"file":"auth-provider-type.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AAEpE,iDAAoD;AACpD,yDAAiD;AAG1C,IAAM,eAAe,GAArB,MAAM,eAAe;CAqB3B,CAAA;AArBY,0CAAe;AAE1B;IADC,IAAA,oBAAK,GAAE;;6CACI;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACL;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACjB;0BApBpB,eAAe;IAD3B,IAAA,wBAAS,GAAE;GACC,eAAe,CAqB3B;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CA2B7B,CAAA;AA3BY,8CAAiB;AAE5B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC3B;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACL;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACjB;AAG/B;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACX;4BA1BJ,iBAAiB;IAD7B,IAAA,wBAAS,GAAE;GACC,iBAAiB,CA2B7B;AAGM,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAM5B,CAAA;AANY,4CAAgB;AAE3B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,+BAAY,CAAC,CAAC;;+CACT;AAGrB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;+CACN;2BALF,gBAAgB;IAD5B,IAAA,yBAAU,GAAE;GACA,gBAAgB,CAM5B","sourcesContent":["import { ObjectType, Field, InputType, Int, ID } from 'type-graphql'\n\nimport { ScalarObject } from '@things-factory/shell'\nimport { AuthProvider } from './auth-provider.js'\n\n@InputType()\nexport class NewAuthProvider {\n @Field()\n type: string\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field({ nullable: true })\n tenantId?: string\n\n @Field({ nullable: true })\n clientId?: string\n\n @Field({ nullable: true })\n clientSecret?: string\n\n @Field({ nullable: true })\n privateKey?: string\n\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n}\n\n@InputType()\nexport class AuthProviderPatch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n @Field({ nullable: true })\n type?: string\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field({ nullable: true })\n tenantId?: string\n\n @Field({ nullable: true })\n clientId?: string\n\n @Field({ nullable: true })\n clientSecret?: string\n\n @Field({ nullable: true })\n privateKey?: string\n\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n\n @Field({ nullable: true })\n cuFlag?: string\n}\n\n@ObjectType()\nexport class AuthProviderList {\n @Field(type => [AuthProvider])\n items: AuthProvider[]\n\n @Field(type => Int)\n total: number\n}\n"]}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Domain } from '@things-factory/shell';
|
2
|
-
import { User } from '../user/user';
|
3
|
-
import { UsersAuthProviders } from '../users-auth-providers/users-auth-providers';
|
4
|
-
import { AuthProviderParameterSpec } from './auth-provider-parameter-spec';
|
2
|
+
import { User } from '../user/user.js';
|
3
|
+
import { UsersAuthProviders } from '../users-auth-providers/users-auth-providers.js';
|
4
|
+
import { AuthProviderParameterSpec } from './auth-provider-parameter-spec.js';
|
5
5
|
export type AuthProviderImpl = {
|
6
6
|
type: string;
|
7
7
|
description: string;
|
@@ -6,9 +6,9 @@ const tslib_1 = require("tslib");
|
|
6
6
|
const typeorm_1 = require("typeorm");
|
7
7
|
const type_graphql_1 = require("type-graphql");
|
8
8
|
const shell_1 = require("@things-factory/shell");
|
9
|
-
const
|
10
|
-
const
|
11
|
-
const
|
9
|
+
const user_js_1 = require("../user/user.js");
|
10
|
+
const users_auth_providers_js_1 = require("../users-auth-providers/users-auth-providers.js");
|
11
|
+
const auth_provider_parameter_spec_js_1 = require("./auth-provider-parameter-spec.js");
|
12
12
|
let AuthProviderType = class AuthProviderType {
|
13
13
|
};
|
14
14
|
exports.AuthProviderType = AuthProviderType;
|
@@ -25,7 +25,7 @@ tslib_1.__decorate([
|
|
25
25
|
tslib_1.__metadata("design:type", String)
|
26
26
|
], AuthProviderType.prototype, "help", void 0);
|
27
27
|
tslib_1.__decorate([
|
28
|
-
(0, type_graphql_1.Field)(type => [
|
28
|
+
(0, type_graphql_1.Field)(type => [auth_provider_parameter_spec_js_1.AuthProviderParameterSpec], { nullable: true }),
|
29
29
|
tslib_1.__metadata("design:type", Array)
|
30
30
|
], AuthProviderType.prototype, "parameterSpec", void 0);
|
31
31
|
exports.AuthProviderType = AuthProviderType = tslib_1.__decorate([
|
@@ -123,8 +123,8 @@ tslib_1.__decorate([
|
|
123
123
|
tslib_1.__metadata("design:type", Object)
|
124
124
|
], AuthProvider.prototype, "params", void 0);
|
125
125
|
tslib_1.__decorate([
|
126
|
-
(0, typeorm_1.OneToMany)(() =>
|
127
|
-
(0, type_graphql_1.Field)(type => [
|
126
|
+
(0, typeorm_1.OneToMany)(() => users_auth_providers_js_1.UsersAuthProviders, usersAuthProviders => usersAuthProviders.authProvider),
|
127
|
+
(0, type_graphql_1.Field)(type => [users_auth_providers_js_1.UsersAuthProviders], { nullable: true }),
|
128
128
|
tslib_1.__metadata("design:type", Array)
|
129
129
|
], AuthProvider.prototype, "usersAuthProviders", void 0);
|
130
130
|
tslib_1.__decorate([
|
@@ -138,18 +138,18 @@ tslib_1.__decorate([
|
|
138
138
|
tslib_1.__metadata("design:type", Date)
|
139
139
|
], AuthProvider.prototype, "updatedAt", void 0);
|
140
140
|
tslib_1.__decorate([
|
141
|
-
(0, typeorm_1.ManyToOne)(type =>
|
142
|
-
(0, type_graphql_1.Field)(type =>
|
143
|
-
tslib_1.__metadata("design:type",
|
141
|
+
(0, typeorm_1.ManyToOne)(type => user_js_1.User, { nullable: true }),
|
142
|
+
(0, type_graphql_1.Field)(type => user_js_1.User, { nullable: true }),
|
143
|
+
tslib_1.__metadata("design:type", user_js_1.User)
|
144
144
|
], AuthProvider.prototype, "creator", void 0);
|
145
145
|
tslib_1.__decorate([
|
146
146
|
(0, typeorm_1.RelationId)((authProvider) => authProvider.creator),
|
147
147
|
tslib_1.__metadata("design:type", String)
|
148
148
|
], AuthProvider.prototype, "creatorId", void 0);
|
149
149
|
tslib_1.__decorate([
|
150
|
-
(0, typeorm_1.ManyToOne)(type =>
|
151
|
-
(0, type_graphql_1.Field)(type =>
|
152
|
-
tslib_1.__metadata("design:type",
|
150
|
+
(0, typeorm_1.ManyToOne)(type => user_js_1.User, { nullable: true }),
|
151
|
+
(0, type_graphql_1.Field)(type => user_js_1.User, { nullable: true }),
|
152
|
+
tslib_1.__metadata("design:type", user_js_1.User)
|
153
153
|
], AuthProvider.prototype, "updater", void 0);
|
154
154
|
tslib_1.__decorate([
|
155
155
|
(0, typeorm_1.RelationId)((authProvider) => authProvider.updater),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider.ts"],"names":[],"mappings":";;;;;AAAA,qCAUgB;AAChB,+CAAoE;AAEpE,iDAAgF;AAChF,
|
1
|
+
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { Directive, ObjectType, Field, Int, ID } from 'type-graphql'\n\nimport { Domain, ScalarObject, encryptTransformer } from '@things-factory/shell'\nimport { User } from '../user/user.js'\nimport { UsersAuthProviders } from '../users-auth-providers/users-auth-providers.js'\nimport { AuthProviderParameterSpec } from './auth-provider-parameter-spec.js'\n\nexport type AuthProviderImpl = {\n type: string\n description: string\n help: string\n parameterSpec: AuthProviderParameterSpec\n synchronizeUsers: (authProvider: AuthProvider, context: ResolverContext) => Promise<boolean>\n}\n\nexport type AuthProviderRegistry = {\n [type: string]: AuthProviderImpl\n}\n\n@ObjectType()\nexport class AuthProviderType {\n @Field()\n type: string\n\n @Field({ nullable: true })\n description: string\n\n @Field({ nullable: true })\n help: string\n\n @Field(type => [AuthProviderParameterSpec], { nullable: true })\n parameterSpec: AuthProviderParameterSpec[]\n}\n\n@ObjectType()\nexport class AuthProviderTypeList {\n @Field(type => [AuthProviderType])\n items: AuthProviderType[]\n\n @Field(type => Int)\n total: number\n}\n\n@Entity()\n@Index('ix_auth_provider_0', (authProvider: AuthProvider) => [authProvider.domain, authProvider.type], {\n unique: true\n})\n@ObjectType({ description: 'Entity for AuthProvider' })\nexport class AuthProvider {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain)\n domain?: Domain\n\n @RelationId((authProvider: AuthProvider) => authProvider.domain)\n domainId?: string\n\n @Column()\n @Field({ nullable: true })\n type?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n active?: boolean\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n @Field({ nullable: true })\n tenantId?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n @Field({ nullable: true })\n clientId?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true, transformer: encryptTransformer })\n @Field({ nullable: true })\n clientSecret?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true, transformer: encryptTransformer })\n @Field({ nullable: true })\n privateKey?: string\n\n @Column('simple-json', { nullable: true })\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n\n @OneToMany(() => UsersAuthProviders, usersAuthProviders => usersAuthProviders.authProvider)\n @Field(type => [UsersAuthProviders], { nullable: true })\n usersAuthProviders?: UsersAuthProviders[]\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((authProvider: AuthProvider) => authProvider.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((authProvider: AuthProvider) => authProvider.updater)\n updaterId?: string\n\n static registry = {}\n\n public static register(type: string, provider: AuthProviderImpl) {\n AuthProvider.registry[type] = provider\n }\n\n public static getAuthProviderTypes(): AuthProviderTypeList {\n const items = Object.values(AuthProvider.registry).map(({ type, description, help, parameterSpec }) => {\n return {\n type,\n description,\n help,\n parameterSpec\n }\n })\n\n return {\n items,\n total: items.length\n }\n }\n\n public static getAuthProviderImpl(type: string) {\n return AuthProvider.registry[type]\n }\n}\n"]}
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { AuthProvider } from './auth-provider';
|
2
|
-
import { AuthProviderQuery } from './auth-provider-query';
|
3
|
-
import { AuthProviderMutation } from './auth-provider-mutation';
|
1
|
+
import { AuthProvider } from './auth-provider.js';
|
2
|
+
import { AuthProviderQuery } from './auth-provider-query.js';
|
3
|
+
import { AuthProviderMutation } from './auth-provider-mutation.js';
|
4
4
|
export declare const entities: (typeof AuthProvider)[];
|
5
5
|
export declare const resolvers: (typeof AuthProviderQuery | typeof AuthProviderMutation)[];
|
6
6
|
export declare const subscribers: any[];
|
@@ -1,10 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.subscribers = exports.resolvers = exports.entities = void 0;
|
4
|
-
const
|
5
|
-
const
|
6
|
-
const
|
7
|
-
exports.entities = [
|
8
|
-
exports.resolvers = [
|
4
|
+
const auth_provider_js_1 = require("./auth-provider.js");
|
5
|
+
const auth_provider_query_js_1 = require("./auth-provider-query.js");
|
6
|
+
const auth_provider_mutation_js_1 = require("./auth-provider-mutation.js");
|
7
|
+
exports.entities = [auth_provider_js_1.AuthProvider];
|
8
|
+
exports.resolvers = [auth_provider_query_js_1.AuthProviderQuery, auth_provider_mutation_js_1.AuthProviderMutation];
|
9
9
|
exports.subscribers = [];
|
10
10
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/auth-provider/index.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/auth-provider/index.ts"],"names":[],"mappings":";;;AAAA,yDAAiD;AACjD,qEAA4D;AAC5D,2EAAkE;AAErD,QAAA,QAAQ,GAAG,CAAC,+BAAY,CAAC,CAAA;AACzB,QAAA,SAAS,GAAG,CAAC,0CAAiB,EAAE,gDAAoB,CAAC,CAAA;AACrD,QAAA,WAAW,GAAG,EAAE,CAAA","sourcesContent":["import { AuthProvider } from './auth-provider.js'\nimport { AuthProviderQuery } from './auth-provider-query.js'\nimport { AuthProviderMutation } from './auth-provider-mutation.js'\n\nexport const entities = [AuthProvider]\nexport const resolvers = [AuthProviderQuery, AuthProviderMutation]\nexport const subscribers = []\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Domain } from '@things-factory/shell';
|
2
|
-
import { DomainGeneratorInput, DomainUserRoleInput } from './domain-generator-types';
|
2
|
+
import { DomainGeneratorInput, DomainUserRoleInput } from './domain-generator-types.js';
|
3
3
|
export declare class DomainGeneratorMutation {
|
4
4
|
domainRegister(domainInput: DomainGeneratorInput, context: ResolverContext): Promise<Domain>;
|
5
5
|
domainUserRoleRegister(newDomainInfo: DomainUserRoleInput, context: ResolverContext): Promise<Domain>;
|
@@ -6,10 +6,10 @@ const type_graphql_1 = require("type-graphql");
|
|
6
6
|
const typeorm_1 = require("typeorm");
|
7
7
|
const shell_1 = require("@things-factory/shell");
|
8
8
|
const utils_1 = require("@things-factory/utils");
|
9
|
-
const
|
10
|
-
const
|
11
|
-
const
|
12
|
-
const
|
9
|
+
const privilege_js_1 = require("../privilege/privilege.js");
|
10
|
+
const role_js_1 = require("../role/role.js");
|
11
|
+
const user_js_1 = require("../user/user.js");
|
12
|
+
const domain_generator_types_js_1 = require("./domain-generator-types.js");
|
13
13
|
let DomainGeneratorMutation = class DomainGeneratorMutation {
|
14
14
|
async domainRegister(domainInput, context) {
|
15
15
|
const { user } = context.state;
|
@@ -28,9 +28,9 @@ let DomainGeneratorMutation = class DomainGeneratorMutation {
|
|
28
28
|
const { domain, users, roles } = newDomainInfo;
|
29
29
|
const domainOwner = users.find(user => user.owner === true);
|
30
30
|
const domainRepository = tx.getRepository(shell_1.Domain);
|
31
|
-
const roleRepository = tx.getRepository(
|
32
|
-
const userRepository = tx.getRepository(
|
33
|
-
const privilegeRepository = tx.getRepository(
|
31
|
+
const roleRepository = tx.getRepository(role_js_1.Role);
|
32
|
+
const userRepository = tx.getRepository(user_js_1.User);
|
33
|
+
const privilegeRepository = tx.getRepository(privilege_js_1.Privilege);
|
34
34
|
const subdomain = (0, utils_1.slugger)(domain.name);
|
35
35
|
const newDomain = await domainRepository.save({
|
36
36
|
name: domain.name,
|
@@ -56,8 +56,8 @@ let DomainGeneratorMutation = class DomainGeneratorMutation {
|
|
56
56
|
// create user
|
57
57
|
await Promise.all(createUsers.map(async (user) => {
|
58
58
|
user.domains = [newDomain];
|
59
|
-
user.password =
|
60
|
-
user.salt =
|
59
|
+
user.password = user_js_1.User.encode(user.password, user.salt);
|
60
|
+
user.salt = user_js_1.User.generateSalt();
|
61
61
|
user.passwordUpdatedAt = new Date();
|
62
62
|
user.userType = 'user';
|
63
63
|
user.roles = filterUserRoles(user.roles, newRoles);
|
@@ -87,7 +87,7 @@ tslib_1.__decorate([
|
|
87
87
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('domainInput')),
|
88
88
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
89
89
|
tslib_1.__metadata("design:type", Function),
|
90
|
-
tslib_1.__metadata("design:paramtypes", [
|
90
|
+
tslib_1.__metadata("design:paramtypes", [domain_generator_types_js_1.DomainGeneratorInput, Object]),
|
91
91
|
tslib_1.__metadata("design:returntype", Promise)
|
92
92
|
], DomainGeneratorMutation.prototype, "domainRegister", null);
|
93
93
|
tslib_1.__decorate([
|
@@ -96,7 +96,7 @@ tslib_1.__decorate([
|
|
96
96
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('newDomainInfo')),
|
97
97
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
98
98
|
tslib_1.__metadata("design:type", Function),
|
99
|
-
tslib_1.__metadata("design:paramtypes", [
|
99
|
+
tslib_1.__metadata("design:paramtypes", [domain_generator_types_js_1.DomainUserRoleInput, Object]),
|
100
100
|
tslib_1.__metadata("design:returntype", Promise)
|
101
101
|
], DomainGeneratorMutation.prototype, "domainUserRoleRegister", null);
|
102
102
|
exports.DomainGeneratorMutation = DomainGeneratorMutation = tslib_1.__decorate([
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"domain-generator-mutation.js","sourceRoot":"","sources":["../../../server/service/domain-generator/domain-generator-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAAsE;AACtE,qCAA+C;AAE/C,iDAA6D;AAC7D,iDAA+C;AAE/C,
|
1
|
+
{"version":3,"file":"domain-generator-mutation.js","sourceRoot":"","sources":["../../../server/service/domain-generator/domain-generator-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { ILike, In, Repository } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { slugger } from '@things-factory/utils'\n\nimport { Privilege } from '../privilege/privilege.js'\nimport { Role } from '../role/role.js'\nimport { User } from '../user/user.js'\nimport { DomainGeneratorInput, DomainUserRoleInput } from './domain-generator-types.js'\n\n@Resolver()\nexport class DomainGeneratorMutation {\n @Directive('@privilege(superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Domain)\n async domainRegister(\n @Arg('domainInput') domainInput: DomainGeneratorInput,\n @Ctx() context: ResolverContext\n ): Promise<Domain> {\n const { user } = context.state\n const { name, description } = domainInput\n const domainRepo: Repository<Domain> = getRepository(Domain)\n const subdomain: string = slugger(name)\n\n const domain: Domain = await domainRepo.findOneBy({ subdomain })\n if (domain) {\n throw new Error('domain is duplicated')\n }\n\n return await domainRepo.save({ name, description, subdomain, owner: user.id })\n }\n\n @Directive('@transaction')\n @Mutation(returns => Domain)\n async domainUserRoleRegister(\n @Arg('newDomainInfo') newDomainInfo: DomainUserRoleInput,\n @Ctx() context: ResolverContext\n ): Promise<Domain> {\n const { tx } = context.state\n // 도메인 생성\n const { domain, users, roles } = newDomainInfo\n const domainOwner = users.find(user => user.owner === true)\n\n const domainRepository: Repository<Domain> = tx.getRepository(Domain)\n const roleRepository: Repository<Role> = tx.getRepository(Role)\n const userRepository: Repository<User> = tx.getRepository(User)\n const privilegeRepository: Repository<Privilege> = tx.getRepository(Privilege)\n\n const subdomain: string = slugger(domain.name)\n\n const newDomain = await domainRepository.save({\n name: domain.name,\n description: domain.description,\n subdomain\n })\n\n // 역할 생성\n const newRoles: Role[] = await Promise.all(\n roles.map(async (role: Role) => {\n if (role.privileges?.length) {\n const privilegeIds: string[] = role.privileges.map((p: Privilege) => p.id)\n role.privileges = await privilegeRepository.findBy({\n id: In(privilegeIds)\n })\n }\n\n role.domain = newDomain\n return await roleRepository.save(role)\n })\n )\n\n // 사용자 생성\n let inviteUsers = []\n let createUsers = []\n users.forEach(user => (user.isInvitee ? inviteUsers.push(user) : createUsers.push(user)))\n\n // create user\n await Promise.all(\n createUsers.map(async user => {\n user.domains = [newDomain]\n user.password = User.encode(user.password, user.salt)\n user.salt = User.generateSalt()\n user.passwordUpdatedAt = new Date()\n user.userType = 'user'\n user.roles = filterUserRoles(user.roles, newRoles)\n\n return await userRepository.save(user)\n })\n )\n\n // invite user\n await Promise.all(\n inviteUsers.map(async inviteUser => {\n const user: User = await userRepository.findOne({\n where: { email: inviteUser.email },\n relations: ['domains', 'roles']\n })\n\n user.domains = [...user.domains, newDomain]\n user.roles = [...user.roles, ...filterUserRoles(inviteUser.roles, newRoles)]\n\n return await userRepository.save(user)\n })\n )\n\n // domain owner\n const { id } = await userRepository.findOne({ where: { email: ILike(domainOwner.email) } })\n newDomain.owner = id\n return await domainRepository.save(newDomain)\n }\n}\n\nfunction filterUserRoles(userRoles: Role[], newRoles: Role[]): Role[] {\n const userRoleNames: string[] = userRoles.map((r: Role) => r.name)\n return newRoles.filter((r: Role) => userRoleNames.indexOf(r.name) >= 0)\n}\n"]}
|
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
|
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
6
6
|
const graphql_scalars_1 = require("graphql-scalars");
|
7
7
|
const shell_1 = require("@things-factory/shell");
|
8
|
-
const
|
8
|
+
const role_types_js_1 = require("../role/role-types.js");
|
9
9
|
let DomainGeneratorInput = class DomainGeneratorInput {
|
10
10
|
};
|
11
11
|
exports.DomainGeneratorInput = DomainGeneratorInput;
|
@@ -32,7 +32,7 @@ tslib_1.__decorate([
|
|
32
32
|
tslib_1.__metadata("design:type", Array)
|
33
33
|
], DomainUserRoleInput.prototype, "users", void 0);
|
34
34
|
tslib_1.__decorate([
|
35
|
-
(0, type_graphql_1.Field)(type => [
|
35
|
+
(0, type_graphql_1.Field)(type => [role_types_js_1.NewRole]),
|
36
36
|
tslib_1.__metadata("design:type", Array)
|
37
37
|
], DomainUserRoleInput.prototype, "roles", void 0);
|
38
38
|
exports.DomainUserRoleInput = DomainUserRoleInput = tslib_1.__decorate([
|
@@ -62,7 +62,7 @@ tslib_1.__decorate([
|
|
62
62
|
tslib_1.__metadata("design:type", Boolean)
|
63
63
|
], NewUserByDomainWizardInput.prototype, "owner", void 0);
|
64
64
|
tslib_1.__decorate([
|
65
|
-
(0, type_graphql_1.Field)(type => [
|
65
|
+
(0, type_graphql_1.Field)(type => [role_types_js_1.NewRole]),
|
66
66
|
tslib_1.__metadata("design:type", Array)
|
67
67
|
], NewUserByDomainWizardInput.prototype, "roles", void 0);
|
68
68
|
exports.NewUserByDomainWizardInput = NewUserByDomainWizardInput = tslib_1.__decorate([
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"domain-generator-types.js","sourceRoot":"","sources":["../../../server/service/domain-generator/domain-generator-types.ts"],"names":[],"mappings":";;;;AAAA,+CAA+C;AAC/C,qDAAqD;AACrD,iDAAmD;AACnD,
|
1
|
+
{"version":3,"file":"domain-generator-types.js","sourceRoot":"","sources":["../../../server/service/domain-generator/domain-generator-types.ts"],"names":[],"mappings":";;;;AAAA,+CAA+C;AAC/C,qDAAqD;AACrD,iDAAmD;AACnD,yDAA+C;AAGxC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAMhC,CAAA;AANY,oDAAoB;AAE/B;IADC,IAAA,oBAAK,GAAE;;kDACI;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACN;+BALT,oBAAoB;IADhC,IAAA,wBAAS,GAAE;GACC,oBAAoB,CAMhC;AAGM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAS/B,CAAA;AATY,kDAAmB;AAE9B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,mBAAW,CAAC;sCACnB,mBAAW;mDAAA;AAGnB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC;;kDACT;AAGnC;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,uBAAO,CAAC,CAAC;;kDACT;8BARL,mBAAmB;IAD/B,IAAA,wBAAS,GAAE;GACC,mBAAmB,CAS/B;AAGM,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;CAkBtC,CAAA;AAlBY,gEAA0B;AAErC;IADC,IAAA,oBAAK,GAAE;;wDACI;AAGZ;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,qCAAmB,CAAC;;yDACtB;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4DACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACf,OAAO;6DAAA;AAGlB;IADC,IAAA,oBAAK,GAAE;sCACD,OAAO;yDAAA;AAGd;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,uBAAO,CAAC,CAAC;;yDACT;qCAjBL,0BAA0B;IADtC,IAAA,wBAAS,GAAE;GACC,0BAA0B,CAkBtC","sourcesContent":["import { Field, InputType } from 'type-graphql'\nimport { GraphQLEmailAddress } from 'graphql-scalars'\nimport { DomainInput } from '@things-factory/shell'\nimport { NewRole } from '../role/role-types.js'\n\n@InputType()\nexport class DomainGeneratorInput {\n @Field()\n name: string\n\n @Field({ nullable: true })\n description?: string\n}\n\n@InputType()\nexport class DomainUserRoleInput {\n @Field(type => DomainInput)\n domain: DomainInput\n\n @Field(type => [NewUserByDomainWizardInput])\n users: NewUserByDomainWizardInput[]\n\n @Field(type => [NewRole])\n roles: NewRole[]\n}\n\n@InputType()\nexport class NewUserByDomainWizardInput {\n @Field()\n name: string\n\n @Field(type => GraphQLEmailAddress)\n email: string\n\n @Field({ nullable: true })\n password: string\n\n @Field({ nullable: true })\n isInvitee: Boolean\n\n @Field()\n owner: Boolean\n\n @Field(type => [NewRole])\n roles: NewRole[]\n}\n"]}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import { DomainGeneratorMutation } from './domain-generator-mutation';
|
1
|
+
import { DomainGeneratorMutation } from './domain-generator-mutation.js';
|
2
2
|
export declare const resolvers: (typeof DomainGeneratorMutation)[];
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.resolvers = void 0;
|
4
|
-
const
|
5
|
-
exports.resolvers = [
|
4
|
+
const domain_generator_mutation_js_1 = require("./domain-generator-mutation.js");
|
5
|
+
exports.resolvers = [domain_generator_mutation_js_1.DomainGeneratorMutation];
|
6
6
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/domain-generator/index.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/domain-generator/index.ts"],"names":[],"mappings":";;;AAAA,iFAAwE;AAE3D,QAAA,SAAS,GAAG,CAAC,sDAAuB,CAAC,CAAA","sourcesContent":["import { DomainGeneratorMutation } from './domain-generator-mutation.js'\n\nexport const resolvers = [DomainGeneratorMutation]\n"]}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { EntityManager } from 'typeorm';
|
2
2
|
import { Domain } from '@things-factory/shell';
|
3
|
-
import { Role } from '../role/role';
|
4
|
-
import { RolePatch } from '../role/role-types';
|
5
|
-
import { User } from '../user/user';
|
3
|
+
import { Role } from '../role/role.js';
|
4
|
+
import { RolePatch } from '../role/role-types.js';
|
5
|
+
import { User } from '../user/user.js';
|
6
6
|
export declare class GrantedRoleMutation {
|
7
7
|
grantRoles(customerId: string, roles: RolePatch[], context: ResolverContext): Promise<Boolean>;
|
8
8
|
}
|
@@ -8,17 +8,17 @@ const tslib_1 = require("tslib");
|
|
8
8
|
const type_graphql_1 = require("type-graphql");
|
9
9
|
const typeorm_1 = require("typeorm");
|
10
10
|
const shell_1 = require("@things-factory/shell");
|
11
|
-
const
|
12
|
-
const
|
13
|
-
const
|
14
|
-
const
|
15
|
-
const
|
11
|
+
const partner_js_1 = require("../partner/partner.js");
|
12
|
+
const role_js_1 = require("../role/role.js");
|
13
|
+
const role_types_js_1 = require("../role/role-types.js");
|
14
|
+
const user_js_1 = require("../user/user.js");
|
15
|
+
const granted_role_js_1 = require("./granted-role.js");
|
16
16
|
let GrantedRoleMutation = class GrantedRoleMutation {
|
17
17
|
async grantRoles(customerId, roles, context) {
|
18
18
|
const { tx, domain } = context.state;
|
19
19
|
// Check if current domain has partnership with passed `customer`
|
20
20
|
const customerDomain = await tx.getRepository(shell_1.Domain).findOneBy({ id: customerId });
|
21
|
-
const customer = await tx.getRepository(
|
21
|
+
const customer = await tx.getRepository(partner_js_1.Partner).findOne({
|
22
22
|
where: { domain: { id: domain.id }, partnerDomain: { id: customerDomain.id } }
|
23
23
|
});
|
24
24
|
if (!customer)
|
@@ -26,10 +26,10 @@ let GrantedRoleMutation = class GrantedRoleMutation {
|
|
26
26
|
// Remove existing granted roles
|
27
27
|
const grantedRoles = await getGrantedRolesToCustomer(domain, customerDomain, tx);
|
28
28
|
if (grantedRoles.length) {
|
29
|
-
await tx.getRepository(
|
29
|
+
await tx.getRepository(granted_role_js_1.GrantedRole).delete(grantedRoles.map((gr) => gr.id));
|
30
30
|
}
|
31
31
|
// Insert newly granted roles
|
32
|
-
await tx.getRepository(
|
32
|
+
await tx.getRepository(role_js_1.Role).findBy({
|
33
33
|
id: (0, typeorm_1.In)(roles.map((role) => role.id))
|
34
34
|
});
|
35
35
|
const newlyGrantedRoles = roles.map((role) => {
|
@@ -38,11 +38,11 @@ let GrantedRoleMutation = class GrantedRoleMutation {
|
|
38
38
|
role
|
39
39
|
};
|
40
40
|
});
|
41
|
-
await tx.getRepository(
|
41
|
+
await tx.getRepository(granted_role_js_1.GrantedRole).save(newlyGrantedRoles);
|
42
42
|
// If there's someone having role which will be removed (refuse roles)
|
43
43
|
// user roles should be removed as well
|
44
44
|
const grantedRoleIds = roles.map((role) => role.id);
|
45
|
-
const nonGrantedRoles = await tx.getRepository(
|
45
|
+
const nonGrantedRoles = await tx.getRepository(role_js_1.Role).find({
|
46
46
|
where: { domain: { id: domain.id }, id: (0, typeorm_1.Not)((0, typeorm_1.In)(grantedRoleIds)) }
|
47
47
|
});
|
48
48
|
if (nonGrantedRoles === null || nonGrantedRoles === void 0 ? void 0 : nonGrantedRoles.length) {
|
@@ -64,7 +64,7 @@ let GrantedRoleMutation = class GrantedRoleMutation {
|
|
64
64
|
return customerUser;
|
65
65
|
}
|
66
66
|
});
|
67
|
-
await tx.getRepository(
|
67
|
+
await tx.getRepository(user_js_1.User).save(havingRefusedRoleCustomers);
|
68
68
|
}
|
69
69
|
return true;
|
70
70
|
}
|
@@ -75,14 +75,14 @@ tslib_1.__decorate([
|
|
75
75
|
(0, type_graphql_1.Directive)('@transaction'),
|
76
76
|
(0, type_graphql_1.Mutation)(returns => Boolean),
|
77
77
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('customerId')),
|
78
|
-
tslib_1.__param(1, (0, type_graphql_1.Arg)('roles', type => [
|
78
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('roles', type => [role_types_js_1.RolePatch])),
|
79
79
|
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
80
80
|
tslib_1.__metadata("design:type", Function),
|
81
81
|
tslib_1.__metadata("design:paramtypes", [String, Array, Object]),
|
82
82
|
tslib_1.__metadata("design:returntype", Promise)
|
83
83
|
], GrantedRoleMutation.prototype, "grantRoles", null);
|
84
84
|
exports.GrantedRoleMutation = GrantedRoleMutation = tslib_1.__decorate([
|
85
|
-
(0, type_graphql_1.Resolver)(
|
85
|
+
(0, type_graphql_1.Resolver)(granted_role_js_1.GrantedRole)
|
86
86
|
], GrantedRoleMutation);
|
87
87
|
async function getGrantedCustomerUsers(domain, customerDomain, trx) {
|
88
88
|
const grantedRoles = await getGrantedRolesToCustomer(domain, customerDomain, trx);
|
@@ -92,7 +92,7 @@ async function getGrantedCustomerUsers(domain, customerDomain, trx) {
|
|
92
92
|
async function getCustomerUsersByRoles(customerDomain, roles, trx) {
|
93
93
|
if (!roles.length)
|
94
94
|
return [];
|
95
|
-
const userRepo = (trx === null || trx === void 0 ? void 0 : trx.getRepository(
|
95
|
+
const userRepo = (trx === null || trx === void 0 ? void 0 : trx.getRepository(user_js_1.User)) || (0, shell_1.getRepository)(user_js_1.User);
|
96
96
|
const customerUsers = await userRepo
|
97
97
|
.createQueryBuilder('USER')
|
98
98
|
.select('USER.id')
|
@@ -114,7 +114,7 @@ async function getCustomerUsersByRoles(customerDomain, roles, trx) {
|
|
114
114
|
});
|
115
115
|
}
|
116
116
|
async function getGrantedRolesToCustomer(domain, customerDomain, trx) {
|
117
|
-
const grantedRoleRepo = (trx === null || trx === void 0 ? void 0 : trx.getRepository(
|
117
|
+
const grantedRoleRepo = (trx === null || trx === void 0 ? void 0 : trx.getRepository(granted_role_js_1.GrantedRole)) || (0, shell_1.getRepository)(granted_role_js_1.GrantedRole);
|
118
118
|
const grantedRoleQueryBuilder = grantedRoleRepo.createQueryBuilder('GRANTED_ROLE');
|
119
119
|
return await grantedRoleQueryBuilder
|
120
120
|
.leftJoinAndSelect('GRANTED_ROLE.domain', 'DOMAIN')
|
@@ -125,8 +125,8 @@ async function getGrantedRolesToCustomer(domain, customerDomain, trx) {
|
|
125
125
|
.getMany();
|
126
126
|
}
|
127
127
|
async function terminateGrantedRoles(domain, customerDomain, trx) {
|
128
|
-
const userRepo = (trx === null || trx === void 0 ? void 0 : trx.getRepository(
|
129
|
-
const grantedRoleRepo = (trx === null || trx === void 0 ? void 0 : trx.getRepository(
|
128
|
+
const userRepo = (trx === null || trx === void 0 ? void 0 : trx.getRepository(user_js_1.User)) || (0, shell_1.getRepository)(user_js_1.User);
|
129
|
+
const grantedRoleRepo = (trx === null || trx === void 0 ? void 0 : trx.getRepository(granted_role_js_1.GrantedRole)) || (0, shell_1.getRepository)(granted_role_js_1.GrantedRole);
|
130
130
|
const grantedRoles = await getGrantedRolesToCustomer(domain, customerDomain, trx);
|
131
131
|
const customerUsers = await getGrantedCustomerUsers(domain, customerDomain, trx);
|
132
132
|
for (let i = 0; i < customerUsers.length; i++) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"granted-role-mutation.js","sourceRoot":"","sources":["../../../server/service/granted-role/granted-role-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, In, Not, Repository } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { Partner } from '../partner/partner'\nimport { Role } from '../role/role'\nimport { RolePatch } from '../role/role-types'\nimport { User } from '../user/user'\nimport { GrantedRole } from './granted-role'\n\n@Resolver(GrantedRole)\nexport class GrantedRoleMutation {\n @Directive('@privilege(category: \"partner\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async grantRoles(\n @Arg('customerId') customerId: string,\n @Arg('roles', type => [RolePatch]) roles: RolePatch[],\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const { tx, domain } = context.state\n // Check if current domain has partnership with passed `customer`\n const customerDomain: Domain = await tx.getRepository(Domain).findOneBy({ id: customerId })\n const customer: Partner = await tx.getRepository(Partner).findOne({\n where: { domain: { id: domain.id }, partnerDomain: { id: customerDomain.id } }\n })\n\n if (!customer) throw new Error(`Failed to find partnership with customer`)\n\n // Remove existing granted roles\n const grantedRoles: GrantedRole[] = await getGrantedRolesToCustomer(domain, customerDomain, tx)\n if (grantedRoles.length) {\n await tx.getRepository(GrantedRole).delete(grantedRoles.map((gr: GrantedRole) => gr.id))\n }\n\n // Insert newly granted roles\n await tx.getRepository(Role).findBy({\n id: In(roles.map((role: Partial<Role>) => role.id))\n })\n const newlyGrantedRoles: Partial<GrantedRole>[] = roles.map((role: Role) => {\n return {\n domain: customerDomain,\n role\n }\n })\n\n await tx.getRepository(GrantedRole).save(newlyGrantedRoles)\n\n // If there's someone having role which will be removed (refuse roles)\n // user roles should be removed as well\n const grantedRoleIds: string[] = roles.map((role: Partial<Role>) => role.id)\n const nonGrantedRoles: Role[] = await tx.getRepository(Role).find({\n where: { domain: { id: domain.id }, id: Not(In(grantedRoleIds)) }\n })\n\n if (nonGrantedRoles?.length) {\n // Find customer's user who has non granted roles already\n const nonGrantedRoleIds: string[] = nonGrantedRoles.map((role: Role) => role.id)\n\n let havingRefusedRoleCustomers: User[] = await getCustomerUsersByRoles(customerDomain, nonGrantedRoles, tx)\n havingRefusedRoleCustomers = havingRefusedRoleCustomers.map((customerUser: User) => {\n const customerDomains: Domain[] = customerUser.domains\n const customerDomainIds: string[] = customerDomains.map((domain: Domain) => domain.id)\n if (customerDomainIds.indexOf(domain.id) >= 0) {\n // Case for customer user is a member of current domain.\n // If user is a member of current domain user can have any roles of the domain even if the roles is not granted\n return customerUser\n } else {\n // Case for customer user is an user of partner domain.\n // An user of partner domain only can have granted roles\n customerUser.roles = customerUser.roles.filter((role: Role) => nonGrantedRoleIds.indexOf(role.id) < 0)\n return customerUser\n }\n })\n\n await tx.getRepository(User).save(havingRefusedRoleCustomers)\n }\n return true\n }\n}\n\nexport async function getGrantedCustomerUsers(\n domain: Domain,\n customerDomain: Domain,\n trx?: EntityManager\n): Promise<User[]> {\n const grantedRoles: GrantedRole[] = await getGrantedRolesToCustomer(domain, customerDomain, trx)\n const roles: Role[] = grantedRoles.map((grantedRole: GrantedRole) => grantedRole.role)\n return await getCustomerUsersByRoles(customerDomain, roles, trx)\n}\n\nexport async function getCustomerUsersByRoles(\n customerDomain: Domain,\n roles: Role[],\n trx?: EntityManager\n): Promise<User[]> {\n if (!roles.length) return []\n const userRepo: Repository<User> = trx?.getRepository(User) || getRepository(User)\n\n const customerUsers: User[] = await userRepo\n .createQueryBuilder('USER')\n .select('USER.id')\n .distinct(true)\n .leftJoin('USER.domains', 'U_DOMAIN')\n .leftJoin('USER.roles', 'U_ROLE')\n .where('U_DOMAIN.id = :customerDomainId', { customerDomainId: customerDomain.id })\n .groupBy('USER.id')\n .addGroupBy('U_ROLE.id')\n .having('U_ROLE.id IN (:...roleIds)', {\n roleIds: roles.map((role: Role) => role.id)\n })\n .getMany()\n\n return await userRepo.find({\n where: {\n id: In(customerUsers.map((user: User) => user.id))\n },\n relations: ['domains', 'roles', 'roles.domain']\n })\n}\n\nasync function getGrantedRolesToCustomer(\n domain: Domain,\n customerDomain: Domain,\n trx?: EntityManager\n): Promise<GrantedRole[]> {\n const grantedRoleRepo: Repository<GrantedRole> = trx?.getRepository(GrantedRole) || getRepository(GrantedRole)\n const grantedRoleQueryBuilder = grantedRoleRepo.createQueryBuilder('GRANTED_ROLE')\n return await grantedRoleQueryBuilder\n .leftJoinAndSelect('GRANTED_ROLE.domain', 'DOMAIN')\n .leftJoinAndSelect('GRANTED_ROLE.role', 'ROLE')\n .leftJoin('ROLE.domain', 'R_DOMAIN')\n .where('R_DOMAIN.id = :domainId', { domainId: domain.id })\n .andWhere('DOMAIN.id = :customerDomainId', { customerDomainId: customerDomain.id })\n .getMany()\n}\n\nexport async function terminateGrantedRoles(\n domain: Domain,\n customerDomain: Domain,\n trx?: EntityManager\n): Promise<void> {\n const userRepo: Repository<User> = trx?.getRepository(User) || getRepository(User)\n const grantedRoleRepo: Repository<GrantedRole> = trx?.getRepository(GrantedRole) || getRepository(GrantedRole)\n\n const grantedRoles: GrantedRole[] = await getGrantedRolesToCustomer(domain, customerDomain, trx)\n const customerUsers: User[] = await getGrantedCustomerUsers(domain, customerDomain, trx)\n\n for (let i: number = 0; i < customerUsers.length; i++) {\n customerUsers[i].roles = customerUsers[i].roles.filter((role: Role) => role.domain.id !== domain.id)\n }\n\n if (customerUsers?.length) await userRepo.save(customerUsers)\n if (grantedRoles?.length) await grantedRoleRepo.delete(grantedRoles.map((grantedRole: GrantedRole) => grantedRole.id))\n}\n"]}
|
1
|
+
{"version":3,"file":"granted-role-mutation.js","sourceRoot":"","sources":["../../../server/service/granted-role/granted-role-mutation.ts"],"names":[],"mappings":";;;AAkFA,0DAQC;AAED,0DA4BC;AAkBD,sDAiBC;;AA3JD,+CAAsE;AACtE,qCAA4D;AAE5D,iDAA6D;AAE7D,sDAA+C;AAC/C,6CAAsC;AACtC,yDAAiD;AACjD,6CAAsC;AACtC,uDAA+C;AAGxC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAIxB,AAAN,KAAK,CAAC,UAAU,CACK,UAAkB,EACF,KAAkB,EAC9C,OAAwB;QAE/B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACpC,iEAAiE;QACjE,MAAM,cAAc,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;QAC3F,MAAM,QAAQ,GAAY,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAO,CAAC,CAAC,OAAO,CAAC;YAChE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE;SAC/E,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAE1E,gCAAgC;QAChC,MAAM,YAAY,GAAkB,MAAM,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;QAC/F,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,aAAa,CAAC,6BAAW,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAe,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1F,CAAC;QAED,6BAA6B;QAC7B,MAAM,EAAE,CAAC,aAAa,CAAC,cAAI,CAAC,CAAC,MAAM,CAAC;YAClC,EAAE,EAAE,IAAA,YAAE,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACpD,CAAC,CAAA;QACF,MAAM,iBAAiB,GAA2B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE;YACzE,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,IAAI;aACL,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,aAAa,CAAC,6BAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAE3D,sEAAsE;QACtE,uCAAuC;QACvC,MAAM,cAAc,GAAa,KAAK,CAAC,GAAG,CAAC,CAAC,IAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5E,MAAM,eAAe,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAI,CAAC,CAAC,IAAI,CAAC;YAChE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAA,aAAG,EAAC,IAAA,YAAE,EAAC,cAAc,CAAC,CAAC,EAAE;SAClE,CAAC,CAAA;QAEF,IAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,EAAE,CAAC;YAC5B,yDAAyD;YACzD,MAAM,iBAAiB,GAAa,eAAe,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAEhF,IAAI,0BAA0B,GAAW,MAAM,uBAAuB,CAAC,cAAc,EAAE,eAAe,EAAE,EAAE,CAAC,CAAA;YAC3G,0BAA0B,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC,YAAkB,EAAE,EAAE;gBACjF,MAAM,eAAe,GAAa,YAAY,CAAC,OAAO,CAAA;gBACtD,MAAM,iBAAiB,GAAa,eAAe,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACtF,IAAI,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9C,wDAAwD;oBACxD,+GAA+G;oBAC/G,OAAO,YAAY,CAAA;gBACrB,CAAC;qBAAM,CAAC;oBACN,uDAAuD;oBACvD,wDAAwD;oBACxD,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;oBACtG,OAAO,YAAY,CAAA;gBACrB,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,EAAE,CAAC,aAAa,CAAC,cAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAC/D,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AApEY,kDAAmB;AAIxB;IAHL,IAAA,wBAAS,EAAC,wDAAwD,CAAC;IACnE,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;IAE1B,mBAAA,IAAA,kBAAG,EAAC,YAAY,CAAC,CAAA;IACjB,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,yBAAS,CAAC,CAAC,CAAA;IACjC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;qDA4DP;8BAnEU,mBAAmB;IAD/B,IAAA,uBAAQ,EAAC,6BAAW,CAAC;GACT,mBAAmB,CAoE/B;AAEM,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,cAAsB,EACtB,GAAmB;IAEnB,MAAM,YAAY,GAAkB,MAAM,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;IAChG,MAAM,KAAK,GAAW,YAAY,CAAC,GAAG,CAAC,CAAC,WAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACtF,OAAO,MAAM,uBAAuB,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;AAClE,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,cAAsB,EACtB,KAAa,EACb,GAAmB;IAEnB,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAqB,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,aAAa,CAAC,cAAI,CAAC,KAAI,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAA;IAElF,MAAM,aAAa,GAAW,MAAM,QAAQ;SACzC,kBAAkB,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,SAAS,CAAC;SACjB,QAAQ,CAAC,IAAI,CAAC;SACd,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;SACpC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;SAChC,KAAK,CAAC,iCAAiC,EAAE,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC;SACjF,OAAO,CAAC,SAAS,CAAC;SAClB,UAAU,CAAC,WAAW,CAAC;SACvB,MAAM,CAAC,4BAA4B,EAAE;QACpC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KAC5C,CAAC;SACD,OAAO,EAAE,CAAA;IAEZ,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC;QACzB,KAAK,EAAE;YACL,EAAE,EAAE,IAAA,YAAE,EAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnD;QACD,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC;KAChD,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,MAAc,EACd,cAAsB,EACtB,GAAmB;IAEnB,MAAM,eAAe,GAA4B,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,aAAa,CAAC,6BAAW,CAAC,KAAI,IAAA,qBAAa,EAAC,6BAAW,CAAC,CAAA;IAC9G,MAAM,uBAAuB,GAAG,eAAe,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;IAClF,OAAO,MAAM,uBAAuB;SACjC,iBAAiB,CAAC,qBAAqB,EAAE,QAAQ,CAAC;SAClD,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC;SAC9C,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;SACnC,KAAK,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;SACzD,QAAQ,CAAC,+BAA+B,EAAE,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC;SAClF,OAAO,EAAE,CAAA;AACd,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,MAAc,EACd,cAAsB,EACtB,GAAmB;IAEnB,MAAM,QAAQ,GAAqB,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,aAAa,CAAC,cAAI,CAAC,KAAI,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAA;IAClF,MAAM,eAAe,GAA4B,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,aAAa,CAAC,6BAAW,CAAC,KAAI,IAAA,qBAAa,EAAC,6BAAW,CAAC,CAAA;IAE9G,MAAM,YAAY,GAAkB,MAAM,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;IAChG,MAAM,aAAa,GAAW,MAAM,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;IAExF,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtD,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM;QAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC7D,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM;QAAE,MAAM,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;AACxH,CAAC","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, In, Not, Repository } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { Partner } from '../partner/partner.js'\nimport { Role } from '../role/role.js'\nimport { RolePatch } from '../role/role-types.js'\nimport { User } from '../user/user.js'\nimport { GrantedRole } from './granted-role.js'\n\n@Resolver(GrantedRole)\nexport class GrantedRoleMutation {\n @Directive('@privilege(category: \"partner\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async grantRoles(\n @Arg('customerId') customerId: string,\n @Arg('roles', type => [RolePatch]) roles: RolePatch[],\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const { tx, domain } = context.state\n // Check if current domain has partnership with passed `customer`\n const customerDomain: Domain = await tx.getRepository(Domain).findOneBy({ id: customerId })\n const customer: Partner = await tx.getRepository(Partner).findOne({\n where: { domain: { id: domain.id }, partnerDomain: { id: customerDomain.id } }\n })\n\n if (!customer) throw new Error(`Failed to find partnership with customer`)\n\n // Remove existing granted roles\n const grantedRoles: GrantedRole[] = await getGrantedRolesToCustomer(domain, customerDomain, tx)\n if (grantedRoles.length) {\n await tx.getRepository(GrantedRole).delete(grantedRoles.map((gr: GrantedRole) => gr.id))\n }\n\n // Insert newly granted roles\n await tx.getRepository(Role).findBy({\n id: In(roles.map((role: Partial<Role>) => role.id))\n })\n const newlyGrantedRoles: Partial<GrantedRole>[] = roles.map((role: Role) => {\n return {\n domain: customerDomain,\n role\n }\n })\n\n await tx.getRepository(GrantedRole).save(newlyGrantedRoles)\n\n // If there's someone having role which will be removed (refuse roles)\n // user roles should be removed as well\n const grantedRoleIds: string[] = roles.map((role: Partial<Role>) => role.id)\n const nonGrantedRoles: Role[] = await tx.getRepository(Role).find({\n where: { domain: { id: domain.id }, id: Not(In(grantedRoleIds)) }\n })\n\n if (nonGrantedRoles?.length) {\n // Find customer's user who has non granted roles already\n const nonGrantedRoleIds: string[] = nonGrantedRoles.map((role: Role) => role.id)\n\n let havingRefusedRoleCustomers: User[] = await getCustomerUsersByRoles(customerDomain, nonGrantedRoles, tx)\n havingRefusedRoleCustomers = havingRefusedRoleCustomers.map((customerUser: User) => {\n const customerDomains: Domain[] = customerUser.domains\n const customerDomainIds: string[] = customerDomains.map((domain: Domain) => domain.id)\n if (customerDomainIds.indexOf(domain.id) >= 0) {\n // Case for customer user is a member of current domain.\n // If user is a member of current domain user can have any roles of the domain even if the roles is not granted\n return customerUser\n } else {\n // Case for customer user is an user of partner domain.\n // An user of partner domain only can have granted roles\n customerUser.roles = customerUser.roles.filter((role: Role) => nonGrantedRoleIds.indexOf(role.id) < 0)\n return customerUser\n }\n })\n\n await tx.getRepository(User).save(havingRefusedRoleCustomers)\n }\n return true\n }\n}\n\nexport async function getGrantedCustomerUsers(\n domain: Domain,\n customerDomain: Domain,\n trx?: EntityManager\n): Promise<User[]> {\n const grantedRoles: GrantedRole[] = await getGrantedRolesToCustomer(domain, customerDomain, trx)\n const roles: Role[] = grantedRoles.map((grantedRole: GrantedRole) => grantedRole.role)\n return await getCustomerUsersByRoles(customerDomain, roles, trx)\n}\n\nexport async function getCustomerUsersByRoles(\n customerDomain: Domain,\n roles: Role[],\n trx?: EntityManager\n): Promise<User[]> {\n if (!roles.length) return []\n const userRepo: Repository<User> = trx?.getRepository(User) || getRepository(User)\n\n const customerUsers: User[] = await userRepo\n .createQueryBuilder('USER')\n .select('USER.id')\n .distinct(true)\n .leftJoin('USER.domains', 'U_DOMAIN')\n .leftJoin('USER.roles', 'U_ROLE')\n .where('U_DOMAIN.id = :customerDomainId', { customerDomainId: customerDomain.id })\n .groupBy('USER.id')\n .addGroupBy('U_ROLE.id')\n .having('U_ROLE.id IN (:...roleIds)', {\n roleIds: roles.map((role: Role) => role.id)\n })\n .getMany()\n\n return await userRepo.find({\n where: {\n id: In(customerUsers.map((user: User) => user.id))\n },\n relations: ['domains', 'roles', 'roles.domain']\n })\n}\n\nasync function getGrantedRolesToCustomer(\n domain: Domain,\n customerDomain: Domain,\n trx?: EntityManager\n): Promise<GrantedRole[]> {\n const grantedRoleRepo: Repository<GrantedRole> = trx?.getRepository(GrantedRole) || getRepository(GrantedRole)\n const grantedRoleQueryBuilder = grantedRoleRepo.createQueryBuilder('GRANTED_ROLE')\n return await grantedRoleQueryBuilder\n .leftJoinAndSelect('GRANTED_ROLE.domain', 'DOMAIN')\n .leftJoinAndSelect('GRANTED_ROLE.role', 'ROLE')\n .leftJoin('ROLE.domain', 'R_DOMAIN')\n .where('R_DOMAIN.id = :domainId', { domainId: domain.id })\n .andWhere('DOMAIN.id = :customerDomainId', { customerDomainId: customerDomain.id })\n .getMany()\n}\n\nexport async function terminateGrantedRoles(\n domain: Domain,\n customerDomain: Domain,\n trx?: EntityManager\n): Promise<void> {\n const userRepo: Repository<User> = trx?.getRepository(User) || getRepository(User)\n const grantedRoleRepo: Repository<GrantedRole> = trx?.getRepository(GrantedRole) || getRepository(GrantedRole)\n\n const grantedRoles: GrantedRole[] = await getGrantedRolesToCustomer(domain, customerDomain, trx)\n const customerUsers: User[] = await getGrantedCustomerUsers(domain, customerDomain, trx)\n\n for (let i: number = 0; i < customerUsers.length; i++) {\n customerUsers[i].roles = customerUsers[i].roles.filter((role: Role) => role.domain.id !== domain.id)\n }\n\n if (customerUsers?.length) await userRepo.save(customerUsers)\n if (grantedRoles?.length) await grantedRoleRepo.delete(grantedRoles.map((grantedRole: GrantedRole) => grantedRole.id))\n}\n"]}
|