UNPKG

@coko/server

Version:

Reusable server for use by Coko's projects

58 lines 2.65 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const internals_1 = __importDefault(require("../logger/internals")); const useTransaction_1 = __importDefault(require("../models/useTransaction")); const user_model_1 = __importDefault(require("../models/user/user.model")); const team_model_1 = __importDefault(require("../models/team/team.model")); const identity_model_1 = __importDefault(require("../models/identity/identity.model")); const config_1 = __importDefault(require("../configManager/config")); const seedAdminUser = async (data) => { internals_1.default.section('Seed admin user'); if (!config_1.default.get('adminUser')) { internals_1.default.warn('Admin user set to false in config. Skipping user creation...'); return; } const adminTeam = await team_model_1.default.findOne({ role: 'admin' }, { related: 'members' }); if (!data) { if (adminTeam.members.length === 0) { throw new Error('No members in the admin team and no values provided to create one.'); } internals_1.default.point('No admin user data, but another admin user already exists.'); return; } const adminUser = await user_model_1.default.findOne({ username: data.username, }); if (adminUser) { internals_1.default.point('User already exists in database ...'); const existingUserIsAdmin = await adminUser.hasGlobalRole('admin'); if (!existingUserIsAdmin) { internals_1.default.point('... but is not a member of the admin team.'); await team_model_1.default.addMember(adminTeam.id, adminUser.id); internals_1.default.success(`User added to admin team.`); return; } internals_1.default.point('... and is already a member of the admin team.'); return; } await (0, useTransaction_1.default)(async (trx) => { const u = await user_model_1.default.insert({ username: data.username, password: data.password, }, { trx }); await identity_model_1.default.insert({ userId: u.id, email: data.email, isSocial: false, isVerified: true, isDefault: true, }, { trx }); await team_model_1.default.addMember(adminTeam.id, u.id, { trx }); internals_1.default.success(`User added to admin team.`); }); }; exports.default = seedAdminUser; //# sourceMappingURL=seedAdminUser.js.map