docs: function allowModule (args) {
      // validate args
      this.requireValidArgsModule(args)
      // start new audit
      this.newAudit(args, 'module')
      // get access rules
      var rules = this.getRules('module')
      // if no rules exist for modules then default to allow
      if (!rules) {
          return this.audit.setAllow(true)
      }
      // get roles from session or use defaults
      var roles = this.getRoles(args.session)
      // default to allow
      var allow = true
      // check global rules
      if (rules.allow) {
          allow = this.isRoleAllowed(allow, roles, rules.allow, false, 'global')
      }
      // get module specific rules
      rules = rules.module && rules.module[args.module]
      // if there are no module specific rules then return current allow
      if (!rules) {
          return this.audit.setAllow(allow)
      }
      // check module specific rule
      if (rules.allow) {
          allow = this.isRoleAllowed(allow, roles, rules.allow, false, 'module')
      }
      // get method specific rules
      rules = rules.method && rules.method[args.method]
      // if there are no method specific rules then return current allow
      if (!rules) {
          return this.audit.setAllow(allow)
      }
      // check method specific rule
      if (rules.allow) {
          allow = this.isRoleAllowed(allow, roles, rules.allow, false, 'method')
      }
  
      return this.audit.setAllow(allow)
  }