const { userCollection } = require('../../common/constants') const { ERROR } = require('../../common/error') const { preRegisterWithPassword, postRegister } = require('../../lib/utils/register') /** * 注册管理员 * @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#register-admin * @param {Object} params * @param {String} params.username 用户名 * @param {String} params.password 密码 * @param {String} params.nickname 昵称 * @returns */ module.exports = async function (params = {}) { const schema = { username: 'username', password: 'password', nickname: { type: 'nickname', required: false } } this.middleware.validate(params, schema) const { username, password, nickname } = params const getAdminRes = await userCollection.where({ role: 'admin' }).limit(1).get() if (getAdminRes.data.length > 0) { const [admin] = getAdminRes.data const appId = this.getClientInfo().appId if (!admin.dcloud_appid || (admin.dcloud_appid && admin.dcloud_appid.includes(appId))) { return { errCode: ERROR.ADMIN_EXISTS, errMsg: this.t('uni-id-admin-exists') } } else { return { errCode: ERROR.ADMIN_EXISTS, errMsg: this.t('uni-id-admin-exist-in-other-apps') } } } const { user, extraData } = await preRegisterWithPassword.call(this, { user: { username }, password }) return postRegister.call(this, { user, extraData: { ...extraData, nickname, role: ['admin'] } }) }