@live-change/user-service 0.2.4 → 0.2.11
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/authenticator.js +9 -3
- package/definition.js +4 -2
- package/index.js +22 -10
- package/model.js +13 -0
- package/package.json +2 -2
package/authenticator.js
CHANGED
|
@@ -16,29 +16,35 @@ definition.authenticator({
|
|
|
16
16
|
let userObserver = null
|
|
17
17
|
let oldCredentials = null
|
|
18
18
|
await authenticatedTable.object(session).onChange(async (authData, oldAuthData) => {
|
|
19
|
+
output.debug("NEW USER AUTH", authData, "FROM", oldAuthData)
|
|
19
20
|
const newUser = authData ? authData.user : null
|
|
20
21
|
if(newUser == user) return
|
|
21
22
|
if(user) {
|
|
22
|
-
|
|
23
|
+
if(userObject) {
|
|
24
|
+
await userObject.unobserve(userObserver)
|
|
25
|
+
}
|
|
23
26
|
userObject = null
|
|
24
27
|
userObserver = null
|
|
25
28
|
}
|
|
26
|
-
if(
|
|
29
|
+
if(newUser) {
|
|
27
30
|
user = newUser
|
|
31
|
+
output.debug("NEW USER", user)
|
|
28
32
|
userObject = userTable.object(user)
|
|
33
|
+
const currentUserObject = userObject
|
|
29
34
|
await userObject.onChange(async (userData, oldUserData) => {
|
|
30
35
|
const newCredentials = userData ? {
|
|
31
36
|
id: user,
|
|
32
37
|
user,
|
|
33
38
|
roles: userData.roles
|
|
34
39
|
} : null
|
|
40
|
+
output.debug("NEW CREDENTIALS", newCredentials)
|
|
35
41
|
output.change(newCredentials, oldCredentials)
|
|
36
42
|
oldCredentials = newCredentials
|
|
37
43
|
}).then(observer => {
|
|
38
44
|
if(user == newUser) {
|
|
39
45
|
userObserver = observer
|
|
40
46
|
} else { // if user changed before observer loaded data
|
|
41
|
-
|
|
47
|
+
currentUserObject.unobserve(observer)
|
|
42
48
|
}
|
|
43
49
|
})
|
|
44
50
|
} else {
|
package/definition.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
|
|
2
1
|
const app = require("@live-change/framework").app()
|
|
3
2
|
|
|
3
|
+
const relationsPlugin = require('@live-change/relations-plugin')
|
|
4
|
+
|
|
4
5
|
const definition = app.createServiceDefinition({
|
|
5
|
-
name: "user"
|
|
6
|
+
name: "user",
|
|
7
|
+
use: [ relationsPlugin ]
|
|
6
8
|
})
|
|
7
9
|
|
|
8
10
|
module.exports = definition
|
package/index.js
CHANGED
|
@@ -40,6 +40,8 @@ definition.trigger({
|
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
async execute({ user, session }, { client, service }, emit) {
|
|
43
|
+
const userData = await User.get(user)
|
|
44
|
+
if(!userData) throw 'userNotFound'
|
|
43
45
|
emit({
|
|
44
46
|
type: "signedIn",
|
|
45
47
|
user, session
|
|
@@ -49,16 +51,6 @@ definition.trigger({
|
|
|
49
51
|
|
|
50
52
|
definition.action({
|
|
51
53
|
name: 'signOut',
|
|
52
|
-
properties: {
|
|
53
|
-
user: {
|
|
54
|
-
type: User,
|
|
55
|
-
validation: ['nonEmpty']
|
|
56
|
-
},
|
|
57
|
-
session: {
|
|
58
|
-
type: Session,
|
|
59
|
-
validation: ['nonEmpty']
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
54
|
async execute({ }, { client, service }, emit) {
|
|
63
55
|
if(!client.user) throw "notSignedIn"
|
|
64
56
|
emit({
|
|
@@ -95,5 +87,25 @@ definition.trigger({
|
|
|
95
87
|
}
|
|
96
88
|
})
|
|
97
89
|
|
|
90
|
+
definition.action({
|
|
91
|
+
name: 'deleteMe',
|
|
92
|
+
properties: {
|
|
93
|
+
},
|
|
94
|
+
access: (params, { client }) => {
|
|
95
|
+
return !!client.user
|
|
96
|
+
},
|
|
97
|
+
async execute({ }, { client, service }, emit) {
|
|
98
|
+
const user = client.user
|
|
99
|
+
await service.trigger({
|
|
100
|
+
type: 'userDeleted',
|
|
101
|
+
user
|
|
102
|
+
})
|
|
103
|
+
emit([{
|
|
104
|
+
type: "deleted",
|
|
105
|
+
user
|
|
106
|
+
}])
|
|
107
|
+
return user
|
|
108
|
+
}
|
|
109
|
+
})
|
|
98
110
|
|
|
99
111
|
module.exports = definition
|
package/model.js
CHANGED
|
@@ -72,4 +72,17 @@ definition.event({
|
|
|
72
72
|
}
|
|
73
73
|
})
|
|
74
74
|
|
|
75
|
+
definition.event({
|
|
76
|
+
name: "deleted",
|
|
77
|
+
properties: {
|
|
78
|
+
user: {
|
|
79
|
+
type: User
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
async execute({ user }) {
|
|
83
|
+
const authenticated = await AuthenticatedUser.indexRangeGet('byUser', user)
|
|
84
|
+
await Promise.all([ User.delete(user) ].concat(authenticated.map(auth => AuthenticatedUser.delete(auth))))
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
|
|
75
88
|
module.exports = { User, AuthenticatedUser }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@live-change/user-service",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.11",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
"@live-change/framework": "^0.5.7",
|
|
25
25
|
"@live-change/relations-plugin": "^0.1.10"
|
|
26
26
|
},
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "2b95c89678f276d6b3a039652169c5fc819df8df"
|
|
28
28
|
}
|