1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
| const {
| findUser
| } = require('../../lib/utils/account')
| const {
| ERROR
| } = require('../../common/error')
| const {
| userCollection
| } = require('../../common/constants')
| const PasswordUtils = require('../../lib/utils/password')
|
| /**
| * 新增用户
| * @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#add-user
| * @param {Object} params
| * @param {String} params.username 用户名
| * @param {String} params.password 密码
| * @param {String} params.nickname 昵称
| * @param {Array} params.authorizedApp 允许登录的AppID列表
| * @param {Array} params.role 用户角色列表
| * @param {String} params.mobile 手机号
| * @param {String} params.email 邮箱
| * @param {Array} params.tags 用户标签
| * @param {Number} params.status 用户状态
| * @returns
| */
| module.exports = async function (params = {}) {
| const schema = {
| username: 'username',
| password: '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 {
| username,
| password,
| authorizedApp,
| nickname,
| role,
| mobile,
| email,
| tags,
| status
| } = params
| const {
| userMatched
| } = await findUser({
| userQuery: {
| username,
| mobile,
| email
| },
| authorizedApp
| })
| if (userMatched.length) {
| throw {
| errCode: ERROR.ACCOUNT_EXISTS
| }
| }
| const passwordUtils = new PasswordUtils({
| clientInfo: this.getUniversalClientInfo(),
| passwordSecret: this.config.passwordSecret
| })
| const {
| passwordHash,
| version
| } = passwordUtils.generatePasswordHash({
| password
| })
| const data = {
| username,
| password: passwordHash,
| password_secret_version: version,
| dcloud_appid: authorizedApp || [],
| nickname,
| role: role || [],
| mobile,
| email,
| tags: tags || [],
| status
| }
| if (email) {
| data.email_confirmed = 1
| }
| if (mobile) {
| data.mobile_confirmed = 1
| }
|
| await userCollection.add(data)
| return {
| errCode: 0,
| errMsg: ''
| }
| }
|
|