New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@live-change/access-control-service

Package Overview
Dependencies
Maintainers
1
Versions
267
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@live-change/access-control-service - npm Package Compare versions

Comparing version 0.2.28 to 0.2.29

94

invite.js

@@ -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',

6

package.json
{
"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"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc