2014-06-09 6 views
5

मुझे Sync_gateway की भूमिकाओं में कोई समस्या है। मेरा sync_functionmissing role त्रुटि requireRole("adminSync"); पर फेंकता है।सिंक_गेटवे कॉचबेस आवश्यकता रोल

मैं उपयोगकर्ता admin1 साथ तक पहुँचने रहा है कि के रूप में यह इस प्रकार कॉन्फ़िगर किया गया है:

"name": "admin1", 
    "all_channels": {}, 
    "passwordhash_bcrypt": "**************", 
    "explicit_roles": { 
    "adminSync": 1 
    }, 
    "rolesSince": { 
    "adminSync": 1 
    } 

इसके अलावा, मैं भूमिका के रूप में विन्यस्त है

{ 
    "name": "adminSync", 
    "admin_channels": { 
    "CH_HORAS": 1, 
    "CH_PERSONAS": 1, 
    "CH_PROYECTOS": 1 
    }, 
    "all_channels": { 
    "CH_HORAS": 1, 
    "CH_PERSONAS": 1, 
    "CH_PROYECTOS": 1 
    } 
} 

इस त्रुटि के किसी भी विचार ??

धन्यवाद।

उत्तर

1

पुन, मुझे पता चला क्या गलत था,

चर realUserCtx.roles एक नक्शा है, इसलिए requireRole (..) जो दो सरणियों की तुलना करने की जरूरत है, यह हमेशा वापसी के अनुसार असत्य।

इसलिए मुझे इस मानचित्र को तुलना से पहले एक सरणी में बदलने के लिए src/channel/sync_runner.go के स्रोत कोड को बदलने की आवश्यकता है।

function mapToArray(mapObject){ 
     var _array = []; 
     if(mapObject){ 
      for (var property in mapObject) { 
       _array.push(property); 
      } 
     } 
     return _array; 
    } 
तो

..

function requireRole(roles) { 
    ... 
    if (!anyInArray(mapToArray(realUserCtx.roles), roles)) 
    } 

आप और अधिक स्पष्टीकरण की जरूरत है तुम मुझे निजी संदेश में संपर्क कर सकते हैं। शुभकामनाएं

+0

धन्यवाद यह काम करता है! – pikap

4

मैं एक ही समस्या पर काम कर रहा हूं। मैं sync_gateway स्रोत कोड src/चैनल/sync_runner.go में देखा और requireRole परिभाषा है, जो पाया:

console.log(Array.isArray(realUserCtx.roles)); 
:

function requireRole(roles) { 
      if (!shouldValidate) return; 
      roles = makeArray(roles); 
      if (!anyInArray(realUserCtx.roles, roles)) 
       throw({forbidden: "missing role"}); 
    } 

फिर भी, मैं अपने सिंक समारोह में कोड के इस हिस्से जोड़ने की कोशिश की

.. और यह झूठा लौट आया। realUserCtx.roles एक सरणी नहीं है, लेकिन एक फ़ंक्शन और मुझे नहीं पता कि इस फ़ंक्शन बॉडी के अंदर क्या है।

मुझे आशा है कि यह समाधान खोजने में मदद कर सकता है।

संबंधित मुद्दे