w-web-sso 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +9 -0
- package/.eslintignore +3 -0
- package/.eslintrc.js +55 -0
- package/.github/workflows/ci-test.yml +24 -0
- package/.jsdoc +25 -0
- package/.vscode/launch.json +20 -0
- package/LICENSE +21 -0
- package/README.md +25 -0
- package/SECURITY.md +5 -0
- package/babel.config.js +15 -0
- package/dist/css/app.969ad1db.css +1 -0
- package/dist/index.tmp +3 -0
- package/dist/js/app-legacy.ff64be1c.js +2 -0
- package/dist/js/app-legacy.ff64be1c.js.map +1 -0
- package/dist/js/app.ff64be1c.js +2 -0
- package/dist/js/app.ff64be1c.js.map +1 -0
- package/dist/js/chunk-vendors-legacy.0bb7a31b.js +13 -0
- package/dist/js/chunk-vendors-legacy.0bb7a31b.js.map +1 -0
- package/dist/js/chunk-vendors.0bb7a31b.js +13 -0
- package/dist/js/chunk-vendors.0bb7a31b.js.map +1 -0
- package/dist/w-web-sso.umd.js +7 -0
- package/dist/w-web-sso.umd.js.map +1 -0
- package/docs/WWebSso.html +938 -0
- package/docs/WWebSso.mjs.html +721 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
- package/docs/index.html +84 -0
- package/docs/scripts/collapse.js +39 -0
- package/docs/scripts/commonNav.js +28 -0
- package/docs/scripts/linenumber.js +25 -0
- package/docs/scripts/nav.js +12 -0
- package/docs/scripts/polyfill.js +4 -0
- package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/docs/scripts/prettify/lang-css.js +2 -0
- package/docs/scripts/prettify/prettify.js +28 -0
- package/docs/scripts/search.js +99 -0
- package/docs/styles/jsdoc.css +776 -0
- package/docs/styles/prettify.css +80 -0
- package/g.backupDb.mjs +10 -0
- package/g.getSettings.mjs +17 -0
- package/g.initialData.mjs +94 -0
- package/g.initialTestData.mjs +21 -0
- package/g.mOrm.mjs +24 -0
- package/g.provideUsers.mjs +45 -0
- package/package.json +70 -0
- package/public/index.html +30 -0
- package/script.txt +22 -0
- package/server/WWebSso.mjs +649 -0
- package/server/hashPassword.mjs +27 -0
- package/server/proc.mjs +543 -0
- package/server/provideUsers.mjs +68 -0
- package/src/App.vue +123 -0
- package/src/components/Common/CheckYes.vue +85 -0
- package/src/components/Common/CheckYesNo.vue +91 -0
- package/src/components/Common/LabelItem.vue +106 -0
- package/src/components/Common/LoadingWinBar.vue +115 -0
- package/src/components/Layout.vue +160 -0
- package/src/components/LayoutContent.vue +193 -0
- package/src/components/LayoutContentUsers.vue +498 -0
- package/src/components/LayoutState.vue +91 -0
- package/src/components/PageLogin.vue +524 -0
- package/src/components/VeUser.vue +446 -0
- package/src/components/ruleGroup.vue +645 -0
- package/src/main.js +97 -0
- package/src/plugins/mDataSelectorSchema.mjs +30 -0
- package/src/plugins/mDataSupport.mjs +23 -0
- package/src/plugins/mShare.mjs +229 -0
- package/src/plugins/mUI.mjs +229 -0
- package/src/schema/gi.mjs +8 -0
- package/src/schema/index.mjs +18 -0
- package/src/schema/tables/tokens.mjs +70 -0
- package/src/schema/tables/users.mjs +110 -0
- package/src/store/actions.mjs +1 -0
- package/src/store/getters.mjs +1 -0
- package/src/store/index.mjs +25 -0
- package/src/store/mutations.mjs +333 -0
- package/src/store/types.mjs +15 -0
- package/srv.mjs +84 -0
- package/tableTags-web-sso.json +1 -0
- package/test/all.test.mjs +10 -0
- package/toolg/addVersion.mjs +4 -0
- package/toolg/cleanFolder.mjs +4 -0
- package/toolg/gDistRollup.mjs +36 -0
- package/toolg/genEntry.mjs +23 -0
- package/toolg/modifyReadme.mjs +4 -0
- package/vue.config.js +15 -0
package/server/proc.mjs
ADDED
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
import path from 'path'
|
|
2
|
+
import fs from 'fs'
|
|
3
|
+
import ot from 'dayjs'
|
|
4
|
+
import get from 'lodash-es/get.js'
|
|
5
|
+
import each from 'lodash-es/each.js'
|
|
6
|
+
import size from 'lodash-es/size.js'
|
|
7
|
+
import keys from 'lodash-es/keys.js'
|
|
8
|
+
import iseobj from 'wsemi/src/iseobj.mjs'
|
|
9
|
+
import isestr from 'wsemi/src/isestr.mjs'
|
|
10
|
+
import ispint from 'wsemi/src/ispint.mjs'
|
|
11
|
+
import isearr from 'wsemi/src/isearr.mjs'
|
|
12
|
+
import ispnum from 'wsemi/src/ispnum.mjs'
|
|
13
|
+
import isfun from 'wsemi/src/isfun.mjs'
|
|
14
|
+
import ispm from 'wsemi/src/ispm.mjs'
|
|
15
|
+
import cint from 'wsemi/src/cint.mjs'
|
|
16
|
+
import j2o from 'wsemi/src/j2o.mjs'
|
|
17
|
+
import strleft from 'wsemi/src/strleft.mjs'
|
|
18
|
+
import strright from 'wsemi/src/strright.mjs'
|
|
19
|
+
import strdelright from 'wsemi/src/strdelright.mjs'
|
|
20
|
+
import pm2resolve from 'wsemi/src/pm2resolve.mjs'
|
|
21
|
+
import pmSeries from 'wsemi/src/pmSeries.mjs'
|
|
22
|
+
import ds from '../src/schema/index.mjs'
|
|
23
|
+
import hashPassword from './hashPassword.mjs'
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
function proc(woItems, { salt, timeExpired }) {
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
//getGenUserByKV
|
|
30
|
+
let getGenUserByKV = async(keyUser, valueUser) => {
|
|
31
|
+
|
|
32
|
+
//us
|
|
33
|
+
let us = await woItems.users.select({ [keyUser]: valueUser, isActive: 'y' })
|
|
34
|
+
|
|
35
|
+
//u
|
|
36
|
+
let u = get(us, 0, null)
|
|
37
|
+
|
|
38
|
+
//check
|
|
39
|
+
if (!iseobj(u)) {
|
|
40
|
+
return null
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return u
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
// //getGenUserByUserId
|
|
48
|
+
// let getGenUserByUserId = async(userId) => {
|
|
49
|
+
|
|
50
|
+
// //u
|
|
51
|
+
// let u = await getGenUserByKV('id', userId)
|
|
52
|
+
|
|
53
|
+
// //check
|
|
54
|
+
// if (!iseobj(u)) {
|
|
55
|
+
// return null
|
|
56
|
+
// }
|
|
57
|
+
|
|
58
|
+
// return u
|
|
59
|
+
// }
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
//getGenUserByUserAc
|
|
63
|
+
let getGenUserByUserAc = async(account) => {
|
|
64
|
+
|
|
65
|
+
//u
|
|
66
|
+
let u = await getGenUserByKV('account', account)
|
|
67
|
+
|
|
68
|
+
//check
|
|
69
|
+
if (!iseobj(u)) {
|
|
70
|
+
return null
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return u
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
//loginByAccountAndPassword
|
|
78
|
+
let loginByAccountAndPassword = async(account, password) => {
|
|
79
|
+
|
|
80
|
+
//hashPassword
|
|
81
|
+
let passwordTest = hashPassword(password, salt)
|
|
82
|
+
// console.log('password', password, 'salt', salt)
|
|
83
|
+
// console.log('passwordTest', passwordTest)
|
|
84
|
+
|
|
85
|
+
//getGenUserByUserAc
|
|
86
|
+
let u = await getGenUserByUserAc(account)
|
|
87
|
+
// console.log('u', u)
|
|
88
|
+
|
|
89
|
+
//check
|
|
90
|
+
if (!iseobj(u)) {
|
|
91
|
+
console.log(`account`, account)
|
|
92
|
+
console.log(`can not find the user from account`)
|
|
93
|
+
return Promise.reject(`can not find the user from account`)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//passwordTrue
|
|
97
|
+
let passwordTrue = get(u, 'password', '')
|
|
98
|
+
// console.log('passwordTrue', passwordTrue)
|
|
99
|
+
|
|
100
|
+
//check
|
|
101
|
+
if (passwordTest !== passwordTrue) {
|
|
102
|
+
return Promise.reject(`incorrect user account or password`)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
//userId
|
|
106
|
+
let userId = get(u, 'id', '')
|
|
107
|
+
// console.log('userId', userId)
|
|
108
|
+
|
|
109
|
+
//createToken
|
|
110
|
+
let token = await createToken(userId)
|
|
111
|
+
// console.log('token', token)
|
|
112
|
+
|
|
113
|
+
//bbb 待加入創建usersRecs儲存使用者登入資訊與紀錄
|
|
114
|
+
|
|
115
|
+
//r
|
|
116
|
+
let r = {
|
|
117
|
+
account: u.account,
|
|
118
|
+
name: u.name,
|
|
119
|
+
email: u.email,
|
|
120
|
+
description: u.description,
|
|
121
|
+
from: u.from,
|
|
122
|
+
ruleGroupsIds: u.ruleGroupsIds,
|
|
123
|
+
redir: u.redir,
|
|
124
|
+
isAdmin: u.isAdmin,
|
|
125
|
+
token,
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return r
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
//createToken
|
|
133
|
+
let createToken = async (userId) => {
|
|
134
|
+
let errTemp = null
|
|
135
|
+
|
|
136
|
+
//t
|
|
137
|
+
let t = ds.tokens.funNew({
|
|
138
|
+
userId,
|
|
139
|
+
})
|
|
140
|
+
// console.log('funNew', t)
|
|
141
|
+
|
|
142
|
+
//token
|
|
143
|
+
let token = get(t, 'token', '')
|
|
144
|
+
|
|
145
|
+
//insert
|
|
146
|
+
await woItems.tokens.insert(t)
|
|
147
|
+
.catch((err) => {
|
|
148
|
+
errTemp = err
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
//check
|
|
152
|
+
if (errTemp) {
|
|
153
|
+
console.log(errTemp)
|
|
154
|
+
console.log(`token`, token)
|
|
155
|
+
console.log(`Can not create a token from userId`)
|
|
156
|
+
return Promise.reject(`Can not create a token from userId`)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return token
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
//checkTokenCore
|
|
164
|
+
let checkTokenCore = async (tk) => {
|
|
165
|
+
|
|
166
|
+
//timeEnd
|
|
167
|
+
let timeEnd = get(tk, 'timeEnd', '')
|
|
168
|
+
|
|
169
|
+
//tt
|
|
170
|
+
let tt = ot(timeEnd, 'YYYY-MM-DDTHH:mm:ss.SSSZ')
|
|
171
|
+
// console.log('tt', tt)
|
|
172
|
+
|
|
173
|
+
//tn
|
|
174
|
+
let tn = ot()
|
|
175
|
+
|
|
176
|
+
//dmin
|
|
177
|
+
let dmin = tt.diff(tn, 'minutes')
|
|
178
|
+
// console.log('dmin', dmin)
|
|
179
|
+
|
|
180
|
+
//check
|
|
181
|
+
if (dmin > timeExpired) {
|
|
182
|
+
console.log(`tk`, tk)
|
|
183
|
+
console.log(`dmin`, dmin, `dmitimeExpiredn`, timeExpired)
|
|
184
|
+
console.log(`token expired`)
|
|
185
|
+
return Promise.reject(`token expired`)
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return true
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
//checkToken
|
|
193
|
+
let checkToken = async (token) => {
|
|
194
|
+
|
|
195
|
+
//tks
|
|
196
|
+
let tks = await woItems.tokens.select({ token })
|
|
197
|
+
|
|
198
|
+
//ntks
|
|
199
|
+
let ntks = size(tks)
|
|
200
|
+
|
|
201
|
+
//check
|
|
202
|
+
if (ntks === 0) {
|
|
203
|
+
console.log(`token`, token)
|
|
204
|
+
console.log(`can not find the token`)
|
|
205
|
+
return Promise.reject(`can not find the token`)
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
//check
|
|
209
|
+
if (ntks >= 2) {
|
|
210
|
+
console.log(`token`, token)
|
|
211
|
+
console.log(`duplicate tokens`)
|
|
212
|
+
return Promise.reject(`duplicate tokens`)
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
//tk
|
|
216
|
+
let tk = get(tks, 0, '')
|
|
217
|
+
// console.log('tk', tk)
|
|
218
|
+
|
|
219
|
+
//checkTokenCore
|
|
220
|
+
await checkTokenCore(tk)
|
|
221
|
+
|
|
222
|
+
return true
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
//refreshToken
|
|
227
|
+
let refreshToken = async (token) => {
|
|
228
|
+
let errTemp = null
|
|
229
|
+
|
|
230
|
+
//tks
|
|
231
|
+
let tks = await woItems.tokens.select({ token })
|
|
232
|
+
|
|
233
|
+
//ntks
|
|
234
|
+
let ntks = size(tks)
|
|
235
|
+
|
|
236
|
+
//check
|
|
237
|
+
if (ntks === 0) {
|
|
238
|
+
console.log(`token`, token)
|
|
239
|
+
console.log(`can not find the token`)
|
|
240
|
+
return Promise.reject(`can not find the token`)
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
//check
|
|
244
|
+
if (ntks >= 2) {
|
|
245
|
+
console.log(`token`, token)
|
|
246
|
+
console.log(`duplicate tokens`)
|
|
247
|
+
return Promise.reject(`duplicate tokens`)
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
//tk
|
|
251
|
+
let tk = get(tks, 0, '')
|
|
252
|
+
// console.log('tk', tk)
|
|
253
|
+
|
|
254
|
+
//timeEnd
|
|
255
|
+
let timeEnd = get(tk, 'timeEnd', '')
|
|
256
|
+
|
|
257
|
+
//tt
|
|
258
|
+
let tt = ot(timeEnd, 'YYYY-MM-DDTHH:mm:ss.SSSZ')
|
|
259
|
+
// console.log('tt', tt)
|
|
260
|
+
|
|
261
|
+
//tn
|
|
262
|
+
let tn = ot()
|
|
263
|
+
|
|
264
|
+
//dmin
|
|
265
|
+
let dmin = tt.diff(tn, 'minutes')
|
|
266
|
+
// console.log('dmin', dmin)
|
|
267
|
+
|
|
268
|
+
//check
|
|
269
|
+
if (dmin > timeExpired) {
|
|
270
|
+
console.log(`token`, token)
|
|
271
|
+
console.log(`dmin`, dmin, `timeExpired`, timeExpired)
|
|
272
|
+
console.log(`token expired`)
|
|
273
|
+
return Promise.reject(`token expired`)
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
//timeEndNew
|
|
277
|
+
let timeEndNew = tn.format('YYYY-MM-DDTHH:mm:ss.SSSZ')
|
|
278
|
+
// console.log('timeEndNew', timeEndNew)
|
|
279
|
+
|
|
280
|
+
//save
|
|
281
|
+
await woItems.tokens.save({
|
|
282
|
+
id: tk.id,
|
|
283
|
+
timeEnd: timeEndNew,
|
|
284
|
+
})
|
|
285
|
+
.catch((err) => {
|
|
286
|
+
errTemp = err
|
|
287
|
+
})
|
|
288
|
+
|
|
289
|
+
//check
|
|
290
|
+
if (errTemp) {
|
|
291
|
+
console.log(errTemp)
|
|
292
|
+
console.log(`token`, token)
|
|
293
|
+
console.log(`Can not update time for token`)
|
|
294
|
+
return Promise.reject(`Can not update time for token`)
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
return true
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
//getUserByToken
|
|
302
|
+
let getUserByToken = async(token) => {
|
|
303
|
+
let errTemp = null
|
|
304
|
+
|
|
305
|
+
//tks
|
|
306
|
+
let tks = await woItems.tokens.select({ token })
|
|
307
|
+
|
|
308
|
+
//ntks
|
|
309
|
+
let ntks = size(tks)
|
|
310
|
+
|
|
311
|
+
//check
|
|
312
|
+
if (ntks === 0) {
|
|
313
|
+
console.log(`token`, token)
|
|
314
|
+
console.log(`can not find the token`)
|
|
315
|
+
return Promise.reject(`can not find the token`)
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
//check
|
|
319
|
+
if (ntks >= 2) {
|
|
320
|
+
console.log(`token`, token)
|
|
321
|
+
console.log(`duplicate tokens`)
|
|
322
|
+
return Promise.reject(`duplicate tokens`)
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
//tk
|
|
326
|
+
let tk = get(tks, 0, '')
|
|
327
|
+
// console.log('tk', tk)
|
|
328
|
+
|
|
329
|
+
//userId
|
|
330
|
+
let userId = get(tk, 'userId', '')
|
|
331
|
+
// console.log('userId', userId)
|
|
332
|
+
|
|
333
|
+
//us
|
|
334
|
+
let us = await woItems.users.select({ id: userId })
|
|
335
|
+
.catch((err) => {
|
|
336
|
+
errTemp = err
|
|
337
|
+
})
|
|
338
|
+
|
|
339
|
+
//check
|
|
340
|
+
if (errTemp) {
|
|
341
|
+
console.log(errTemp)
|
|
342
|
+
console.log(`userId`, userId)
|
|
343
|
+
console.log(`Failed to find user`)
|
|
344
|
+
return Promise.reject(`Failed to find user`)
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
//nus
|
|
348
|
+
let nus = size(us)
|
|
349
|
+
|
|
350
|
+
//check
|
|
351
|
+
if (nus === 0) {
|
|
352
|
+
console.log(`userId`, userId)
|
|
353
|
+
console.log(`can not find the user by userId`)
|
|
354
|
+
return Promise.reject(`can not find the user by userId`)
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
//check
|
|
358
|
+
if (nus >= 2) {
|
|
359
|
+
console.log(`userId`, userId)
|
|
360
|
+
console.log(`duplicate userId`)
|
|
361
|
+
return Promise.reject(`duplicate userId`)
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
//u
|
|
365
|
+
let u = get(us, 0, '')
|
|
366
|
+
// console.log('u', u)
|
|
367
|
+
|
|
368
|
+
//r
|
|
369
|
+
let r = {
|
|
370
|
+
account: u.account,
|
|
371
|
+
name: u.name,
|
|
372
|
+
email: u.email,
|
|
373
|
+
description: u.description,
|
|
374
|
+
from: u.from,
|
|
375
|
+
ruleGroupsIds: u.ruleGroupsIds,
|
|
376
|
+
redir: u.redir,
|
|
377
|
+
isAdmin: u.isAdmin,
|
|
378
|
+
token,
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
return r
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
//logOutByToken
|
|
386
|
+
let logOutByToken = async(token) => {
|
|
387
|
+
let errTemp = null
|
|
388
|
+
|
|
389
|
+
//tks
|
|
390
|
+
let tks = await woItems.tokens.select({ token })
|
|
391
|
+
|
|
392
|
+
//ntks
|
|
393
|
+
let ntks = size(tks)
|
|
394
|
+
|
|
395
|
+
//check
|
|
396
|
+
if (ntks === 0) {
|
|
397
|
+
console.log(`token`, token)
|
|
398
|
+
console.log(`can not find the token`)
|
|
399
|
+
return Promise.reject(`can not find the token`)
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
//check
|
|
403
|
+
if (ntks >= 2) {
|
|
404
|
+
console.log(`token`, token)
|
|
405
|
+
console.log(`duplicate tokens`)
|
|
406
|
+
return Promise.reject(`duplicate tokens`)
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
//tk
|
|
410
|
+
let tk = get(tks, 0, '')
|
|
411
|
+
// console.log('tk', tk)
|
|
412
|
+
|
|
413
|
+
//userId
|
|
414
|
+
let userId = get(tk, 'userId', '') //bbb 先保留userId供後續功能使用
|
|
415
|
+
// console.log('userId', userId)
|
|
416
|
+
|
|
417
|
+
//del
|
|
418
|
+
await woItems.tokens.del({ token })
|
|
419
|
+
.catch((err) => {
|
|
420
|
+
errTemp = err
|
|
421
|
+
})
|
|
422
|
+
|
|
423
|
+
//check
|
|
424
|
+
if (errTemp) {
|
|
425
|
+
console.log(errTemp)
|
|
426
|
+
console.log(`token`, token)
|
|
427
|
+
console.log(`Failed to delete key`)
|
|
428
|
+
return Promise.reject(`Failed to delete key`)
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
//bbb 待加入創建usersRecs儲存使用者登出紀錄
|
|
432
|
+
|
|
433
|
+
//bbb 待加入通知程序(訂閱者,監聽器)之使用者登出訊息
|
|
434
|
+
|
|
435
|
+
return true
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
//cleanTokens
|
|
440
|
+
let cleanTokens = async () => {
|
|
441
|
+
|
|
442
|
+
//tks
|
|
443
|
+
let tks = await woItems.tokens.select()
|
|
444
|
+
// console.log('tks', tks)
|
|
445
|
+
|
|
446
|
+
//tksDels
|
|
447
|
+
let tksDels = []
|
|
448
|
+
await pmSeries(tks, async (tk) => {
|
|
449
|
+
|
|
450
|
+
//checkTokenCore
|
|
451
|
+
let errTemp = null
|
|
452
|
+
await checkTokenCore(tk)
|
|
453
|
+
.catch((err) => {
|
|
454
|
+
errTemp = err
|
|
455
|
+
})
|
|
456
|
+
|
|
457
|
+
//check
|
|
458
|
+
if (errTemp) {
|
|
459
|
+
tksDels.push(tk)
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
})
|
|
463
|
+
|
|
464
|
+
//check
|
|
465
|
+
if (size(tksDels) > 0) {
|
|
466
|
+
|
|
467
|
+
await pmSeries(tks, async (tk) => {
|
|
468
|
+
|
|
469
|
+
//del
|
|
470
|
+
await woItems.tokens.del({ token: tk.token })
|
|
471
|
+
.catch(() => { })
|
|
472
|
+
|
|
473
|
+
//bbb 待加入創建usersRecs儲存使用者登出紀錄
|
|
474
|
+
|
|
475
|
+
//bbb 待加入通知程序(訂閱者,監聽器)之使用者登出訊息
|
|
476
|
+
|
|
477
|
+
})
|
|
478
|
+
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
//createUser
|
|
485
|
+
let createUser = async () => {
|
|
486
|
+
//bbb
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
//ModifyUser
|
|
491
|
+
let ModifyUser = async () => {
|
|
492
|
+
//bbb
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
//DeleteUser
|
|
497
|
+
let DeleteUser = async () => {
|
|
498
|
+
//bbb
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
//AuthUser
|
|
503
|
+
let AuthUser = async () => {
|
|
504
|
+
//bbb
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
//EmailUser
|
|
509
|
+
let EmailUser = async () => {
|
|
510
|
+
//bbb
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
//getUsersList
|
|
515
|
+
let getUsersList = async (token) => {
|
|
516
|
+
//bbb
|
|
517
|
+
// let rs = await woItems.users.select() //isActive為y或n都需要提供, 給前端編輯
|
|
518
|
+
// return rs
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
//p
|
|
523
|
+
let p = {
|
|
524
|
+
loginByAccountAndPassword,
|
|
525
|
+
checkToken,
|
|
526
|
+
refreshToken,
|
|
527
|
+
getUserByToken,
|
|
528
|
+
logOutByToken,
|
|
529
|
+
cleanTokens,
|
|
530
|
+
createUser,
|
|
531
|
+
ModifyUser,
|
|
532
|
+
DeleteUser,
|
|
533
|
+
AuthUser,
|
|
534
|
+
EmailUser,
|
|
535
|
+
getUsersList,
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
return p
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
export default proc
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import axios from 'axios'
|
|
2
|
+
import ltdtpick from 'wsemi/src/ltdtpick.mjs'
|
|
3
|
+
import genPm from 'wsemi/src/genPm.mjs'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
async function provideUsers(url, from, users) {
|
|
7
|
+
//url: 指權限伺服器提供的調整users網址, 例如 http://localhost:11007/syncAndReplaceUsers
|
|
8
|
+
//from: 指user來源
|
|
9
|
+
|
|
10
|
+
//pm
|
|
11
|
+
let pm = genPm()
|
|
12
|
+
|
|
13
|
+
//ks
|
|
14
|
+
let ks = [
|
|
15
|
+
'id',
|
|
16
|
+
'order',
|
|
17
|
+
'name',
|
|
18
|
+
'email',
|
|
19
|
+
'description',
|
|
20
|
+
'from',
|
|
21
|
+
'ruleGroupsIds',
|
|
22
|
+
'isAdmin',
|
|
23
|
+
'userId',
|
|
24
|
+
'timeCreate',
|
|
25
|
+
'userIdUpdate',
|
|
26
|
+
'timeUpdate',
|
|
27
|
+
'isActive',
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
//ltdtpick
|
|
31
|
+
users = ltdtpick(users, ks)
|
|
32
|
+
|
|
33
|
+
//rin
|
|
34
|
+
let rin = {
|
|
35
|
+
from,
|
|
36
|
+
users,
|
|
37
|
+
}
|
|
38
|
+
// rin = JSON.stringify(rin)
|
|
39
|
+
|
|
40
|
+
//axios
|
|
41
|
+
await axios({
|
|
42
|
+
method: 'post',
|
|
43
|
+
url,
|
|
44
|
+
headers: { 'Content-Type': 'application/json; charset=utf-8' },
|
|
45
|
+
data: rin,
|
|
46
|
+
})
|
|
47
|
+
.then((res) => {
|
|
48
|
+
// console.log(res)
|
|
49
|
+
let r = {
|
|
50
|
+
msg: '成功傳輸Users清單',
|
|
51
|
+
res,
|
|
52
|
+
}
|
|
53
|
+
pm.resolve(r)
|
|
54
|
+
})
|
|
55
|
+
.catch((err) => {
|
|
56
|
+
// console.log(err)
|
|
57
|
+
let r = {
|
|
58
|
+
msg: '無法傳輸Users清單',
|
|
59
|
+
res: err,
|
|
60
|
+
}
|
|
61
|
+
pm.reject(r)
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
return pm
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
export default provideUsers
|