示例#1
0
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';

  }

});
示例#2
0
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.';
  }

});