Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
hello_uni-id-pages
提交
180da8c7
H
hello_uni-id-pages
项目概览
DCloud
/
hello_uni-id-pages
通知
1054
Star
31
Fork
43
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
2
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello_uni-id-pages
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
180da8c7
编写于
2月 08, 2023
作者:
C
chenruilong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(uni-id-co): 新增外部用户联登后修改用户信息接口
(cherry picked from commit
25308acd
)
上级
341c86f1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
161 addition
and
0 deletion
+161
-0
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/external/update-user-info.js
...udfunctions/uni-id-co/module/external/update-user-info.js
+161
-0
未找到文件。
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/external/update-user-info.js
0 → 100644
浏览文件 @
180da8c7
const
{
userCollection
,
EXTERNAL_DIRECT_CONNECT_PROVIDER
}
=
require
(
'
../../common/constants
'
)
const
{
ERROR
}
=
require
(
'
../../common/error
'
)
const
{
findUser
}
=
require
(
'
../../lib/utils/account
'
)
const
PasswordUtils
=
require
(
'
../../lib/utils/password
'
)
/**
* 使用 uid 或 externalUid 获取用户信息
* @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#external-update-userinfo
* @param {object} params
* @param {string} params.uid uni-id体系的用户id
* @param {string} params.externalUid 业务系统的用户id
* @param {string} params.nickname 昵称
* @param {string} params.gender 性别
* @param {string} params.avatar 头像
* @returns {object}
*/
module
.
exports
=
async
function
(
params
=
{})
{
const
schema
=
{
uid
:
{
required
:
false
,
type
:
'
string
'
},
externalUid
:
{
required
:
false
,
type
:
'
string
'
},
username
:
{
required
:
false
,
type
:
'
string
'
},
password
:
{
required
:
false
,
type
:
'
password
'
},
authorizedApp
:
{
required
:
false
,
type
:
'
array<string>
'
},
// 指定允许登录的app,传空数组或不传时表示可以不可以在任何端登录
nickname
:
{
required
:
false
,
type
:
'
nickname
'
},
role
:
{
require
:
false
,
type
:
'
array<string>
'
},
mobile
:
{
required
:
false
,
type
:
'
mobile
'
},
email
:
{
required
:
false
,
type
:
'
email
'
},
tags
:
{
required
:
false
,
type
:
'
array<string>
'
},
status
:
{
required
:
false
,
type
:
'
number
'
}
}
this
.
middleware
.
validate
(
params
,
schema
)
const
{
uid
,
externalUid
,
username
,
password
,
authorizedApp
,
nickname
,
role
,
mobile
,
email
,
tags
,
status
}
=
params
if
(
!
uid
&&
!
externalUid
)
{
throw
{
errCode
:
ERROR
.
PARAM_REQUIRED
,
errMsgVal
:
{
param
:
'
uid or externalUid
'
}
}
}
let
query
if
(
uid
)
{
query
=
{
_id
:
uid
}
}
else
{
query
=
{
identities
:
{
provider
:
EXTERNAL_DIRECT_CONNECT_PROVIDER
,
uid
:
externalUid
}
}
}
// 更新的用户数据字段
const
data
=
{
username
,
dcloud_appid
:
authorizedApp
,
nickname
,
role
,
mobile
,
email
,
tags
,
status
}
const
realData
=
Object
.
keys
(
data
).
reduce
((
res
,
key
)
=>
{
const
item
=
data
[
key
]
if
(
item
!==
undefined
)
{
res
[
key
]
=
item
}
return
res
},
{})
// 更新用户名时验证用户名是否重新
if
(
username
)
{
const
{
userMatched
}
=
await
findUser
({
userQuery
:
{
username
},
authorizedApp
})
if
(
userMatched
.
filter
(
user
=>
user
.
_id
!==
uid
).
length
)
{
throw
{
errCode
:
ERROR
.
ACCOUNT_EXISTS
}
}
}
if
(
password
)
{
const
passwordUtils
=
new
PasswordUtils
({
clientInfo
:
this
.
getUniversalClientInfo
(),
passwordSecret
:
this
.
config
.
passwordSecret
})
const
{
passwordHash
,
version
}
=
passwordUtils
.
generatePasswordHash
({
password
})
realData
.
password
=
passwordHash
realData
.
password_secret_version
=
version
}
await
userCollection
.
where
(
query
).
update
(
realData
)
return
{
errCode
:
0
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录