@live-change/user-service 0.2.3 → 0.2.10

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 CHANGED
@@ -2,8 +2,62 @@ 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
+ output.debug("NEW USER AUTH", authData, "FROM", oldAuthData)
20
+ const newUser = authData ? authData.user : null
21
+ if(newUser == user) return
22
+ if(user) {
23
+ if(userObject) {
24
+ await userObject.unobserve(userObserver)
25
+ }
26
+ userObject = null
27
+ userObserver = null
28
+ }
29
+ if(newUser) {
30
+ user = newUser
31
+ output.debug("NEW USER", user)
32
+ userObject = userTable.object(user)
33
+ const currentUserObject = userObject
34
+ await userObject.onChange(async (userData, oldUserData) => {
35
+ const newCredentials = userData ? {
36
+ id: user,
37
+ user,
38
+ roles: userData.roles
39
+ } : null
40
+ output.debug("NEW CREDENTIALS", newCredentials)
41
+ output.change(newCredentials, oldCredentials)
42
+ oldCredentials = newCredentials
43
+ }).then(observer => {
44
+ if(user == newUser) {
45
+ userObserver = observer
46
+ } else { // if user changed before observer loaded data
47
+ currentUserObject.unobserve(observer)
48
+ }
49
+ })
50
+ } else {
51
+ output.change(null, oldCredentials)
52
+ oldCredentials = null
53
+ }
54
+ })
55
+ }
56
+ })`, {
57
+ session: credentials.session,
58
+ authenticatedTableName: AuthenticatedUser.tableName,
59
+ userTableName: User.tableName
60
+ }]
61
+ )
8
62
  }
9
63
  })
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
@@ -49,16 +49,6 @@ definition.trigger({
49
49
 
50
50
  definition.action({
51
51
  name: 'signOut',
52
- properties: {
53
- user: {
54
- type: User,
55
- validation: ['nonEmpty']
56
- },
57
- session: {
58
- type: Session,
59
- validation: ['nonEmpty']
60
- }
61
- },
62
52
  async execute({ }, { client, service }, emit) {
63
53
  if(!client.user) throw "notSignedIn"
64
54
  emit({
package/model.js CHANGED
@@ -31,7 +31,7 @@ definition.event({
31
31
  const Session = definition.foreignModel('session', 'Session')
32
32
 
33
33
  const AuthenticatedUser = definition.model({
34
- name: "LoggedInUser",
34
+ name: "AuthenticatedUser",
35
35
  sessionProperty: {
36
36
  },
37
37
  userItem: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/user-service",
3
- "version": "0.2.3",
3
+ "version": "0.2.10",
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": "8a862142bf20ec41e48e1f6e7c8cc4312d22c04e"
27
+ "gitHead": "ae86524e5ac7052eb6b6e7b34e319373b6bdef23"
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)