@chevre/domain
Version:
Chevre Domain Library for Node.js
60 lines (59 loc) • 3.46 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.person2username = person2username;
const factory = require("../../../factory");
// import { Settings } from '../../../settings';
const person_1 = require("../../../repo/person");
const SSKTS_PROVIDER_NAME = 'SSKTS';
function person2username(person, cognitoIdentityServiceProvider, setting
// settings: Settings
) {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c, _d;
// const USERPOOL_ID_OLD = settings.userPoolIdOld;
const USERPOOL_ID_OLD = setting === null || setting === void 0 ? void 0 : setting.userPoolIdOld;
if (typeof USERPOOL_ID_OLD !== 'string') {
throw new factory.errors.NotFound('setting.userPoolIdOld');
}
let username = (_a = person.memberOf) === null || _a === void 0 ? void 0 : _a.membershipNumber;
// ユーザープールが本家の場合とsskstの場合に対応
// 本家にssktsをプロバイダーとしてログインしている場合、追加特性に以下のような値のidentitiesがあるはず
// [{"userId":"xxxx","providerName":"SSKTS","providerType":"OIDC"}]
const userIdentitiesStr = (_c = (_b = person.additionalProperty) === null || _b === void 0 ? void 0 : _b.find((p) => p.name === 'identities')) === null || _c === void 0 ? void 0 : _c.value;
if (typeof userIdentitiesStr === 'string' && userIdentitiesStr.length > 0) {
try {
const identities = JSON.parse(userIdentitiesStr);
if (Array.isArray(identities) && identities.length > 0) {
const providerName = identities[0].providerName;
const userIdByIdentities = identities[0].userId;
if (providerName === SSKTS_PROVIDER_NAME) {
if (typeof userIdByIdentities === 'string' && userIdByIdentities.length > 0) {
const personRepo = new person_1.PersonRepo({
cognitoIdentityServiceProvider,
userPoolId: USERPOOL_ID_OLD
});
// oldUserは必ず存在するはず
const oldUser = yield personRepo.findById({ userId: userIdByIdentities });
username = String((_d = oldUser.memberOf) === null || _d === void 0 ? void 0 : _d.membershipNumber);
}
}
}
}
catch (error) {
// tslint:disable-next-line:no-console
console.error('person2username throwed', error);
throw error;
}
}
return username;
});
}
;