@coko/server
Version:
Reusable server for use by Coko's projects
58 lines • 2.65 kB
JavaScript
;
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