@things-factory/auth-base 5.0.1 → 5.0.14
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 +2 -1
- package/dist-server/constants/error-code.js.map +1 -1
- package/dist-server/constants/error-message.js.map +1 -1
- package/dist-server/constants/max-age.js.map +1 -1
- package/dist-server/controllers/auth.js +5 -18
- package/dist-server/controllers/auth.js.map +1 -1
- package/dist-server/controllers/change-pwd.js +6 -8
- package/dist-server/controllers/change-pwd.js.map +1 -1
- package/dist-server/controllers/checkin.js.map +1 -1
- package/dist-server/controllers/delete-user.js.map +1 -1
- package/dist-server/controllers/invitation.js +3 -8
- package/dist-server/controllers/invitation.js.map +1 -1
- package/dist-server/controllers/profile.js.map +1 -1
- package/dist-server/controllers/reset-password.js +7 -9
- package/dist-server/controllers/reset-password.js.map +1 -1
- package/dist-server/controllers/signin.js.map +1 -1
- package/dist-server/controllers/signup.js.map +1 -1
- package/dist-server/controllers/unlock-user.js.map +1 -1
- 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.js +2 -4
- package/dist-server/controllers/utils/make-verification-token.js.map +1 -1
- 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.js.map +1 -1
- package/dist-server/controllers/utils/save-verification-token.js.map +1 -1
- package/dist-server/controllers/verification.js.map +1 -1
- package/dist-server/errors/auth-error.js +2 -24
- package/dist-server/errors/auth-error.js.map +1 -1
- 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.js.map +1 -1
- package/dist-server/index.js +12 -25
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/authenticate-401-middleware.js +0 -6
- package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
- package/dist-server/middlewares/domain-authenticate-middleware.js +2 -5
- package/dist-server/middlewares/domain-authenticate-middleware.js.map +1 -1
- 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.js +6 -24
- package/dist-server/middlewares/index.js.map +1 -1
- 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.js +2 -6
- package/dist-server/middlewares/signin-middleware.js.map +1 -1
- package/dist-server/migrations/1548206416130-SeedUser.js.map +1 -1
- 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 +3 -8
- package/dist-server/router/auth-checkin-router.js.map +1 -1
- package/dist-server/router/auth-private-process-router.js +15 -20
- package/dist-server/router/auth-private-process-router.js.map +1 -1
- package/dist-server/router/auth-public-process-router.js +4 -22
- package/dist-server/router/auth-public-process-router.js.map +1 -1
- 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.js +3 -8
- package/dist-server/router/auth-signup-router.js.map +1 -1
- package/dist-server/router/index.js +9 -22
- package/dist-server/router/index.js.map +1 -1
- 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.js +2 -9
- package/dist-server/router/oauth2/oauth2-authorize-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-router.js +5 -10
- package/dist-server/router/oauth2/oauth2-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-server.js +2 -14
- package/dist-server/router/oauth2/oauth2-server.js.map +1 -1
- 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.js +3 -5
- package/dist-server/router/oauth2/passport-refresh-token.js.map +1 -1
- 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.js +4 -13
- package/dist-server/router/site-root-router.js.map +1 -1
- package/dist-server/routes.js +2 -9
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-mutation.js +10 -23
- package/dist-server/service/app-binding/app-binding-mutation.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-query.js +45 -52
- package/dist-server/service/app-binding/app-binding-query.js.map +1 -1
- 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.js +8 -16
- package/dist-server/service/app-binding/app-binding.js.map +1 -1
- package/dist-server/service/app-binding/index.js.map +1 -1
- package/dist-server/service/appliance/appliance-mutation.js +27 -41
- package/dist-server/service/appliance/appliance-mutation.js.map +1 -1
- package/dist-server/service/appliance/appliance-query.js +29 -40
- package/dist-server/service/appliance/appliance-query.js.map +1 -1
- 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.js +35 -46
- package/dist-server/service/appliance/appliance.js.map +1 -1
- package/dist-server/service/appliance/index.js.map +1 -1
- package/dist-server/service/application/application-mutation.js +34 -48
- package/dist-server/service/application/application-mutation.js.map +1 -1
- package/dist-server/service/application/application-query.js +44 -55
- package/dist-server/service/application/application-query.js.map +1 -1
- 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.js +42 -53
- package/dist-server/service/application/application.js.map +1 -1
- package/dist-server/service/application/index.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-mutation.js +14 -25
- package/dist-server/service/domain-generator/domain-generator-mutation.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-types.js +26 -34
- package/dist-server/service/domain-generator/domain-generator-types.js.map +1 -1
- package/dist-server/service/domain-generator/index.js.map +1 -1
- package/dist-server/service/granted-role/granted-role-mutation.js +9 -20
- package/dist-server/service/granted-role/granted-role-mutation.js.map +1 -1
- package/dist-server/service/granted-role/granted-role-query.js +23 -34
- package/dist-server/service/granted-role/granted-role-query.js.map +1 -1
- package/dist-server/service/granted-role/granted-role.js +12 -20
- package/dist-server/service/granted-role/granted-role.js.map +1 -1
- package/dist-server/service/granted-role/index.js.map +1 -1
- package/dist-server/service/index.js +22 -35
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/invitation/index.js.map +1 -1
- package/dist-server/service/invitation/invitation-mutation.js +17 -28
- package/dist-server/service/invitation/invitation-mutation.js.map +1 -1
- package/dist-server/service/invitation/invitation-query.js +15 -26
- package/dist-server/service/invitation/invitation-query.js.map +1 -1
- 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.js +24 -32
- package/dist-server/service/invitation/invitation.js.map +1 -1
- package/dist-server/service/login-history/index.js.map +1 -1
- package/dist-server/service/login-history/login-history-query.js +18 -29
- package/dist-server/service/login-history/login-history-query.js.map +1 -1
- package/dist-server/service/login-history/login-history.js +16 -24
- package/dist-server/service/login-history/login-history.js.map +1 -1
- package/dist-server/service/partner/index.js.map +1 -1
- package/dist-server/service/partner/partner-mutation.js +14 -25
- package/dist-server/service/partner/partner-mutation.js.map +1 -1
- package/dist-server/service/partner/partner-query.js +44 -55
- package/dist-server/service/partner/partner-query.js.map +1 -1
- 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.js +24 -32
- package/dist-server/service/partner/partner.js.map +1 -1
- package/dist-server/service/password-history/index.js.map +1 -1
- 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.js.map +1 -1
- package/dist-server/service/privilege/privilege-directive.js +2 -5
- package/dist-server/service/privilege/privilege-directive.js.map +1 -1
- package/dist-server/service/privilege/privilege-mutation.js +26 -37
- package/dist-server/service/privilege/privilege-mutation.js.map +1 -1
- package/dist-server/service/privilege/privilege-query.js +35 -46
- package/dist-server/service/privilege/privilege-query.js.map +1 -1
- 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.js +24 -32
- package/dist-server/service/privilege/privilege.js.map +1 -1
- package/dist-server/service/role/index.js.map +1 -1
- package/dist-server/service/role/role-mutation.js +27 -38
- package/dist-server/service/role/role-mutation.js.map +1 -1
- package/dist-server/service/role/role-query.js +61 -72
- package/dist-server/service/role/role-query.js.map +1 -1
- 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.js +28 -36
- package/dist-server/service/role/role.js.map +1 -1
- package/dist-server/service/user/index.js.map +1 -1
- package/dist-server/service/user/user-mutation.js +65 -76
- package/dist-server/service/user/user-mutation.js.map +1 -1
- package/dist-server/service/user/user-query.js +59 -70
- package/dist-server/service/user/user-query.js.map +1 -1
- 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.js +46 -57
- package/dist-server/service/user/user.js.map +1 -1
- package/dist-server/service/verification-token/index.js.map +1 -1
- 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.js.map +1 -1
- package/dist-server/templates/invitation-email.js.map +1 -1
- package/dist-server/templates/reset-password-email.js.map +1 -1
- package/dist-server/templates/verification-email.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/dist-server/utils/accepts.js.map +1 -1
- package/dist-server/utils/access-token-cookie.js.map +1 -1
- package/dist-server/utils/check-user-belongs-domain.js.map +1 -1
- package/dist-server/utils/get-domain-from-hostname.js.map +1 -1
- package/dist-server/utils/get-domain-users.js.map +1 -1
- package/dist-server/utils/get-secret.js.map +1 -1
- package/dist-server/utils/get-user-domains.js.map +1 -1
- package/package.json +5 -5
- package/server/controllers/change-pwd.ts +10 -13
- package/server/controllers/invitation.ts +5 -10
- package/server/controllers/reset-password.ts +10 -11
- package/server/controllers/utils/password-rule.ts +0 -1
- package/server/middlewares/authenticate-401-middleware.ts +0 -8
- package/server/middlewares/domain-authenticate-middleware.ts +4 -8
- 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/router/auth-checkin-router.ts +4 -6
- package/server/router/auth-private-process-router.ts +16 -17
- package/server/router/auth-public-process-router.ts +4 -34
- package/server/router/auth-signin-router.ts +1 -5
- package/server/router/auth-signup-router.ts +3 -10
- package/server/router/oauth2/oauth2-authorize-router.ts +1 -8
- package/server/router/oauth2/oauth2-router.ts +0 -6
- package/server/router/oauth2/oauth2-server.ts +0 -12
- 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 +3 -6
- package/server/service/app-binding/app-binding-query.ts +7 -6
- package/server/service/appliance/appliance-mutation.ts +0 -5
- package/server/service/application/application-mutation.ts +3 -6
- package/server/service/granted-role/granted-role-mutation.ts +1 -1
- package/server/service/privilege/privilege-directive.ts +0 -2
- package/server/service/privilege/privilege-mutation.ts +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-code.js","sourceRoot":"","sources":["../../server/constants/error-code.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,gBAAgB,CAAA;AACjC,QAAA,oBAAoB,GAAG,sBAAsB,CAAA;AAC7C,QAAA,kBAAkB,GAAG,oBAAoB,CAAA;AACzC,QAAA,WAAW,GAAG,aAAa,CAAA;AAC3B,QAAA,YAAY,GAAG,cAAc,CAAA;AAC7B,QAAA,mBAAmB,GAAG,qBAAqB,CAAA;AAC3C,QAAA,kBAAkB,GAAG,oBAAoB,CAAA;AACzC,QAAA,kBAAkB,GAAG,oBAAoB,CAAA;AACzC,QAAA,0BAA0B,GAAG,4BAA4B,CAAA;AACzD,QAAA,aAAa,GAAG,eAAe,CAAA;AAC/B,QAAA,YAAY,GAAG,cAAc,CAAA;AAC7B,QAAA,kBAAkB,GAAG,qBAAqB,CAAA;AAC1C,QAAA,4BAA4B,GAAG,8BAA8B,CAAA;AAC7D,QAAA,4BAA4B,GAAG,gCAAgC,CAAA;AAC/D,QAAA,eAAe,GAAG,iBAAiB,CAAA;AACnC,QAAA,kBAAkB,GAAG,2BAA2B,CAAA;AAChD,QAAA,kBAAkB,GAAG,sCAAsC,CAAA"}
|
|
1
|
+
{"version":3,"file":"error-code.js","sourceRoot":"","sources":["../../server/constants/error-code.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,gBAAgB,CAAA;AACjC,QAAA,oBAAoB,GAAG,sBAAsB,CAAA;AAC7C,QAAA,kBAAkB,GAAG,oBAAoB,CAAA;AACzC,QAAA,WAAW,GAAG,aAAa,CAAA;AAC3B,QAAA,YAAY,GAAG,cAAc,CAAA;AAC7B,QAAA,mBAAmB,GAAG,qBAAqB,CAAA;AAC3C,QAAA,kBAAkB,GAAG,oBAAoB,CAAA;AACzC,QAAA,kBAAkB,GAAG,oBAAoB,CAAA;AACzC,QAAA,0BAA0B,GAAG,4BAA4B,CAAA;AACzD,QAAA,aAAa,GAAG,eAAe,CAAA;AAC/B,QAAA,YAAY,GAAG,cAAc,CAAA;AAC7B,QAAA,kBAAkB,GAAG,qBAAqB,CAAA;AAC1C,QAAA,4BAA4B,GAAG,8BAA8B,CAAA;AAC7D,QAAA,4BAA4B,GAAG,gCAAgC,CAAA;AAC/D,QAAA,eAAe,GAAG,iBAAiB,CAAA;AACnC,QAAA,kBAAkB,GAAG,2BAA2B,CAAA;AAChD,QAAA,kBAAkB,GAAG,sCAAsC,CAAA","sourcesContent":["export const USER_NOT_FOUND = 'user not found'\nexport const PASSWORD_NOT_MATCHED = 'password-not-matched'\nexport const USER_NOT_ACTIVATED = 'user not activated'\nexport const USER_LOCKED = 'user-locked'\nexport const USER_DELETED = 'user-deleted'\nexport const NO_AVAILABLE_DOMAIN = 'no-available-domain'\nexport const UNAVAILABLE_DOMAIN = 'unavailable-domain'\nexport const NO_SELECTED_DOMAIN = 'no-selected-domain'\nexport const REDIRECT_TO_DEFAULT_DOMAIN = 'redirect-to-default-domain'\nexport const TOKEN_INVALID = 'token-invalid'\nexport const AUTH_INVALID = 'auth-invalid'\nexport const SUBDOMAIN_NOTFOUND = 'subdomain not found'\nexport const CONFIRM_PASSWORD_NOT_MATCHED = 'confirm password not matched'\nexport const PASSWORD_PATTERN_NOT_MATCHED = 'password should match the rule'\nexport const USER_DUPLICATED = 'user duplicated'\nexport const PASSWORD_USED_PAST = 'password used in the past'\nexport const VERIFICATION_ERROR = 'user or verification token not found'"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-message.js","sourceRoot":"","sources":["../../server/constants/error-message.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"error-message.js","sourceRoot":"","sources":["../../server/constants/error-message.ts"],"names":[],"mappings":"","sourcesContent":[""]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-age.js","sourceRoot":"","sources":["../../server/constants/max-age.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA"}
|
|
1
|
+
{"version":3,"file":"max-age.js","sourceRoot":"","sources":["../../server/constants/max-age.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA","sourcesContent":["export const MAX_AGE = 7 * 24 * 3600 * 1000\n"]}
|
|
@@ -1,21 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("./
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./change-pwd"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./signin"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./signup"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./verification"), exports);
|
|
21
8
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../server/controllers/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../server/controllers/auth.ts"],"names":[],"mappings":";;;AAAA,uDAA4B;AAC5B,mDAAwB;AACxB,mDAAwB;AACxB,yDAA8B","sourcesContent":["export * from './change-pwd'\nexport * from './signin'\nexport * from './signup'\nexport * from './verification'\n"]}
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.changePwd = void 0;
|
|
4
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
-
const user_1 = require("../service/user/user");
|
|
6
|
-
const password_history_1 = require("../service/password-history/password-history");
|
|
7
|
-
const auth_error_1 = require("../errors/auth-error");
|
|
8
|
-
const error_code_1 = require("../constants/error-code");
|
|
9
5
|
const env_1 = require("@things-factory/env");
|
|
10
|
-
const
|
|
6
|
+
const error_code_1 = require("../constants/error-code");
|
|
7
|
+
const auth_error_1 = require("../errors/auth-error");
|
|
8
|
+
const password_history_1 = require("../service/password-history/password-history");
|
|
9
|
+
const user_1 = require("../service/user/user");
|
|
11
10
|
const HISTORY_SIZE = env_1.config.get('password', { history: 0 }).history;
|
|
12
11
|
async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
|
|
13
12
|
const { domain } = context.state;
|
|
@@ -42,12 +41,12 @@ async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
|
|
|
42
41
|
try {
|
|
43
42
|
history = JSON.parse(passwordHistory.history);
|
|
44
43
|
if (!(history instanceof Array)) {
|
|
45
|
-
|
|
44
|
+
console.error('password history maybe currupted - not an array');
|
|
46
45
|
history = [];
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
48
|
catch (e) {
|
|
50
|
-
|
|
49
|
+
console.error('password history currupted - not json format');
|
|
51
50
|
}
|
|
52
51
|
const found = history.slice(0, HISTORY_SIZE).find(h => {
|
|
53
52
|
return user_1.User.verify(h.password, newPass, h.salt);
|
|
@@ -72,7 +71,6 @@ async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
|
|
|
72
71
|
userId: user.id,
|
|
73
72
|
history: JSON.stringify(history)
|
|
74
73
|
});
|
|
75
|
-
debug('password history updated', history.length);
|
|
76
74
|
}
|
|
77
75
|
return await user.sign({ subdomain: domain.subdomain });
|
|
78
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-pwd.js","sourceRoot":"","sources":["../../server/controllers/change-pwd.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;
|
|
1
|
+
{"version":3,"file":"change-pwd.js","sourceRoot":"","sources":["../../server/controllers/change-pwd.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository } from 'typeorm'\n\nimport { config } from '@things-factory/env'\n\nimport {\n CONFIRM_PASSWORD_NOT_MATCHED,\n PASSWORD_NOT_MATCHED,\n PASSWORD_USED_PAST,\n USER_NOT_FOUND\n} from '../constants/error-code'\nimport { AuthError } from '../errors/auth-error'\nimport { PasswordHistory } from '../service/password-history/password-history'\nimport { User } from '../service/user/user'\n\nconst HISTORY_SIZE = config.get('password', { history: 0 }).history\n\nexport async function changePwd(attrs, currentPass, newPass, confirmPass, context) {\n const { domain } = context.state\n\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n const repository = getRepository(User)\n const user: User = await repository.findOne({ where: { email: attrs.email } })\n\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n if (newPass !== confirmPass) {\n throw new AuthError({\n errorCode: CONFIRM_PASSWORD_NOT_MATCHED\n })\n }\n\n if (!User.verify(user.password, currentPass, user.salt)) {\n throw new AuthError({\n errorCode: PASSWORD_NOT_MATCHED,\n detail: {\n failCount: user.failCount\n }\n })\n }\n /* check if password is following the rule */\n User.validatePasswordByRule(newPass, context?.lng)\n\n user.password = User.encode(newPass, user.salt)\n\n if (HISTORY_SIZE > 0) {\n var passwordHistory: PasswordHistory = await getRepository(PasswordHistory).findOne(user.id)\n var history = []\n\n if (passwordHistory) {\n try {\n history = JSON.parse(passwordHistory.history)\n if (!(history instanceof Array)) {\n console.error('password history maybe currupted - not an array')\n history = []\n }\n } catch (e) {\n console.error('password history currupted - not json format')\n }\n\n const found = history.slice(0, HISTORY_SIZE).find(h => {\n return User.verify(h.password, newPass, h.salt)\n })\n\n if (found) {\n throw new AuthError({\n errorCode: PASSWORD_USED_PAST\n })\n }\n }\n }\n\n await repository.save({\n ...user,\n passwordUpdatedAt: new Date()\n })\n\n if (HISTORY_SIZE > 0) {\n history = [\n {\n password: user.password,\n salt: user.salt\n },\n ...history\n ].slice(0, HISTORY_SIZE)\n\n await getRepository(PasswordHistory).save({\n userId: user.id,\n history: JSON.stringify(history)\n })\n }\n\n return await user.sign({ subdomain: domain.subdomain })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../server/controllers/checkin.ts"],"names":[],"mappings":";;;AAAA,gEAA0D;AAE1D,qCAAuC;AACvC,+CAA2C;AAEpC,KAAK,UAAU,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;IACjD,MAAM,QAAQ,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAa,MAAM,IAAA,iCAAc,EAAC,IAAI,CAAC,CAAA;IAEpD,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE;QACpB,OAAO,KAAK,CAAA;KACb;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;IACpE,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,KAAK,CAAA;KACb;IAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AACvC,CAAC;AAfD,0BAeC"}
|
|
1
|
+
{"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../server/controllers/checkin.ts"],"names":[],"mappings":";;;AAAA,gEAA0D;AAE1D,qCAAuC;AACvC,+CAA2C;AAEpC,KAAK,UAAU,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;IACjD,MAAM,QAAQ,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAa,MAAM,IAAA,iCAAc,EAAC,IAAI,CAAC,CAAA;IAEpD,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE;QACpB,OAAO,KAAK,CAAA;KACb;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;IACpE,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,KAAK,CAAA;KACb;IAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AACvC,CAAC;AAfD,0BAeC","sourcesContent":["import { getUserDomains } from '../utils/get-user-domains'\nimport { Domain } from '@things-factory/shell'\nimport { getRepository } from 'typeorm'\nimport { User } from '../service/user/user'\n\nexport async function checkin({ userId, subdomain }) {\n const userRepo = getRepository(User)\n const user = await userRepo.findOne({ where: { id: userId } })\n const domains: Domain[] = await getUserDomains(user)\n\n if (!domains?.length) {\n return false\n }\n\n const domain = domains.find(domain => domain.subdomain == subdomain)\n if (!domain) {\n return false\n }\n\n return await user.sign({ subdomain })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-user.js","sourceRoot":"","sources":["../../server/controllers/delete-user.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,+CAAuD;AACvD,qDAAgD;AAChD,wDAAwD;AAEjD,KAAK,UAAU,UAAU,CAAC,KAAK,EAAE,EAAkB;IACxD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,UAAU,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,WAAI,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACxE,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,2BAAc;SAC1B,CAAC,CAAA;KACH;IAED,IAAI,CAAC,MAAM,GAAG,iBAAU,CAAC,OAAO,CAAA;IAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IAEjB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE3B,2BAA2B;IAC3B,kBAAkB;IAClB,0BAA0B;IAC1B,cAAc;IACd,2BAA2B;IAC3B,aAAa;IACb,uBAAuB;IACvB,OAAO;IACP,eAAe;AACjB,CAAC;AA1BD,gCA0BC;AAEM,KAAK,UAAU,WAAW,CAAC,KAAK,EAAE,EAAkB;IACzD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAExB,MAAM,IAAI,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,WAAI,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE;YACL,KAAK,EAAE,IAAA,YAAE,EAAC,MAAM,CAAC;SAClB;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,MAAM,GAAG,iBAAU,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEtB,2BAA2B;IAC3B,kBAAkB;IAClB,0BAA0B;IAC1B,cAAc;IACd,2BAA2B;IAC3B,aAAa;IACb,2BAA2B;IAC3B,OAAO;IACP,eAAe;IACf,OAAO,IAAI,CAAA;AACb,CAAC;AAlCD,kCAkCC"}
|
|
1
|
+
{"version":3,"file":"delete-user.js","sourceRoot":"","sources":["../../server/controllers/delete-user.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,+CAAuD;AACvD,qDAAgD;AAChD,wDAAwD;AAEjD,KAAK,UAAU,UAAU,CAAC,KAAK,EAAE,EAAkB;IACxD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,UAAU,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,WAAI,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACxE,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,2BAAc;SAC1B,CAAC,CAAA;KACH;IAED,IAAI,CAAC,MAAM,GAAG,iBAAU,CAAC,OAAO,CAAA;IAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IAEjB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE3B,2BAA2B;IAC3B,kBAAkB;IAClB,0BAA0B;IAC1B,cAAc;IACd,2BAA2B;IAC3B,aAAa;IACb,uBAAuB;IACvB,OAAO;IACP,eAAe;AACjB,CAAC;AA1BD,gCA0BC;AAEM,KAAK,UAAU,WAAW,CAAC,KAAK,EAAE,EAAkB;IACzD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAExB,MAAM,IAAI,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,WAAI,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE;YACL,KAAK,EAAE,IAAA,YAAE,EAAC,MAAM,CAAC;SAClB;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,MAAM,GAAG,iBAAU,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEtB,2BAA2B;IAC3B,kBAAkB;IAClB,0BAA0B;IAC1B,cAAc;IACd,2BAA2B;IAC3B,aAAa;IACb,2BAA2B;IAC3B,OAAO;IACP,eAAe;IACf,OAAO,IAAI,CAAA;AACb,CAAC;AAlCD,kCAkCC","sourcesContent":["import { EntityManager, In } from 'typeorm'\nimport { User, UserStatus } from '../service/user/user'\nimport { AuthError } from '../errors/auth-error'\nimport { USER_NOT_FOUND } from '../constants/error-code'\n\nexport async function deleteUser(attrs, tx?: EntityManager) {\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.\n\n const repository = tx?.getRepository(User)\n const user = await repository.findOne({ where: { email: attrs.email } })\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n user.status = UserStatus.DELETED\n user.domains = []\n\n await repository.save(user)\n\n // repository api는 작동하지 않음.\n // await txManager\n // .createQueryBuilder()\n // .delete()\n // .from('users_domains')\n // .where({\n // usersId: user.id\n // })\n // .execute()\n}\n\nexport async function deleteUsers(attrs, tx?: EntityManager) {\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.\n\n const { emails } = attrs\n\n const repo = tx?.getRepository(User)\n\n const users = await repo.find({\n where: {\n email: In(emails)\n }\n })\n\n const userIds = []\n users.forEach(user => {\n user.status = UserStatus.DELETED\n user.domains = []\n\n userIds.push(user.id)\n })\n\n await repo.save(users)\n\n // repository api는 작동하지 않음.\n // await txManager\n // .createQueryBuilder()\n // .delete()\n // .from('users_domains')\n // .where({\n // usersId: In(userIds)\n // })\n // .execute()\n return true\n}\n"]}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resendInvitationEmail = exports.sendInvitationEmail = exports.acceptInvitation = exports.invite = void 0;
|
|
4
|
-
const shell_1 = require("@things-factory/shell");
|
|
5
|
-
const email_base_1 = require("@things-factory/email-base");
|
|
6
4
|
const typeorm_1 = require("typeorm");
|
|
7
5
|
const url_1 = require("url");
|
|
8
|
-
const
|
|
6
|
+
const email_base_1 = require("@things-factory/email-base");
|
|
7
|
+
const shell_1 = require("@things-factory/shell");
|
|
9
8
|
const invitation_1 = require("../service/invitation/invitation");
|
|
9
|
+
const user_1 = require("../service/user/user");
|
|
10
10
|
const invitation_email_1 = require("../templates/invitation-email");
|
|
11
11
|
const make_invitation_token_1 = require("./utils/make-invitation-token");
|
|
12
12
|
const save_invitation_token_1 = require("./utils/save-invitation-token");
|
|
13
|
-
const debug = require('debug')('things-factory:auth-base:invitation');
|
|
14
13
|
async function invite(attrs, withEmailInvitation) {
|
|
15
14
|
const { email, reference, type, context } = attrs;
|
|
16
15
|
var user = await (0, typeorm_1.getRepository)(user_1.User).findOne({ where: { email }, relations: ['domains'] });
|
|
17
16
|
var domains = user.domains;
|
|
18
17
|
// TODO reference should not be a domain.id (security reason)
|
|
19
|
-
debug('invite', email, reference, type);
|
|
20
18
|
if (user) {
|
|
21
19
|
const domain = domains.find(domain => domain.id == reference);
|
|
22
20
|
if (domain) {
|
|
23
21
|
const msg = `user already a member of the ${type}.`;
|
|
24
|
-
debug('invite', msg);
|
|
25
22
|
throw new Error(msg);
|
|
26
23
|
}
|
|
27
24
|
}
|
|
@@ -56,7 +53,6 @@ async function acceptInvitation(token) {
|
|
|
56
53
|
var invitation = await (0, typeorm_1.getRepository)(invitation_1.Invitation).findOne({
|
|
57
54
|
token
|
|
58
55
|
});
|
|
59
|
-
debug('accept-invitation', invitation);
|
|
60
56
|
if (!invitation) {
|
|
61
57
|
throw new Error(`not found invitation.`);
|
|
62
58
|
}
|
|
@@ -67,7 +63,6 @@ async function acceptInvitation(token) {
|
|
|
67
63
|
const domain = domains.find(domain => domain.id == reference);
|
|
68
64
|
if (domain) {
|
|
69
65
|
const msg = `user already a member of the ${type}.`;
|
|
70
|
-
debug('accept-invitation', msg);
|
|
71
66
|
throw new Error(msg);
|
|
72
67
|
}
|
|
73
68
|
user.domains = [...domains, await (0, typeorm_1.getRepository)(shell_1.Domain).findOne(reference)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../server/controllers/invitation.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../server/controllers/invitation.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository } from 'typeorm'\nimport { URL } from 'url'\n\nimport { sendEmail } from '@things-factory/email-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { Invitation } from '../service/invitation/invitation'\nimport { User } from '../service/user/user'\nimport { getInvitationEmailForm } from '../templates/invitation-email'\nimport { makeInvitationToken } from './utils/make-invitation-token'\nimport { saveInvitationToken } from './utils/save-invitation-token'\n\nexport async function invite(attrs, withEmailInvitation?: Boolean) {\n const { email, reference, type, context } = attrs\n\n var user = await getRepository(User).findOne({ where: { email }, relations: ['domains'] })\n var domains = user.domains\n\n // TODO reference should not be a domain.id (security reason)\n\n if (user) {\n const domain = domains.find(domain => domain.id == reference)\n\n if (domain) {\n const msg = `user already a member of the ${type}.`\n throw new Error(msg)\n }\n }\n\n if (withEmailInvitation) {\n var invitation = await getRepository(Invitation).findOne({\n email,\n reference,\n type\n })\n\n if (!invitation) {\n invitation = await getRepository(Invitation).save({\n email,\n reference,\n type\n })\n }\n\n return await sendInvitationEmail({\n invitation,\n context\n })\n }\n\n if (user) {\n user.domains = [...domains, await getRepository(Domain).findOne(reference)]\n await getRepository(User).save(user)\n } else {\n // TODO need to signup\n }\n}\n\nexport async function acceptInvitation(token) {\n var invitation = await getRepository(Invitation).findOne({\n token\n })\n\n if (!invitation) {\n throw new Error(`not found invitation.`)\n }\n\n var { email, reference, type } = invitation\n\n var user = await getRepository(User).findOne({ where: { email }, relations: ['domains'] })\n\n if (user) {\n var domains = user.domains\n const domain = domains.find(domain => domain.id == reference)\n\n if (domain) {\n const msg = `user already a member of the ${type}.`\n throw new Error(msg)\n }\n\n user.domains = [...domains, await getRepository(Domain).findOne(reference)]\n await getRepository(User).save(user)\n\n await getRepository(Invitation).delete(invitation.id)\n } else {\n // TODO goto signup\n }\n\n return true\n}\n\nexport async function sendInvitationEmail({ invitation, context }) {\n try {\n var token = makeInvitationToken()\n var verifaction = await saveInvitationToken(invitation.id, token)\n\n if (verifaction) {\n var serviceUrl = new URL(`/auth/accept/${token}`, context.header.referer)\n\n await sendEmail({\n receiver: invitation.email,\n subject: 'Invitation',\n content: getInvitationEmailForm({\n email: invitation.email,\n acceptUrl: serviceUrl\n })\n })\n\n return true\n }\n } catch (e) {\n return false\n }\n}\n\nexport async function resendInvitationEmail(\n { email, reference, type }: { email: string; reference: string; type: string },\n context\n) {\n var invitation = await getRepository(Invitation).findOne({\n email,\n reference,\n type\n })\n\n if (!invitation) return false\n\n return await sendInvitationEmail({\n invitation,\n context\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../server/controllers/profile.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,wDAAwD;AACxD,+CAA2C;AAC3C,qDAAgD;AAEzC,KAAK,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW;IACrD,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,2BAAc;SAC1B,CAAC,CAAA;KACH;IAED,iEAAiE;IACjE,IAAI,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;SACtC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;SACnC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACpB,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;IAER,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,IAAI,GACJ,OAAO,EACV,CAAA;AACJ,CAAC;AArBD,sCAqBC"}
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../server/controllers/profile.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,wDAAwD;AACxD,+CAA2C;AAC3C,qDAAgD;AAEzC,KAAK,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW;IACrD,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,2BAAc;SAC1B,CAAC,CAAA;KACH;IAED,iEAAiE;IACjE,IAAI,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;SACtC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;SACnC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACpB,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;IAER,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,IAAI,GACJ,OAAO,EACV,CAAA;AACJ,CAAC;AArBD,sCAqBC","sourcesContent":["import { getRepository } from 'typeorm'\nimport { USER_NOT_FOUND } from '../constants/error-code'\nimport { User } from '../service/user/user'\nimport { AuthError } from '../errors/auth-error'\n\nexport async function updateProfile({ id }, newProfiles) {\n const repository = getRepository(User)\n const user = await repository.findOne(id)\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n /* only 'name', 'email' and 'locale' attributes can be changed */\n var allowed = ['name', 'email', 'locale']\n .filter(attr => attr in newProfiles)\n .reduce((sum, attr) => {\n sum[attr] = newProfiles[attr]\n return sum\n }, {})\n\n return await repository.save({\n ...user,\n ...allowed\n })\n}\n"]}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resetPassword = exports.sendPasswordResetEmail = void 0;
|
|
4
|
-
const email_base_1 = require("@things-factory/email-base");
|
|
5
4
|
const typeorm_1 = require("typeorm");
|
|
6
5
|
const url_1 = require("url");
|
|
6
|
+
const email_base_1 = require("@things-factory/email-base");
|
|
7
|
+
const env_1 = require("@things-factory/env");
|
|
8
|
+
const error_code_1 = require("../constants/error-code");
|
|
9
|
+
const auth_error_1 = require("../errors/auth-error");
|
|
10
|
+
const password_history_1 = require("../service/password-history/password-history");
|
|
7
11
|
const user_1 = require("../service/user/user");
|
|
8
12
|
const verification_token_1 = require("../service/verification-token/verification-token");
|
|
9
|
-
const password_history_1 = require("../service/password-history/password-history");
|
|
10
13
|
const reset_password_email_1 = require("../templates/reset-password-email");
|
|
11
14
|
const make_verification_token_1 = require("./utils/make-verification-token");
|
|
12
15
|
const save_verification_token_1 = require("./utils/save-verification-token");
|
|
13
|
-
const env_1 = require("@things-factory/env");
|
|
14
|
-
const error_code_1 = require("../constants/error-code");
|
|
15
|
-
const auth_error_1 = require("../errors/auth-error");
|
|
16
16
|
const HISTORY_SIZE = env_1.config.get('password', { history: 0 }).history;
|
|
17
|
-
const debug = require('debug')('things-factory:auth-base:reset-password');
|
|
18
17
|
async function sendPasswordResetEmail({ user, context }) {
|
|
19
18
|
try {
|
|
20
19
|
var token = (0, make_verification_token_1.makeVerificationToken)();
|
|
@@ -69,12 +68,12 @@ async function resetPassword(token, password, context) {
|
|
|
69
68
|
try {
|
|
70
69
|
history = JSON.parse(passwordHistory.history);
|
|
71
70
|
if (!(history instanceof Array)) {
|
|
72
|
-
|
|
71
|
+
console.error('password history maybe currupted - not an array');
|
|
73
72
|
history = [];
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
75
|
catch (e) {
|
|
77
|
-
|
|
76
|
+
console.error('password history currupted - not json format');
|
|
78
77
|
}
|
|
79
78
|
const found = history.slice(0, HISTORY_SIZE).find(h => {
|
|
80
79
|
return user_1.User.verify(h.password, password, h.salt);
|
|
@@ -104,7 +103,6 @@ async function resetPassword(token, password, context) {
|
|
|
104
103
|
userId: user.id,
|
|
105
104
|
history: JSON.stringify(history)
|
|
106
105
|
});
|
|
107
|
-
debug('password history updated', history.length);
|
|
108
106
|
}
|
|
109
107
|
}
|
|
110
108
|
exports.resetPassword = resetPassword;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset-password.js","sourceRoot":"","sources":["../../server/controllers/reset-password.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"reset-password.js","sourceRoot":"","sources":["../../server/controllers/reset-password.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository } from 'typeorm'\nimport { URL } from 'url'\n\nimport { sendEmail } from '@things-factory/email-base'\nimport { config } from '@things-factory/env'\n\nimport { PASSWORD_USED_PAST } from '../constants/error-code'\nimport { AuthError } from '../errors/auth-error'\nimport { PasswordHistory } from '../service/password-history/password-history'\nimport { User } from '../service/user/user'\nimport { VerificationToken, VerificationTokenType } from '../service/verification-token/verification-token'\nimport { getResetPasswordEmailForm } from '../templates/reset-password-email'\nimport { makeVerificationToken } from './utils/make-verification-token'\nimport { saveVerificationToken } from './utils/save-verification-token'\n\nconst HISTORY_SIZE = config.get('password', { history: 0 }).history\n\nexport async function sendPasswordResetEmail({ user, context }) {\n try {\n var token = makeVerificationToken()\n var verifaction = await saveVerificationToken(user.id, token, VerificationTokenType.PASSWORD_RESET)\n\n if (verifaction) {\n var serviceUrl = new URL(`/auth/reset-password?token=${token}`, context.header.referer)\n await sendEmail({\n receiver: user.email,\n subject: 'Reset your password',\n content: getResetPasswordEmailForm({\n name: user.name,\n resetUrl: serviceUrl\n })\n })\n\n return true\n }\n } catch (e) {\n return false\n }\n}\n\nexport async function resetPassword(token, password, context) {\n const { t } = context\n\n const verificationToken = await getRepository(VerificationToken).findOne({\n where: {\n token,\n type: VerificationTokenType.PASSWORD_RESET\n }\n })\n\n if (!verificationToken) {\n throw new Error(t('text.invalid verification token'))\n }\n\n const { userId } = verificationToken\n if (!userId) {\n throw new Error(t('text.invalid verification token'))\n }\n\n var user = await getRepository(User).findOne(userId)\n if (!user) {\n throw new Error(t('error.user not found'))\n }\n\n // if (user.status == UserStatus.INACTIVE) {\n // throw new Error(t('text.inactive user'))\n // }\n\n /* check if password is following the rule */\n User.validatePasswordByRule(password, context?.lng)\n\n user.password = User.encode(password, user.salt)\n\n if (HISTORY_SIZE > 0) {\n var passwordHistory: PasswordHistory = await getRepository(PasswordHistory).findOne(user.id)\n var history = []\n\n if (passwordHistory) {\n try {\n history = JSON.parse(passwordHistory.history)\n if (!(history instanceof Array)) {\n console.error('password history maybe currupted - not an array')\n history = []\n }\n } catch (e) {\n console.error('password history currupted - not json format')\n }\n\n const found = history.slice(0, HISTORY_SIZE).find(h => {\n return User.verify(h.password, password, h.salt)\n })\n\n if (found) {\n throw new AuthError({\n errorCode: PASSWORD_USED_PAST\n })\n }\n }\n }\n\n await getRepository(User).save({\n ...user,\n passwordUpdatedAt: new Date()\n })\n\n await getRepository(VerificationToken).delete({\n userId,\n token,\n type: VerificationTokenType.PASSWORD_RESET\n })\n\n if (HISTORY_SIZE > 0) {\n history = [\n {\n password: user.password,\n salt: user.salt\n },\n ...history\n ].slice(0, HISTORY_SIZE)\n\n await getRepository(PasswordHistory).save({\n userId: user.id,\n history: JSON.stringify(history)\n })\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signin.js","sourceRoot":"","sources":["../../server/controllers/signin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signin.js","sourceRoot":"","sources":["../../server/controllers/signin.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository } from 'typeorm'\nimport { sendUnlockUserEmail } from '../controllers/unlock-user'\nimport { User, UserStatus } from '../service/user/user'\nimport { AuthError } from '../errors/auth-error'\n\nexport async function signin(attrs, context?) {\n const { domain } = context?.state || {}\n\n const repository = getRepository(User)\n const user = await repository.findOne({ where: { email: attrs.email }, relations: ['domains'] })\n if (!user)\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n\n if (user.status == UserStatus.DELETED) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_DELETED\n })\n }\n\n if (user.status == UserStatus.LOCKED) {\n sendUnlockUserEmail({\n user,\n context\n })\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_LOCKED,\n detail: {\n email: user.email\n }\n })\n }\n\n if (!User.verify(user.password, attrs.password, user.salt)) {\n user.failCount++\n if (user.failCount >= 5) user.status = UserStatus.LOCKED\n await repository.save(user)\n if (user.status == UserStatus.LOCKED) {\n sendUnlockUserEmail({\n user,\n context\n })\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_LOCKED,\n detail: {\n email: user.email\n }\n })\n }\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.PASSWORD_NOT_MATCHED,\n detail: {\n failCount: user.failCount\n }\n })\n } else {\n user.failCount = 0\n await repository.save(user)\n }\n\n if (user.status == UserStatus.INACTIVE) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_ACTIVATED,\n detail: {\n email: user.email\n }\n })\n }\n\n return {\n user,\n token: await user.sign({ subdomain: domain?.subdomain }),\n domains: user.domains || []\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../server/controllers/signup.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,+CAA2C;AAC3C,iDAAsD;AACtD,qCAAiC;AACjC,qDAAgD;AAChD,wDAAyD;AAElD,KAAK,UAAU,MAAM,CAAC,KAAK,EAAE,qBAA+B;IACjE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAElD,6CAA6C;IAC7C,WAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IAElD,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAA;IACtC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/C,IAAI,GAAG,EAAE;QACP,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,4BAAe;SAC3B,CAAC,CAAA;KACH;IAED,MAAM,IAAI,GAAG,WAAI,CAAC,YAAY,EAAE,CAAA;IAEhC,IAAI,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,+BAC9B,QAAQ,EAAE,MAAM,IACb,KAAK,KACR,IAAI,EACJ,QAAQ,EAAE,WAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EACrC,iBAAiB,EAAE,IAAI,IAAI,EAAE,EAC7B,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAC/B,CAAA;IAEF,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,qBAAqB,EAAE;QACzB,OAAO,GAAG,MAAM,IAAA,oCAAqB,EAAC;YACpC,OAAO;YACP,IAAI;SACL,CAAC,CAAA;KACH;IAED,IAAI;QACF,OAAO;YACL,KAAK,EAAE,MAAM,IAAA,eAAM,EACjB;gBACE,KAAK;gBACL,QAAQ;aACT,EACD,EAAE,MAAM,EAAE,CACX;SACF,CAAA;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;KACvB;AACH,CAAC;AA9CD,wBA8CC"}
|
|
1
|
+
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../server/controllers/signup.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,+CAA2C;AAC3C,iDAAsD;AACtD,qCAAiC;AACjC,qDAAgD;AAChD,wDAAyD;AAElD,KAAK,UAAU,MAAM,CAAC,KAAK,EAAE,qBAA+B;IACjE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAElD,6CAA6C;IAC7C,WAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IAElD,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAA;IACtC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/C,IAAI,GAAG,EAAE;QACP,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,4BAAe;SAC3B,CAAC,CAAA;KACH;IAED,MAAM,IAAI,GAAG,WAAI,CAAC,YAAY,EAAE,CAAA;IAEhC,IAAI,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,+BAC9B,QAAQ,EAAE,MAAM,IACb,KAAK,KACR,IAAI,EACJ,QAAQ,EAAE,WAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EACrC,iBAAiB,EAAE,IAAI,IAAI,EAAE,EAC7B,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAC/B,CAAA;IAEF,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,qBAAqB,EAAE;QACzB,OAAO,GAAG,MAAM,IAAA,oCAAqB,EAAC;YACpC,OAAO;YACP,IAAI;SACL,CAAC,CAAA;KACH;IAED,IAAI;QACF,OAAO;YACL,KAAK,EAAE,MAAM,IAAA,eAAM,EACjB;gBACE,KAAK;gBACL,QAAQ;aACT,EACD,EAAE,MAAM,EAAE,CACX;SACF,CAAA;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;KACvB;AACH,CAAC;AA9CD,wBA8CC","sourcesContent":["import { getRepository } from 'typeorm'\nimport { User } from '../service/user/user'\nimport { sendVerificationEmail } from './verification'\nimport { signin } from './signin'\nimport { AuthError } from '../errors/auth-error'\nimport { USER_DUPLICATED } from '../constants/error-code'\n\nexport async function signup(attrs, withEmailVerification?: Boolean) {\n const { email, password, domain, context } = attrs\n\n /* check if password is following the rule */\n User.validatePasswordByRule(password, context.lng)\n\n const repository = getRepository(User)\n const old = await repository.findOne({ email })\n if (old) {\n throw new AuthError({\n errorCode: USER_DUPLICATED\n })\n }\n\n const salt = User.generateSalt()\n\n var user = await repository.save({\n userType: 'user',\n ...attrs,\n salt,\n password: User.encode(password, salt),\n passwordUpdatedAt: new Date(),\n domains: domain ? [domain] : []\n })\n\n var succeed = false\n if (withEmailVerification) {\n succeed = await sendVerificationEmail({\n context,\n user\n })\n }\n\n try {\n return {\n token: await signin(\n {\n email,\n password\n },\n { domain }\n )\n }\n } catch (e) {\n return { token: null }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlock-user.js","sourceRoot":"","sources":["../../server/controllers/unlock-user.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AACtD,qCAAuC;AACvC,6BAAyB;AACzB,+CAAuD;AACvD,yFAA2G;AAC3G,4EAA0E;AAC1E,6EAAuE;AACvE,6EAAuE;AAEhE,KAAK,UAAU,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IACzD,IAAI;QACF,IAAI,KAAK,GAAG,IAAA,+CAAqB,GAAE,CAAA;QACnC,IAAI,WAAW,GAAG,MAAM,IAAA,+CAAqB,EAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,0CAAqB,CAAC,MAAM,CAAC,CAAA;QAE3F,IAAI,WAAW,EAAE;YACf,IAAI,UAAU,GAAG,IAAI,SAAG,CAAC,2BAA2B,KAAK,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACpF,MAAM,IAAA,sBAAS,EAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,KAAK;gBACpB,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,IAAA,6CAAsB,EAAC;oBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,UAAU;iBACrB,CAAC;aACH,CAAC,CAAA;YAEF,OAAO,IAAI,CAAA;SACZ;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAA;KACb;AACH,CAAC;AArBD,kDAqBC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAK,EAAE,QAAQ;IAC9C,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAC,OAAO,CAAC;QAC9D,KAAK,EAAE;YACL,KAAK;YACL,IAAI,EAAE,0CAAqB,CAAC,MAAM;SACnC;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEzB,IAAI,QAAQ,GAAG,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,QAAQ,CAAC,MAAM,IAAI,iBAAU,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEtD,QAAQ,CAAC,MAAM,GAAG,iBAAU,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,QAAQ,GAAG,WAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAA;IAEtB,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAC,MAAM,CAAC;QAC5C,MAAM;QACN,KAAK;QACL,IAAI,EAAE,0CAAqB,CAAC,MAAM;KACnC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC;AA1BD,gCA0BC"}
|
|
1
|
+
{"version":3,"file":"unlock-user.js","sourceRoot":"","sources":["../../server/controllers/unlock-user.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AACtD,qCAAuC;AACvC,6BAAyB;AACzB,+CAAuD;AACvD,yFAA2G;AAC3G,4EAA0E;AAC1E,6EAAuE;AACvE,6EAAuE;AAEhE,KAAK,UAAU,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IACzD,IAAI;QACF,IAAI,KAAK,GAAG,IAAA,+CAAqB,GAAE,CAAA;QACnC,IAAI,WAAW,GAAG,MAAM,IAAA,+CAAqB,EAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,0CAAqB,CAAC,MAAM,CAAC,CAAA;QAE3F,IAAI,WAAW,EAAE;YACf,IAAI,UAAU,GAAG,IAAI,SAAG,CAAC,2BAA2B,KAAK,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACpF,MAAM,IAAA,sBAAS,EAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,KAAK;gBACpB,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,IAAA,6CAAsB,EAAC;oBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,UAAU;iBACrB,CAAC;aACH,CAAC,CAAA;YAEF,OAAO,IAAI,CAAA;SACZ;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAA;KACb;AACH,CAAC;AArBD,kDAqBC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAK,EAAE,QAAQ;IAC9C,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAC,OAAO,CAAC;QAC9D,KAAK,EAAE;YACL,KAAK;YACL,IAAI,EAAE,0CAAqB,CAAC,MAAM;SACnC;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEzB,IAAI,QAAQ,GAAG,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,QAAQ,CAAC,MAAM,IAAI,iBAAU,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEtD,QAAQ,CAAC,MAAM,GAAG,iBAAU,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,QAAQ,GAAG,WAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAA;IAEtB,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAC,MAAM,CAAC;QAC5C,MAAM;QACN,KAAK;QACL,IAAI,EAAE,0CAAqB,CAAC,MAAM;KACnC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC;AA1BD,gCA0BC","sourcesContent":["import { sendEmail } from '@things-factory/email-base'\nimport { getRepository } from 'typeorm'\nimport { URL } from 'url'\nimport { User, UserStatus } from '../service/user/user'\nimport { VerificationToken, VerificationTokenType } from '../service/verification-token/verification-token'\nimport { getUnlockUserEmailForm } from '../templates/account-unlock-email'\nimport { makeVerificationToken } from './utils/make-verification-token'\nimport { saveVerificationToken } from './utils/save-verification-token'\n\nexport async function sendUnlockUserEmail({ user, context }) {\n try {\n var token = makeVerificationToken()\n var verifaction = await saveVerificationToken(user.id, token, VerificationTokenType.UNLOCK)\n\n if (verifaction) {\n var serviceUrl = new URL(`/auth/unlock-user?token=${token}`, context.header.referer)\n await sendEmail({\n receiver: user.email,\n subject: 'Your account is locked',\n content: getUnlockUserEmailForm({\n name: user.name,\n resetUrl: serviceUrl\n })\n })\n\n return true\n }\n } catch (e) {\n return false\n }\n}\n\nexport async function unlockUser(token, password) {\n var { userId } = await getRepository(VerificationToken).findOne({\n where: {\n token,\n type: VerificationTokenType.UNLOCK\n }\n })\n\n if (!userId) return false\n\n var userInfo = await getRepository(User).findOne(userId)\n if (!userInfo) return false\n if (userInfo.status != UserStatus.LOCKED) return false\n\n userInfo.status = UserStatus.ACTIVATED\n userInfo.password = User.encode(password, userInfo.salt)\n userInfo.failCount = 0\n\n await getRepository(User).save(userInfo)\n await getRepository(VerificationToken).delete({\n userId,\n token,\n type: VerificationTokenType.UNLOCK\n })\n\n return true\n}\n"]}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.makeInvitationToken = void 0;
|
|
7
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const crypto_1 = tslib_1.__importDefault(require("crypto"));
|
|
8
6
|
function makeInvitationToken() {
|
|
9
7
|
return crypto_1.default.randomBytes(16).toString('hex');
|
|
10
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-invitation-token.js","sourceRoot":"","sources":["../../../server/controllers/utils/make-invitation-token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"make-invitation-token.js","sourceRoot":"","sources":["../../../server/controllers/utils/make-invitation-token.ts"],"names":[],"mappings":";;;;AAAA,4DAA2B;AAE3B,SAAgB,mBAAmB;IACjC,OAAO,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/C,CAAC;AAFD,kDAEC","sourcesContent":["import crypto from 'crypto'\n\nexport function makeInvitationToken() {\n return crypto.randomBytes(16).toString('hex')\n}\n"]}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.makeVerificationToken = void 0;
|
|
7
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const crypto_1 = tslib_1.__importDefault(require("crypto"));
|
|
8
6
|
function makeVerificationToken() {
|
|
9
7
|
return crypto_1.default.randomBytes(16).toString('hex');
|
|
10
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-verification-token.js","sourceRoot":"","sources":["../../../server/controllers/utils/make-verification-token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"make-verification-token.js","sourceRoot":"","sources":["../../../server/controllers/utils/make-verification-token.ts"],"names":[],"mappings":";;;;AAAA,4DAA2B;AAC3B,SAAgB,qBAAqB;IACnC,OAAO,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/C,CAAC;AAFD,sDAEC","sourcesContent":["import crypto from 'crypto'\nexport function makeVerificationToken() {\n return crypto.randomBytes(16).toString('hex')\n}\n"]}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.validatePasswordByRule = exports.passwordHelp = exports.passwordPattern = exports.generatePasswordPatternHelp = void 0;
|
|
7
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const i18next_1 = tslib_1.__importDefault(require("i18next"));
|
|
8
6
|
const env_1 = require("@things-factory/env");
|
|
9
7
|
const error_code_1 = require("../../constants/error-code");
|
|
10
8
|
const auth_error_1 = require("../../errors/auth-error");
|
|
11
|
-
const debug = require('debug')('things-factory:auth-base:password-rule');
|
|
12
9
|
const passwordConfig = env_1.config.get('password') || {
|
|
13
10
|
lowerCase: true,
|
|
14
11
|
upperCase: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-rule.js","sourceRoot":"","sources":["../../../server/controllers/utils/password-rule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"password-rule.js","sourceRoot":"","sources":["../../../server/controllers/utils/password-rule.ts"],"names":[],"mappings":"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","sourcesContent":["import i18next from 'i18next'\n\nimport { config } from '@things-factory/env'\n\nimport { PASSWORD_PATTERN_NOT_MATCHED } from '../../constants/error-code'\nimport { AuthError } from '../../errors/auth-error'\n\nconst passwordConfig = config.get('password') || {\n lowerCase: true,\n upperCase: true,\n digit: true,\n specialCharacter: true,\n allowRepeat: false,\n useTightPattern: true,\n useLoosePattern: false,\n tightCharacterLength: 8,\n looseCharacterLength: 15\n}\n\nfunction generatePasswordPatternRegExp({\n lowerCase = true,\n upperCase = true,\n digit = true,\n specialCharacter = true,\n allowRepeat = false,\n useTightPattern = true,\n useLoosePattern = false,\n tightCharacterLength = 8,\n looseCharacterLength = 15\n} = {}) {\n var tightChecklist = useTightPattern\n ? [\n lowerCase ? '(?=.*[a-z])' : '', // has at least one lower case character\n upperCase ? '(?=.*[A-Z])' : '', // has at least one upper case character\n digit ? '(?=.*\\\\d)' : '', // has at least one digit\n specialCharacter ? '(?=.*[!@#$%^&*()])' : '', // has at least one special character\n !allowRepeat ? '(?!.*(.)\\\\1(?=\\\\1{1,}))' : '', // has not an repeated character more than twice\n `.{${tightCharacterLength},}` // has a length of 8 and more\n ]\n : []\n\n var looseChecklist = useLoosePattern\n ? [\n `.{${looseCharacterLength},}` // has a length of 15 and more\n ]\n : []\n\n var checkList = [\n '^', // from start\n ...tightChecklist,\n tightChecklist.length && looseChecklist.length ? '|' : '',\n ...looseChecklist,\n '$' //to the end\"\n ]\n\n return new RegExp(checkList.join(''))\n}\n\nexport function generatePasswordPatternHelp(\n {\n lowerCase = true,\n upperCase = true,\n digit = true,\n specialCharacter = true,\n allowRepeat = false,\n useTightPattern = true,\n useLoosePattern = false,\n tightCharacterLength = 8,\n looseCharacterLength = 15\n } = {},\n lng\n) {\n lng = lng || 'en-US'\n var descriptions = []\n\n const t = i18next.getFixedT(lng, 'translations')\n\n if (useLoosePattern) {\n descriptions.push(`more than ${looseCharacterLength} characters`)\n }\n\n if (useTightPattern) {\n !useLoosePattern &&\n descriptions.push(\n t('text.pattern_minimum_charaters', {\n length: tightCharacterLength\n })\n )\n lowerCase && descriptions.push(t('text.pattern_atleast_1_lowercase'))\n upperCase && descriptions.push(t('text.pattern_atleast_1_uppercase'))\n digit && descriptions.push(t('text.pattern_atleast_1_digit'))\n specialCharacter && descriptions.push(t('text.pattern_atleast_1_special'))\n !allowRepeat && descriptions.push(t('text.pattern_not_allowed'))\n }\n\n return descriptions.join(', ')\n}\n\nexport const passwordPattern = generatePasswordPatternRegExp(passwordConfig)\nexport function passwordHelp(lng) {\n return generatePasswordPatternHelp(passwordConfig, lng)\n}\n\nexport function validatePasswordByRule(password, lng) {\n if (!passwordPattern) {\n return\n }\n\n if (passwordPattern.test(password)) {\n return\n }\n\n const rule = generatePasswordPatternHelp(passwordConfig, lng)\n throw new AuthError({\n errorCode: PASSWORD_PATTERN_NOT_MATCHED,\n detail: {\n rule\n }\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-invitation-token.js","sourceRoot":"","sources":["../../../server/controllers/utils/save-invitation-token.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,oEAAgE;AAEzD,KAAK,UAAU,mBAAmB,CAAC,EAAE,EAAE,KAAK;IACjD,OAAO,MAAM,IAAA,uBAAa,EAAC,uBAAU,CAAC,CAAC,IAAI,CAAC;QAC1C,EAAE;QACF,KAAK;KACN,CAAC,CAAA;AACJ,CAAC;AALD,kDAKC"}
|
|
1
|
+
{"version":3,"file":"save-invitation-token.js","sourceRoot":"","sources":["../../../server/controllers/utils/save-invitation-token.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,oEAAgE;AAEzD,KAAK,UAAU,mBAAmB,CAAC,EAAE,EAAE,KAAK;IACjD,OAAO,MAAM,IAAA,uBAAa,EAAC,uBAAU,CAAC,CAAC,IAAI,CAAC;QAC1C,EAAE;QACF,KAAK;KACN,CAAC,CAAA;AACJ,CAAC;AALD,kDAKC","sourcesContent":["import { getRepository } from 'typeorm'\nimport { Invitation } from '../../service/invitation/invitation'\n\nexport async function saveInvitationToken(id, token) {\n return await getRepository(Invitation).save({\n id,\n token\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-verification-token.js","sourceRoot":"","sources":["../../../server/controllers/utils/save-verification-token.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,4FAA8G;AAEvG,KAAK,UAAU,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,0CAAqB,CAAC,UAAU;IAC5F,MAAM,gBAAgB,GAAG,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAA;IACzD,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC;QACjC,MAAM,EAAE,EAAE;QACV,KAAK;QACL,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AAPD,sDAOC"}
|
|
1
|
+
{"version":3,"file":"save-verification-token.js","sourceRoot":"","sources":["../../../server/controllers/utils/save-verification-token.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,4FAA8G;AAEvG,KAAK,UAAU,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,0CAAqB,CAAC,UAAU;IAC5F,MAAM,gBAAgB,GAAG,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAA;IACzD,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC;QACjC,MAAM,EAAE,EAAE;QACV,KAAK;QACL,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AAPD,sDAOC","sourcesContent":["import { getRepository } from 'typeorm'\nimport { VerificationToken, VerificationTokenType } from '../../service/verification-token/verification-token'\n\nexport async function saveVerificationToken(id, token, type = VerificationTokenType.ACTIVATION) {\n const verificationRepo = getRepository(VerificationToken)\n return await verificationRepo.save({\n userId: id,\n token,\n type\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../server/controllers/verification.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AACtD,qCAAuC;AACvC,6BAAyB;AACzB,+CAAuD;AACvD,yFAAoF;AACpF,wEAA0E;AAC1E,6EAAuE;AACvE,6EAAuE;AACvE,qDAAgD;AAEzC,KAAK,UAAU,qBAAqB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3D,IAAI;QACF,IAAI,KAAK,GAAG,IAAA,+CAAqB,GAAE,CAAA;QACnC,IAAI,WAAW,GAAG,MAAM,IAAA,+CAAqB,EAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAE7D,IAAI,WAAW,EAAE;YACf,IAAI,UAAU,GAAG,IAAI,SAAG,CAAC,gBAAgB,KAAK,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACzE,MAAM,IAAA,sBAAS,EAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,KAAK;gBACpB,OAAO,EAAE,mBAAmB;gBAC5B,OAAO,EAAE,IAAA,6CAAwB,EAAC;oBAChC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,UAAU;iBACtB,CAAC;aACH,CAAC,CAAA;YAEF,OAAO,IAAI,CAAA;SACZ;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAA;KACb;AACH,CAAC;AArBD,sDAqBC;AAEM,KAAK,UAAU,MAAM,CAAC,KAAK;IAChC,IAAI,YAAY,GAAG,MAAM,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAC,OAAO,CAAC;QAChE,KAAK,EAAE;YACL,KAAK;SACN;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,sBAAS,CAAC,WAAW,CAAC,kBAAkB;SACpD,CAAC,CAAA;KACH;IAED,IAAI,QAAQ,GAAG,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACrE,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,sBAAS,CAAC,WAAW,CAAC,kBAAkB;SACpD,CAAC,CAAA;KACH;IAED,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,iBAAU,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,iBAAU,CAAC,MAAM,CAAC,EAAE;QACrF,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,sBAAS,CAAC,WAAW,CAAC,kBAAkB;SACpD,CAAC,CAAA;KACH;IAED,QAAQ,CAAC,MAAM,GAAG,iBAAU,CAAC,SAAS,CAAA;IACtC,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAC7D,CAAC;AA7BD,wBA6BC;AAEM,KAAK,UAAU,uBAAuB,CAAC,KAAK,EAAE,OAAO;IAC1D,IAAI,IAAI,GAAG,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC;QAC3C,KAAK,EAAE;YACL,KAAK;SACN;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IACvB,IAAI,IAAI,CAAC,MAAM,IAAI,iBAAU,CAAC,SAAS;QAAE,OAAO,KAAK,CAAA;IAErD,OAAO,MAAM,qBAAqB,CAAC;QACjC,IAAI;QACJ,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAdD,0DAcC"}
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../server/controllers/verification.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AACtD,qCAAuC;AACvC,6BAAyB;AACzB,+CAAuD;AACvD,yFAAoF;AACpF,wEAA0E;AAC1E,6EAAuE;AACvE,6EAAuE;AACvE,qDAAgD;AAEzC,KAAK,UAAU,qBAAqB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3D,IAAI;QACF,IAAI,KAAK,GAAG,IAAA,+CAAqB,GAAE,CAAA;QACnC,IAAI,WAAW,GAAG,MAAM,IAAA,+CAAqB,EAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAE7D,IAAI,WAAW,EAAE;YACf,IAAI,UAAU,GAAG,IAAI,SAAG,CAAC,gBAAgB,KAAK,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACzE,MAAM,IAAA,sBAAS,EAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,KAAK;gBACpB,OAAO,EAAE,mBAAmB;gBAC5B,OAAO,EAAE,IAAA,6CAAwB,EAAC;oBAChC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,UAAU;iBACtB,CAAC;aACH,CAAC,CAAA;YAEF,OAAO,IAAI,CAAA;SACZ;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAA;KACb;AACH,CAAC;AArBD,sDAqBC;AAEM,KAAK,UAAU,MAAM,CAAC,KAAK;IAChC,IAAI,YAAY,GAAG,MAAM,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAC,OAAO,CAAC;QAChE,KAAK,EAAE;YACL,KAAK;SACN;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,sBAAS,CAAC,WAAW,CAAC,kBAAkB;SACpD,CAAC,CAAA;KACH;IAED,IAAI,QAAQ,GAAG,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACrE,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,sBAAS,CAAC,WAAW,CAAC,kBAAkB;SACpD,CAAC,CAAA;KACH;IAED,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,iBAAU,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,iBAAU,CAAC,MAAM,CAAC,EAAE;QACrF,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,sBAAS,CAAC,WAAW,CAAC,kBAAkB;SACpD,CAAC,CAAA;KACH;IAED,QAAQ,CAAC,MAAM,GAAG,iBAAU,CAAC,SAAS,CAAA;IACtC,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAA,uBAAa,EAAC,sCAAiB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAC7D,CAAC;AA7BD,wBA6BC;AAEM,KAAK,UAAU,uBAAuB,CAAC,KAAK,EAAE,OAAO;IAC1D,IAAI,IAAI,GAAG,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC;QAC3C,KAAK,EAAE;YACL,KAAK;SACN;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IACvB,IAAI,IAAI,CAAC,MAAM,IAAI,iBAAU,CAAC,SAAS;QAAE,OAAO,KAAK,CAAA;IAErD,OAAO,MAAM,qBAAqB,CAAC;QACjC,IAAI;QACJ,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAdD,0DAcC","sourcesContent":["import { sendEmail } from '@things-factory/email-base'\nimport { getRepository } from 'typeorm'\nimport { URL } from 'url'\nimport { User, UserStatus } from '../service/user/user'\nimport { VerificationToken } from '../service/verification-token/verification-token'\nimport { getVerificationEmailForm } from '../templates/verification-email'\nimport { makeVerificationToken } from './utils/make-verification-token'\nimport { saveVerificationToken } from './utils/save-verification-token'\nimport { AuthError } from '../errors/auth-error'\n\nexport async function sendVerificationEmail({ user, context }) {\n try {\n var token = makeVerificationToken()\n var verifaction = await saveVerificationToken(user.id, token)\n\n if (verifaction) {\n var serviceUrl = new URL(`/auth/verify/${token}`, context.header.referer)\n await sendEmail({\n receiver: user.email,\n subject: 'Verify your email',\n content: getVerificationEmailForm({\n name: user.name,\n verifyUrl: serviceUrl\n })\n })\n\n return true\n }\n } catch (e) {\n return false\n }\n}\n\nexport async function verify(token) {\n var verification = await getRepository(VerificationToken).findOne({\n where: {\n token\n }\n })\n\n if (!verification) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.VERIFICATION_ERROR\n })\n }\n\n var userInfo = await getRepository(User).findOne(verification.userId)\n if (!userInfo) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.VERIFICATION_ERROR\n })\n }\n\n if (!(userInfo.status == UserStatus.INACTIVE || userInfo.status == UserStatus.LOCKED)) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.VERIFICATION_ERROR\n })\n }\n\n userInfo.status = UserStatus.ACTIVATED\n await getRepository(User).save(userInfo)\n await getRepository(VerificationToken).delete(verification)\n}\n\nexport async function resendVerificationEmail(email, context) {\n var user = await getRepository(User).findOne({\n where: {\n email\n }\n })\n\n if (!user) return false\n if (user.status == UserStatus.ACTIVATED) return false\n\n return await sendVerificationEmail({\n user,\n context\n })\n}\n"]}
|
|
@@ -1,30 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.AuthError = void 0;
|
|
27
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ERROR_CODES = tslib_1.__importStar(require("../constants/error-code"));
|
|
28
6
|
class AuthError extends Error {
|
|
29
7
|
constructor({ errorCode, detail }) {
|
|
30
8
|
super(errorCode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-error.js","sourceRoot":"","sources":["../../server/errors/auth-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-error.js","sourceRoot":"","sources":["../../server/errors/auth-error.ts"],"names":[],"mappings":";;;;AAAA,6EAAsD;AAMtD,MAAa,SAAU,SAAQ,KAAK;IAQlC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAqB;QAClD,KAAK,CAAC,SAAS,CAAC,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAZD,MAAM,KAAK,WAAW;QACpB,yBACK,WAAW,EACf;IACH,CAAC;CASF;AAdD,8BAcC","sourcesContent":["import * as ERROR_CODES from '../constants/error-code'\n\ntype AuthErrorArgument = {\n errorCode: string\n detail?: Object\n}\nexport class AuthError extends Error {\n static get ERROR_CODES(): any {\n return {\n ...ERROR_CODES\n }\n }\n errorCode: any\n detail: Object\n constructor({ errorCode, detail }: AuthErrorArgument) {\n super(errorCode)\n this.name = 'auth-error'\n this.errorCode = errorCode\n this.detail = detail\n }\n}\n"]}
|
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
__exportStar(require("./
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./auth-error"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./user-domain-not-match-error"), exports);
|
|
19
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/errors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/errors/index.ts"],"names":[],"mappings":";;;AAAA,uDAA4B;AAC5B,wEAA6C","sourcesContent":["export * from './auth-error'\nexport * from './user-domain-not-match-error'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-domain-not-match-error.js","sourceRoot":"","sources":["../../server/errors/user-domain-not-match-error.ts"],"names":[],"mappings":";;;AAAA,wDAKgC;AAChC,6CAAwC;AAExC,MAAa,WAAY,SAAQ,sBAAS;IAUxC,YAAY,EAAE,SAAS,GAAG,+BAAkB,EAAE,OAAO,EAAE;QACrD,KAAK,CAAC;YACJ,SAAS;SACV,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAfD,MAAM,KAAK,WAAW;QACpB,OAAO;YACL,kBAAkB,EAAlB,+BAAkB;YAClB,mBAAmB,EAAnB,gCAAmB;YACnB,kBAAkB,EAAlB,+BAAkB;YAClB,0BAA0B,EAA1B,uCAA0B;SAC3B,CAAA;IACH,CAAC;CASF;AAjBD,kCAiBC"}
|
|
1
|
+
{"version":3,"file":"user-domain-not-match-error.js","sourceRoot":"","sources":["../../server/errors/user-domain-not-match-error.ts"],"names":[],"mappings":";;;AAAA,wDAKgC;AAChC,6CAAwC;AAExC,MAAa,WAAY,SAAQ,sBAAS;IAUxC,YAAY,EAAE,SAAS,GAAG,+BAAkB,EAAE,OAAO,EAAE;QACrD,KAAK,CAAC;YACJ,SAAS;SACV,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAfD,MAAM,KAAK,WAAW;QACpB,OAAO;YACL,kBAAkB,EAAlB,+BAAkB;YAClB,mBAAmB,EAAnB,gCAAmB;YACnB,kBAAkB,EAAlB,+BAAkB;YAClB,0BAA0B,EAA1B,uCAA0B;SAC3B,CAAA;IACH,CAAC;CASF;AAjBD,kCAiBC","sourcesContent":["import {\n NO_AVAILABLE_DOMAIN,\n NO_SELECTED_DOMAIN,\n REDIRECT_TO_DEFAULT_DOMAIN,\n UNAVAILABLE_DOMAIN\n} from '../constants/error-code'\nimport { AuthError } from './auth-error'\n\nexport class DomainError extends AuthError {\n static get ERROR_CODES(): any {\n return {\n UNAVAILABLE_DOMAIN,\n NO_AVAILABLE_DOMAIN,\n NO_SELECTED_DOMAIN,\n REDIRECT_TO_DEFAULT_DOMAIN\n }\n }\n domains: any\n constructor({ errorCode = UNAVAILABLE_DOMAIN, domains }) {\n super({\n errorCode\n })\n this.name = 'user-domain-not-match'\n this.domains = domains\n }\n}\n"]}
|
package/dist-server/index.js
CHANGED
|
@@ -1,29 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("./
|
|
21
|
-
__exportStar(require("./
|
|
22
|
-
__exportStar(require("./
|
|
23
|
-
__exportStar(require("./utils/get-
|
|
24
|
-
__exportStar(require("./utils/get-
|
|
25
|
-
__exportStar(require("./utils/
|
|
26
|
-
__exportStar(require("./utils/
|
|
27
|
-
__exportStar(require("./
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./service"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./migrations"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./middlewares"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./routes"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./router"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./utils/get-domain-users"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./utils/get-user-domains"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./utils/get-secret"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./utils/check-user-belongs-domain"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./utils/access-token-cookie"), exports);
|
|
14
|
+
tslib_1.__exportStar(require("./errors"), exports);
|
|
28
15
|
require("./routes");
|
|
29
16
|
//# sourceMappingURL=index.js.map
|