module.exports = Governor.extend({ name: 'error', domains: { view: function(prop){ return { active: prop('active', false), message: prop('message'), type: prop('type') }; } // lazyLoad: function(prop) { // return { // 'doSomethingAwesome': [ 'some/{{path}}/script.js', prop('path') ], // 'icons': [ // [ 'images/{{name}}.png', prop('path') ] // ] // } // } // persisted: function(prop, resources){ // // return // // create, update, or patch // [ resources.person, 'create', prop('person') ] // [ resources.person, 'update', { name: prop('name')} ] // ]; // // // return [ // // [ 'POST', '/api/people/:id', { id: props('id') } ] // // ] // } }, laws: function(when, advisors, policies) { // Very simple side-effects defined with a callback function when.all(advisors.federation.isCurrently('*+error+...')) .then(function sayErrorState(){ console.log('error state!') return true; }); // when(advisors.federation.is('*+error+...')) // .ask(advisors.stuff).to('happen'); // when(advisors.federation.is('*+error+...')) // .updateProp('active'); // when(advisors.federation.is('*+error+...')) // .ask(advisors.person).to('edit', { personId: 1 }); // when(advisors.federation.is('*+error+..')) // .then(policies.redirect); }, updateActive: function() { return true; }, updateMessage: function() { return 'stuff happens!'; }, updateType: function() { return 'foo'; } });
module.exports = Governor.extend({ name: 'auth', requiresAuth: [ ['personEdit'] ], domains: { view: function(prop){ return { prompt: prop('authPrompt', 'Please log in.'), isAuthenticated: prop('isAuthenticated', false) }; } }, laws: function(when, advisors, policies) { when.any(advisors.federation.isCurrently(this.requiresAuth)) .then(function(){ console.log('auth required 2!') return true; }); when(advisors.federation.isCurrently(this.requiresAuth)) .updateProp('authPrompt'); }, updateAuthPrompt: function() { return 'Yo. Log in.'; } });