@live-change/user-service 0.2.2 → 0.2.8
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 +49 -1
- package/definition.js +4 -2
- package/model.js +1 -1
- package/package.json +2 -2
- package/userItem.js +0 -1
package/authenticator.js
CHANGED
|
@@ -2,8 +2,56 @@ const App = require('@live-change/framework')
|
|
|
2
2
|
const app = App.app()
|
|
3
3
|
const definition = require('./definition.js')
|
|
4
4
|
|
|
5
|
+
const { User, AuthenticatedUser } = require('./model.js')
|
|
6
|
+
|
|
5
7
|
definition.authenticator({
|
|
6
8
|
async credentialsObservable(credentials) {
|
|
7
|
-
|
|
9
|
+
return app.dao.observable(
|
|
10
|
+
['database', 'queryObject', app.databaseName, `(${
|
|
11
|
+
async (input, output, { session, authenticatedTableName, userTableName }) => {
|
|
12
|
+
const authenticatedTable = input.table(authenticatedTableName)
|
|
13
|
+
const userTable = input.table(userTableName)
|
|
14
|
+
let user = null
|
|
15
|
+
let userObject = null
|
|
16
|
+
let userObserver = null
|
|
17
|
+
let oldCredentials = null
|
|
18
|
+
await authenticatedTable.object(session).onChange(async (authData, oldAuthData) => {
|
|
19
|
+
const newUser = authData ? authData.user : null
|
|
20
|
+
if(newUser == user) return
|
|
21
|
+
if(user) {
|
|
22
|
+
await userObject.unobserve(userObserver)
|
|
23
|
+
userObject = null
|
|
24
|
+
userObserver = null
|
|
25
|
+
}
|
|
26
|
+
if(authData.user) {
|
|
27
|
+
user = newUser
|
|
28
|
+
userObject = userTable.object(user)
|
|
29
|
+
await userObject.onChange(async (userData, oldUserData) => {
|
|
30
|
+
const newCredentials = userData ? {
|
|
31
|
+
id: user,
|
|
32
|
+
user,
|
|
33
|
+
roles: userData.roles
|
|
34
|
+
} : null
|
|
35
|
+
output.change(newCredentials, oldCredentials)
|
|
36
|
+
oldCredentials = newCredentials
|
|
37
|
+
}).then(observer => {
|
|
38
|
+
if(user == newUser) {
|
|
39
|
+
userObserver = observer
|
|
40
|
+
} else { // if user changed before observer loaded data
|
|
41
|
+
userObject.unobserve(observer)
|
|
42
|
+
}
|
|
43
|
+
})
|
|
44
|
+
} else {
|
|
45
|
+
output.change(null, oldCredentials)
|
|
46
|
+
oldCredentials = null
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
})`, {
|
|
51
|
+
session: credentials.session,
|
|
52
|
+
authenticatedTableName: AuthenticatedUser.tableName,
|
|
53
|
+
userTableName: User.tableName
|
|
54
|
+
}]
|
|
55
|
+
)
|
|
8
56
|
}
|
|
9
57
|
})
|
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/model.js
CHANGED
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.8",
|
|
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": "1e8102d02b6745fea401e967c211c6a9cb03e19b"
|
|
28
28
|
}
|
package/userItem.js
CHANGED
|
@@ -8,7 +8,6 @@ definition.processor(function(service, app) {
|
|
|
8
8
|
for(let modelName in service.models) {
|
|
9
9
|
const model = service.models[modelName]
|
|
10
10
|
if(model.userItem) {
|
|
11
|
-
console.trace("PROCESS MODEL " + modelName)
|
|
12
11
|
if (model.properties.user) throw new Error('user property already exists!!!')
|
|
13
12
|
const originalModelProperties = {...model.properties}
|
|
14
13
|
const modelProperties = Object.keys(model.properties)
|