@live-change/access-control-service
Advanced tools
Comparing version 0.2.28 to 0.2.29
@@ -6,5 +6,18 @@ const App = require("@live-change/framework") | ||
const { AccessInvitation, invitationProperties } = require('./model.js') | ||
const { AccessInvitation, invitationProperties, Access } = require('./model.js') | ||
const access = require('./access.js')(definition) | ||
const contactProperties = { | ||
contactType: { | ||
type: String, | ||
validation: ['nonEmpty'] | ||
}, | ||
contact: { | ||
type: String, | ||
validation: ['nonEmpty'] | ||
} | ||
} | ||
const Session = definition.foreignModel('session', 'Session') | ||
definition.event({ | ||
@@ -14,3 +27,3 @@ name: 'userInvited', | ||
await AccessInvitation.create({ | ||
id: App.encodeIdentifier(['user_User', user, objectType, object]), | ||
id: App.encodeIdentifier([ 'user_User', user, objectType, object ]), | ||
contactOrUserType: 'user_User', contactOrUser: user, | ||
@@ -27,3 +40,3 @@ objectType, object, | ||
await AccessInvitation.create({ | ||
id: App.encodeIdentifier([contactType, contact, objectType, object]), | ||
id: App.encodeIdentifier([ contactType, contact, objectType, object ]), | ||
contactOrUserType: contactType, contactOrUser: contact, | ||
@@ -36,2 +49,59 @@ objectType, object, | ||
definition.event({ | ||
name: 'userInvitationAccepted', | ||
async execute({ user, objectType, object, roles }) { | ||
await AccessInvitation.delete( | ||
App.encodeIdentifier([ 'user_User', user, objectType, object ]) | ||
) | ||
await Access.create({ | ||
id: App.encodeIdentifier([ 'user_User', user, objectType, object ]), | ||
sessionOrUserType: 'user_User', | ||
sessionOrUser: user, | ||
objectType, | ||
object, | ||
roles | ||
}) | ||
} | ||
}) | ||
definition.trigger({ | ||
name: 'inviteWithMessageAuthenticated', | ||
waitForEvents: true, | ||
properties: { | ||
...contactProperties, | ||
session: { | ||
type: Session, | ||
validation: ['nonEmpty'] | ||
}, | ||
actionProperties: { | ||
type: Object | ||
} | ||
}, | ||
async execute({ contactType, contact, session, objectType, object }, { service }, emit) { | ||
const contactTypeUpperCase = contactType[0].toUpperCase() + contactType.slice(1) | ||
/// Load invitation | ||
const invitation = App.encodeIdentifier([ contactType + '_' + contactTypeUpperCase, contact, objectType, object ]) | ||
console.log("INVITATION", invitation) | ||
const invitationData = await AccessInvitation.get(invitation) | ||
if(!invitationData) throw 'not_found' | ||
const { roles } = invitation | ||
/// Create account and sign-in: | ||
const user = app.generateUid() | ||
await service.trigger({ | ||
type: 'connect' + contactTypeUpperCase, | ||
[contactType]: contact, | ||
user | ||
}) | ||
await service.trigger({ | ||
type: 'signUpAndSignIn', | ||
user, session | ||
}) | ||
emit({ | ||
type: 'userInvitationAccepted', | ||
user, objectType, object, roles | ||
}) | ||
return user | ||
} | ||
}) | ||
for(const contactType of config.contactTypes) { | ||
@@ -89,3 +159,19 @@ | ||
} else { | ||
/// TODO: Send message to contact | ||
// Authenticate with message because we will create account later | ||
const messageData = { | ||
fromType: client.user ? 'user_User' : 'session_Session', | ||
from: client.user ?? client.session, | ||
objectType, object, | ||
roles: params.roles, | ||
message: params.message | ||
} | ||
await service.trigger({ | ||
type: 'authenticateWithMessage', | ||
contactType, | ||
contact, | ||
messageData, | ||
action: 'inviteWithMessage', | ||
actionProperties: { objectType, object }, | ||
targetPage: { name: 'access:invitationAccepted', objectType, object } | ||
}) | ||
emit({ | ||
@@ -92,0 +178,0 @@ type: 'contactInvited', |
{ | ||
"name": "@live-change/access-control-service", | ||
"version": "0.2.28", | ||
"version": "0.2.29", | ||
"description": "", | ||
@@ -24,5 +24,5 @@ "main": "index.js", | ||
"dependencies": { | ||
"@live-change/framework": "0.6.0" | ||
"@live-change/framework": "0.6.3" | ||
}, | ||
"gitHead": "34309fef58572e1a8794b52438430dd421c57d65" | ||
"gitHead": "37d229ac05adf5e045ae3dcc826c6945d5dc3670" | ||
} |
13728
358
+ Added@live-change/framework@0.6.3(transitive)
- Removed@live-change/framework@0.6.0(transitive)
Updated@live-change/framework@0.6.3