@things-factory/operato-hub 6.0.0-alpha.18 → 6.0.0-alpha.20
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/_index.html +2 -0
- package/client/bootstrap.js +4 -3
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain.js +2 -1
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain.js.map +1 -1
- package/dist-server/controllers/company-initializer/business-register.js +2 -1
- package/dist-server/controllers/company-initializer/business-register.js.map +1 -1
- package/dist-server/controllers/invitation.js +2 -1
- package/dist-server/controllers/invitation.js.map +1 -1
- package/dist-server/graphql/resolvers/generators/generate-company.js +2 -1
- package/dist-server/graphql/resolvers/generators/generate-company.js.map +1 -1
- package/dist-server/graphql/resolvers/generators/update-domain-extType.js +2 -1
- package/dist-server/graphql/resolvers/generators/update-domain-extType.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +42 -42
- package/server/controllers/bizplace-initializer/generate-bizplace-domain.ts +2 -2
- package/server/controllers/company-initializer/business-register.ts +2 -2
- package/server/controllers/invitation.ts +2 -1
- package/server/graphql/resolvers/generators/generate-company.ts +2 -1
- package/server/graphql/resolvers/generators/update-domain-extType.ts +2 -2
- package/views/auth-page.html +4 -0
- package/views/public/business-register.html +2 -0
- package/views/public/home.html +2 -0
package/_index.html
CHANGED
|
@@ -57,6 +57,8 @@
|
|
|
57
57
|
padding: 0;
|
|
58
58
|
overflow: hidden;
|
|
59
59
|
|
|
60
|
+
overscroll-behavior-y: none;
|
|
61
|
+
|
|
60
62
|
/* This is a font-stack that tries to use the system-default sans-serifs first */
|
|
61
63
|
font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
|
62
64
|
line-height: 1.5;
|
package/client/bootstrap.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '@operato/i18n/ox-i18n.js'
|
|
1
2
|
import '@things-factory/auth-ui' /* for domain-switch */
|
|
2
3
|
import '@things-factory/notification'
|
|
3
4
|
import './viewparts/user-circle'
|
|
@@ -48,7 +49,7 @@ export default function bootstrap() {
|
|
|
48
49
|
type: ADD_MORENDA,
|
|
49
50
|
morenda: {
|
|
50
51
|
icon: html` <mwc-icon>help</mwc-icon> `,
|
|
51
|
-
name: html` <i18n
|
|
52
|
+
name: html` <ox-i18n msgid="text.help"></ox-i18n> `,
|
|
52
53
|
action: () => {
|
|
53
54
|
navigate('help')
|
|
54
55
|
}
|
|
@@ -101,7 +102,7 @@ export default function bootstrap() {
|
|
|
101
102
|
type: ADD_MORENDA,
|
|
102
103
|
morenda: {
|
|
103
104
|
icon: html` <mwc-icon>device_hub</mwc-icon> `,
|
|
104
|
-
name: html` <i18n
|
|
105
|
+
name: html` <ox-i18n msgid="text.connection"></ox-i18n> `,
|
|
105
106
|
action: () => {
|
|
106
107
|
navigate('connection')
|
|
107
108
|
}
|
|
@@ -112,7 +113,7 @@ export default function bootstrap() {
|
|
|
112
113
|
type: ADD_MORENDA,
|
|
113
114
|
morenda: {
|
|
114
115
|
icon: html` <mwc-icon>format_list_numbered</mwc-icon> `,
|
|
115
|
-
name: html` <i18n
|
|
116
|
+
name: html` <ox-i18n msgid="text.scenario"></ox-i18n> `,
|
|
116
117
|
action: () => {
|
|
117
118
|
navigate('scenario')
|
|
118
119
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateBizplaceDomain = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
4
5
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
5
6
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
7
|
const shell_1 = require("@things-factory/shell");
|
|
@@ -36,7 +37,7 @@ async function createDomain(tx, bizplace, user) {
|
|
|
36
37
|
}
|
|
37
38
|
async function createDomainUser(tx, domain, email) {
|
|
38
39
|
const userRepo = tx.getRepository(auth_base_1.User);
|
|
39
|
-
let user = await userRepo.findOne({ where: { email }, relations: ['domains', 'roles'] });
|
|
40
|
+
let user = await userRepo.findOne({ where: { email: (0, typeorm_1.ILike)(email) }, relations: ['domains', 'roles'] });
|
|
40
41
|
user.domains.push(domain);
|
|
41
42
|
await userRepo.save(user);
|
|
42
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-bizplace-domain.js","sourceRoot":"","sources":["../../../server/controllers/bizplace-initializer/generate-bizplace-domain.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"generate-bizplace-domain.js","sourceRoot":"","sources":["../../../server/controllers/bizplace-initializer/generate-bizplace-domain.ts"],"names":[],"mappings":";;;AAAA,qCAA0D;AAE1D,yDAAgD;AAChD,uDAAmD;AACnD,iDAA8C;AAC9C,iDAA+C;AAExC,KAAK,UAAU,sBAAsB,CAAC,UAAkB,EAAE,IAAU,EAAE,EAAkB;IAC7F,MAAM,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IAEzF,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;KACtC;IAED,MAAM,UAAU,GAAW,QAAQ,CAAC,IAAI,CAAA;IACxC,MAAM,SAAS,GAAW,IAAA,eAAO,EAAC,UAAU,CAAC,CAAA;IAC7C,IAAI,MAAM,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAE5E,IAAI,MAAM,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;KACxC;IAED,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAE/C,MAAM,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAE9C,OAAO,MAAM,CAAA;AACf,CAAC;AApBD,wDAoBC;AAED,KAAK,UAAU,YAAY,CAAC,EAAiB,EAAE,QAAkB,EAAE,IAAU;IAC3E,MAAM,YAAY,GAAW,QAAQ,CAAC,IAAI,CAAA;IAC1C,MAAM,SAAS,GAAW,IAAA,eAAO,EAAC,YAAY,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,IAAI,CAAC;QACjD,IAAI,EAAE,YAAY;QAClB,SAAS;QACT,KAAK,EAAE,IAAI,CAAC,EAAE;KACf,CAAC,CAAA;IAEF,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;IAEtF,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE/C,OAAO,MAAM,CAAA;AACf,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,EAAiB,EAAE,MAAc,EAAE,KAAa;IAC9E,MAAM,QAAQ,GAAqB,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAA;IAEzD,IAAI,IAAI,GAAS,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAE5G,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEzB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC","sourcesContent":["import { EntityManager, ILike, Repository } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Domain } from '@things-factory/shell'\nimport { slugger } from '@things-factory/utils'\n\nexport async function generateBizplaceDomain(bizplaceId: String, user: User, tx?: EntityManager) {\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({ id: bizplaceId })\n\n if (!bizplace) {\n throw new Error('bizplace not found')\n }\n\n const domainName: string = bizplace.name\n const subdomain: string = slugger(domainName)\n let domain: Domain = await tx.getRepository(Domain).findOneBy({ subdomain })\n\n if (domain) {\n throw new Error('domain is duplicated')\n }\n\n domain = await createDomain(tx, bizplace, user)\n\n await createDomainUser(tx, domain, user.email)\n\n return domain\n}\n\nasync function createDomain(tx: EntityManager, bizplace: Bizplace, user: User) {\n const bizplaceName: string = bizplace.name\n const subdomain: string = slugger(bizplaceName)\n\n const domain = await tx.getRepository(Domain).save({\n name: bizplaceName,\n subdomain,\n owner: user.id\n })\n\n bizplace = await tx.getRepository(Bizplace).findOne({ where: { name: bizplaceName } })\n\n bizplace.domain = domain\n await tx.getRepository(Bizplace).save(bizplace)\n\n return domain\n}\n\nasync function createDomainUser(tx: EntityManager, domain: Domain, email: string) {\n const userRepo: Repository<User> = tx.getRepository(User)\n\n let user: User = await userRepo.findOne({ where: { email: ILike(email) }, relations: ['domains', 'roles'] })\n\n user.domains.push(domain)\n\n await userRepo.save(user)\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createDomain = exports.businessRegister = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
4
5
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
5
6
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
7
|
const shell_1 = require("@things-factory/shell");
|
|
@@ -11,7 +12,7 @@ async function businessRegister(domain, companyInput, user, tx) {
|
|
|
11
12
|
const companyRepository = (tx === null || tx === void 0 ? void 0 : tx.getRepository(biz_base_1.Company)) || (0, shell_1.getRepository)(biz_base_1.Company);
|
|
12
13
|
const bizplaceRepository = (tx === null || tx === void 0 ? void 0 : tx.getRepository(biz_base_1.Bizplace)) || (0, shell_1.getRepository)(biz_base_1.Bizplace);
|
|
13
14
|
const company = await companyRepository.save(Object.assign(Object.assign({}, companyInput), { creator: user, updater: user, domain }));
|
|
14
|
-
user = await userRepository.findOne({ where: { email: user.email }, relations: ['domains', 'roles'] });
|
|
15
|
+
user = await userRepository.findOne({ where: { email: (0, typeorm_1.ILike)(user.email) }, relations: ['domains', 'roles'] });
|
|
15
16
|
const userHavingRoles = user.roles;
|
|
16
17
|
const domainRoles = await (0, company_initializer_1.generateBusinessRoles)(domain, tx);
|
|
17
18
|
user.domains = [...user.domains, domain];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business-register.js","sourceRoot":"","sources":["../../../server/controllers/company-initializer/business-register.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"business-register.js","sourceRoot":"","sources":["../../../server/controllers/company-initializer/business-register.ts"],"names":[],"mappings":";;;AAAA,qCAA0D;AAE1D,yDAAsD;AACtD,uDAA4D;AAC5D,iDAA6D;AAC7D,iDAA+C;AAE/C,+EAA6E;AAEtE,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,YAAqB,EAAE,IAAU,EAAE,EAAkB;IAC1G,MAAM,cAAc,GAAqB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,gBAAI,CAAC,KAAI,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAA;IACvF,MAAM,iBAAiB,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,kBAAO,CAAC,KAAI,IAAA,qBAAa,EAAC,kBAAO,CAAC,CAAA;IACnG,MAAM,kBAAkB,GAAyB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,mBAAQ,CAAC,KAAI,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAA;IAEvG,MAAM,OAAO,GAAY,MAAM,iBAAiB,CAAC,IAAI,iCAChD,YAAY,KACf,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,EACb,MAAM,IACN,CAAA;IAEF,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAC7G,MAAM,eAAe,GAAW,IAAI,CAAC,KAAK,CAAA;IAC1C,MAAM,WAAW,GAAW,MAAM,IAAA,2CAAqB,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAEnE,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAA;IAErF,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,kBAAkB,CAAC,IAAI,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,MAAM,EAAE,EAAE;QACV,MAAM;QACN,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AA7BD,4CA6BC;AAEM,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAAU,EAAE,EAAkB;IAC7E,MAAM,gBAAgB,GAAuB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,cAAM,CAAC,KAAI,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAA;IAC/F,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAA;IAE/B,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;IAE1E,IAAI,SAAS,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;KAChD;IAED,MAAM,MAAM,GAAW,MAAM,gBAAgB,CAAC,IAAI,CAAC;QACjD,SAAS;QACT,IAAI;QACJ,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,IAAI,CAAC,EAAE;KACf,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAlBD,oCAkBC","sourcesContent":["import { EntityManager, ILike, Repository } from 'typeorm'\n\nimport { Role, User } from '@things-factory/auth-base'\nimport { Bizplace, Company } from '@things-factory/biz-base'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { slugger } from '@things-factory/utils'\n\nimport { generateBusinessRoles } from '../../controllers/company-initializer'\n\nexport async function businessRegister(domain: Domain, companyInput: Company, user: User, tx?: EntityManager) {\n const userRepository: Repository<User> = tx?.getRepository(User) || getRepository(User)\n const companyRepository: Repository<Company> = tx?.getRepository(Company) || getRepository(Company)\n const bizplaceRepository: Repository<Bizplace> = tx?.getRepository(Bizplace) || getRepository(Bizplace)\n\n const company: Company = await companyRepository.save({\n ...companyInput,\n creator: user,\n updater: user,\n domain\n })\n\n user = await userRepository.findOne({ where: { email: ILike(user.email) }, relations: ['domains', 'roles'] })\n const userHavingRoles: Role[] = user.roles\n const domainRoles: Role[] = await generateBusinessRoles(domain, tx)\n\n user.domains = [...user.domains, domain]\n user.roles = [...userHavingRoles, domainRoles.find(r => r.name === 'BUSINESS-OWNER')]\n\n await userRepository.save(user)\n await bizplaceRepository.save({\n name: company.name,\n description: company.name,\n address: company.address,\n postalCode: company.postalCode || '',\n latlng: '',\n domain,\n company\n })\n}\n\nexport async function createDomain(name: string, user: User, tx?: EntityManager): Promise<Domain> {\n const domainRepository: Repository<Domain> = tx?.getRepository(Domain) || getRepository(Domain)\n const subdomain = slugger(name)\n\n const oldDomain = await domainRepository.findOne({ where: { subdomain } })\n\n if (oldDomain) {\n throw new Error('subdomain name is duplicated')\n }\n\n const domain: Domain = await domainRepository.save({\n subdomain,\n name,\n extType: 'company',\n owner: user.id\n })\n\n return domain\n}\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resendInvitationEmail = exports.sendInvitationEmail = exports.acceptInvitation = exports.invite = void 0;
|
|
4
4
|
const url_1 = require("url");
|
|
5
|
+
const typeorm_1 = require("typeorm");
|
|
5
6
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
6
7
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
7
8
|
const email_base_1 = require("@things-factory/email-base");
|
|
@@ -18,7 +19,7 @@ async function invite(attrs, withEmailInvitation) {
|
|
|
18
19
|
// 기존 사용자가 없는 경우.
|
|
19
20
|
// - 초대장 전송
|
|
20
21
|
const repository = (0, shell_1.getRepository)(auth_base_1.User);
|
|
21
|
-
var user = (await repository.findOne({ where: { email }, relations: ['bizplaces'] }));
|
|
22
|
+
var user = (await repository.findOne({ where: { email: (0, typeorm_1.ILike)(email) }, relations: ['bizplaces'] }));
|
|
22
23
|
if (user) {
|
|
23
24
|
if (type == 'company') {
|
|
24
25
|
if (reference == user.reference) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../server/controllers/invitation.ts"],"names":[],"mappings":";;;AAAA,6BAAyB;
|
|
1
|
+
{"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../server/controllers/invitation.ts"],"names":[],"mappings":"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","sourcesContent":["import { URL } from 'url'\nimport { ILike } from 'typeorm'\n\nimport { Invitation, User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { sendEmail } from '@things-factory/email-base'\nimport { getRepository } from '@things-factory/shell'\n\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 // 기존 사용자가 있는 경우.\n // - type이 company: reference 필드가 비어있는 지 확인, 비어있다면, 초대장 전송\n // - type이 bizplace: 사용자의 bizplace를 확인해서 없다면, 초대장 전송\n // - 그 외에는 이미 초대되어있다는 메시지로 종료\n\n // 기존 사용자가 없는 경우.\n // - 초대장 전송\n\n const repository = getRepository(User)\n var user = (await repository.findOne({ where: { email: ILike(email) }, relations: ['bizplaces'] })) as User & {\n bizplaces: Bizplace[]\n }\n\n if (user) {\n if (type == 'company') {\n if (reference == user.reference) {\n throw new Error('user already a member of the company.')\n }\n } else if (type == 'bizplace') {\n var bizplace: Bizplace = await getRepository(Bizplace).findOneBy({ id: reference })\n\n if (!bizplace) {\n throw new Error('invalid bizplace.')\n }\n\n const userBizplaces: Bizplace[] = user.bizplaces\n if (userBizplaces.find((userBizplace: Bizplace) => userBizplace.id === bizplace.id)) {\n throw new Error('user already a member of the bizplace.')\n }\n }\n }\n\n // invitation 레코드에 동일한 invitation이 있는 지 확인\n var invitation = await getRepository(Invitation).findOneBy({\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 var succeed = false\n if (withEmailInvitation) {\n succeed = await sendInvitationEmail({\n invitation,\n context\n })\n }\n\n try {\n return {\n // token: await signin({\n // email,\n // password\n // })\n }\n } catch (e) {\n return { token: null }\n }\n}\n\nexport async function acceptInvitation(token) {\n var invitation = await getRepository(Invitation).findOneBy({\n token\n })\n\n if (invitation) {\n return false\n }\n\n return true\n}\n\nexport async function sendInvitationEmail({ invitation, context }) {\n try {\n var token = makeInvitationToken()\n await saveInvitationToken(invitation.id, token)\n\n if (invitation) {\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({ email, reference, type }, context) {\n var invitation = await getRepository(Invitation).findOneBy({\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,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateCompany = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
4
5
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
5
6
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
7
|
const shell_1 = require("@things-factory/shell");
|
|
@@ -39,7 +40,7 @@ exports.generateCompany = {
|
|
|
39
40
|
const domainRoles = await (0, generate_company_roles_1.generateBusinessRoles)(domain, tx);
|
|
40
41
|
const company = await tx.getRepository(biz_base_1.Company).save(Object.assign(Object.assign({}, companyInput), { owner: user, domain }));
|
|
41
42
|
const userHavingRoles = await tx.getRepository(auth_base_1.User).findOne({
|
|
42
|
-
where: { email: user.email },
|
|
43
|
+
where: { email: (0, typeorm_1.ILike)(user.email) },
|
|
43
44
|
relations: ['domains', 'roles']
|
|
44
45
|
});
|
|
45
46
|
user.domains = [...user.domains, domain];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-company.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/generate-company.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAChD,uDAAkD;AAClD,iDAA8C;AAC9C,iDAA+C;AAE/C,oFAAsE;AACtE,4GAAuG;AAE1F,QAAA,eAAe,GAAG;IAC7B,KAAK,CAAC,eAAe,CAAC,CAAM,EAAE,EAAE,YAAY,EAAE,EAAE,OAAwB;QACtE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAClC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,YAAY,CAAA;QAEvE,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAA;QAE/B,WAAW;QACX,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,OAAO,CAAC;YACzD,KAAK,EAAE;gBACL,IAAI;aACL;SACF,CAAC,CAAA;QAEF,IAAI,UAAU,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC9C;QAED,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,OAAO,CAAC;YACvD,KAAK,EAAE;gBACL,IAAI;aACL;SACF,CAAC,CAAA;QAEF,IAAI,SAAS,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC3C;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,IAAI,CAAC;YACzD,SAAS;YACT,IAAI;YACJ,OAAO,EAAE,SAAS;SACnB,CAAC,CAAA;QAEF,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,IAAA,8CAAqB,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAE3D,MAAM,OAAO,GAAY,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,IAAI,iCACxD,YAAY,KACf,KAAK,EAAE,IAAI,EACX,MAAM,IACN,CAAA;QAEF,MAAM,eAAe,GAAS,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;YACjE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"generate-company.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/generate-company.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAC/B,yDAAgD;AAChD,uDAAkD;AAClD,iDAA8C;AAC9C,iDAA+C;AAE/C,oFAAsE;AACtE,4GAAuG;AAE1F,QAAA,eAAe,GAAG;IAC7B,KAAK,CAAC,eAAe,CAAC,CAAM,EAAE,EAAE,YAAY,EAAE,EAAE,OAAwB;QACtE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAClC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,YAAY,CAAA;QAEvE,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAA;QAE/B,WAAW;QACX,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,OAAO,CAAC;YACzD,KAAK,EAAE;gBACL,IAAI;aACL;SACF,CAAC,CAAA;QAEF,IAAI,UAAU,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC9C;QAED,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,OAAO,CAAC;YACvD,KAAK,EAAE;gBACL,IAAI;aACL;SACF,CAAC,CAAA;QAEF,IAAI,SAAS,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC3C;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,IAAI,CAAC;YACzD,SAAS;YACT,IAAI;YACJ,OAAO,EAAE,SAAS;SACnB,CAAC,CAAA;QAEF,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,IAAA,8CAAqB,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAE3D,MAAM,OAAO,GAAY,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,IAAI,iCACxD,YAAY,KACf,KAAK,EAAE,IAAI,EACX,MAAM,IACN,CAAA;QAEF,MAAM,eAAe,GAAS,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;YACjE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;SAChC,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAA;QAE3F,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvC,MAAM,IAAA,iCAAU,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAE5B,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,IAAI,CAAC;YAC1C,IAAI;YACJ,WAAW;YACX,OAAO;YACP,UAAU;YACV,MAAM;YACN,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;IACJ,CAAC;CACF,CAAA","sourcesContent":["import { ILike } from 'typeorm'\nimport { User } from '@things-factory/auth-base'\nimport { Company } from '@things-factory/biz-base'\nimport { Domain } from '@things-factory/shell'\nimport { slugger } from '@things-factory/utils'\n\nimport { initGroups } from '../../../controllers/bizplace-initializer'\nimport { generateBusinessRoles } from '../../../controllers/company-initializer/generate-company-roles'\n\nexport const generateCompany = {\n async generateCompany(_: any, { companyInput }, context: ResolverContext) {\n const { tx, user } = context.state\n const { name, description, address, postalCode, latlng } = companyInput\n\n const subdomain = slugger(name)\n\n /* check */\n const oldCompany = await tx.getRepository(Company).findOne({\n where: {\n name\n }\n })\n\n if (oldCompany) {\n throw new Error('company name is duplicated')\n }\n\n const oldDomain = await tx.getRepository(Domain).findOne({\n where: {\n name\n }\n })\n\n if (oldDomain) {\n throw new Error('subdomain is duplicated')\n }\n\n /* create company */\n const domain: Domain = await tx.getRepository(Domain).save({\n subdomain,\n name,\n extType: 'company'\n })\n\n /* create roles */\n const domainRoles = await generateBusinessRoles(domain, tx)\n\n const company: Company = await tx.getRepository(Company).save({\n ...companyInput,\n owner: user,\n domain\n })\n\n const userHavingRoles: User = await tx.getRepository(User).findOne({\n where: { email: ILike(user.email) },\n relations: ['domains', 'roles']\n })\n\n user.domains = [...user.domains, domain]\n user.roles = [...userHavingRoles.roles, domainRoles.find(r => r.name === 'BUSINESS-OWNER')]\n\n await tx.getRepository(User).save(user)\n\n await initGroups(tx, domain)\n\n return await tx.getRepository(Company).save({\n name,\n description,\n address,\n postalCode,\n latlng,\n updater: user,\n creator: user\n })\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateDomainExtType = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
4
5
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
5
6
|
const shell_1 = require("@things-factory/shell");
|
|
6
7
|
const bizplace_initializer_1 = require("../../../controllers/bizplace-initializer");
|
|
@@ -27,7 +28,7 @@ exports.updateDomainExtType = {
|
|
|
27
28
|
};
|
|
28
29
|
async function createRelations(tx, domain, email) {
|
|
29
30
|
const userRepo = tx.getRepository(auth_base_1.User);
|
|
30
|
-
const user = await userRepo.findOne({ where: { email }, relations: ['domains', 'roles'] });
|
|
31
|
+
const user = await userRepo.findOne({ where: { email: (0, typeorm_1.ILike)(email) }, relations: ['domains', 'roles'] });
|
|
31
32
|
const roleRepo = tx.getRepository(auth_base_1.Role);
|
|
32
33
|
const role = await roleRepo.findOne({ where: { domain: { id: domain.id } }, relations: ['domain'] });
|
|
33
34
|
const privilegeRepo = tx.getRepository(auth_base_1.Privilege);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-domain-extType.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/update-domain-extType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"update-domain-extType.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/update-domain-extType.ts"],"names":[],"mappings":";;;AAAA,qCAA0D;AAE1D,yDAAiE;AACjE,iDAA8C;AAE9C,oFAA0G;AAC1G,6HAAsH;AAEzG,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,gBAAgB,CAAC,CAAM,EAAE,EAAE,eAAe,EAAE,EAAE,OAAwB;QAC1E,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAClC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAoC,eAAe,CAAA;QAExE,IAAI,MAAM,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9E,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;QAExB,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpD,MAAM,IAAA,4DAA2B,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC7C,MAAM,IAAA,gCAAS,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC3B,MAAM,IAAA,gCAAS,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC3B,MAAM,IAAA,mCAAY,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC9B,MAAM,IAAA,iCAAU,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAE5B;;;WAGG;QACH,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAE7C,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAED,KAAK,UAAU,eAAe,CAAC,EAAiB,EAAE,MAAc,EAAE,KAAa;IAC7E,MAAM,QAAQ,GAAqB,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAA;IACzD,MAAM,IAAI,GAAS,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAC9G,MAAM,QAAQ,GAAqB,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAA;IACzD,MAAM,IAAI,GAAS,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1G,MAAM,aAAa,GAA0B,EAAE,CAAC,aAAa,CAAC,qBAAS,CAAC,CAAA;IACxE,MAAM,UAAU,GAAgB,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;IAE1D,MAAM,OAAO,GAAa,IAAI,CAAC,OAAO,CAAA;IACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAEtB,MAAM,KAAK,GAAW,MAAM,IAAI,CAAC,KAAK,CAAA;IACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAElB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAE5B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC","sourcesContent":["import { EntityManager, ILike, Repository } from 'typeorm'\n\nimport { Privilege, Role, User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { initCodes, initGroups, initMenus, initSettings } from '../../../controllers/bizplace-initializer'\nimport { generateBizplaceDomainRoles } from '../../../controllers/bizplace-initializer/generate-bizplace-domain-roles'\n\nexport const updateDomainExtType = {\n async updateDomainType(_: any, { domainTypeInput }, context: ResolverContext) {\n const { tx, user } = context.state\n const { id, extType }: { id: string; extType: string } = domainTypeInput\n\n let domain: Domain = await tx.getRepository(Domain).findOne({ where: { id } })\n domain.extType = extType\n\n domain = await tx.getRepository(Domain).save(domain)\n\n await generateBizplaceDomainRoles(domain, tx)\n await initMenus(tx, domain)\n await initCodes(tx, domain)\n await initSettings(tx, domain)\n await initGroups(tx, domain)\n\n /* Creating relations\n * 1) users_domains table\n * 2) users_roles table\n */\n await createRelations(tx, domain, user.email)\n\n return domain\n }\n}\n\nasync function createRelations(tx: EntityManager, domain: Domain, email: string) {\n const userRepo: Repository<User> = tx.getRepository(User)\n const user: User = await userRepo.findOne({ where: { email: ILike(email) }, relations: ['domains', 'roles'] })\n const roleRepo: Repository<Role> = tx.getRepository(Role)\n const role: Role = await roleRepo.findOne({ where: { domain: { id: domain.id } }, relations: ['domain'] })\n const privilegeRepo: Repository<Privilege> = tx.getRepository(Privilege)\n const privileges: Privilege[] = await privilegeRepo.find()\n\n const domains: Domain[] = user.domains\n domains.push(domain)\n user.domains = domains\n\n const roles: Role[] = await user.roles\n roles.push(role)\n user.roles = roles\n\n role.privileges = privileges\n\n await userRepo.save(user)\n await roleRepo.save(role)\n}\n"]}
|