diff --git a/uniCloud/cloudfunctions/uni-im-co/msg.js b/uniCloud/cloudfunctions/uni-im-co/msg.js index 2d541a186b24b0c6b7a0239317d329483bc4a5a5..325a3dd1328f6e4cb9a73d33f4b9d35938469160 100644 --- a/uniCloud/cloudfunctions/uni-im-co/msg.js +++ b/uniCloud/cloudfunctions/uni-im-co/msg.js @@ -160,7 +160,7 @@ async function sendMsg(params) { // 创建新会话或者更新已有会话。 // 拿到消息接收者的isMute状态(仅私聊有效) - let {isMute} = await _createOrUpdateConversation(conversation_id, msgData) + let {isMute} = await _createOrUpdateConversation.call(this,conversation_id, msgData) // console.log({ // ...msgData, // conversation_id @@ -402,6 +402,25 @@ async function _createOrUpdateConversation(conversation_id, msgData) { // 不存在,需要先创建会话记录 if (!senderConversation) { + // 除了云函数之间(包括触发器)调用 和 特殊角色用户,需验证是否绑定了手机号码 + if( + this.getClientInfo().source != 'function' && + !this.current_user_role.includes('uni-im-admin') && + !this.current_user_role.includes('staff') + ){ + // 验证账号是否绑定了手机号 + let getUserInfoRes = await db.collection('uni-id-users') + .doc(this.current_uid) + .field({ + email:1, + nickname:1, + role:1 + }) + .get() + if(!getUserInfoRes.data[0].mobile_confirmed){ + throw new Error('账号未绑定手机号,无法发送消息') + } + } // 1.消息发送者 会话数据 senderConversation = { id: conversation_id, diff --git a/uniCloud/database/uni-im-group-join.schema.ext.js b/uniCloud/database/uni-im-group-join.schema.ext.js index 94d755d0ce59ef9a1cbcc9c923afbc6204a621c7..2fc5054ba0bcdc40b78a6d8e1808bc27c1c7d3ab 100644 --- a/uniCloud/database/uni-im-group-join.schema.ext.js +++ b/uniCloud/database/uni-im-group-join.schema.ext.js @@ -54,6 +54,11 @@ module.exports = { if(res.code){ throw new Error(res.errMsg) } + } + // 5. 判断用户是否已经绑定手机号 + let res3 = await db.collection('uni-id-users').where({_id:userInfo.uid}).get() + if(!res3.data[0].mobile_confirmed){ + throw new Error('你的账号未绑定手机号,不能加入群聊') } } else { throw new Error('非法参数')