laravel - कैसे करें: लैरवेल 4 के साथ संत्री 2 अनुमतियां लागू करें?




laravel-4 cartalyst-sentry (2)

अपने groups तालिका में आप JSON का उपयोग करके अनुमतियां सेट करते हैं।

मेरे पास निम्नलिखित कॉलम हैं:

id | name | permissions

और एक पंक्ति:

1 | admin | {"admin":1, "create_news": 1}

तालिका उपयोगकर्ता_ग्रुप का उपयोग कर किसी उपयोगकर्ता को समूह में असाइन करें

अब आप निम्न उदाहरण का उपयोग यह जांचने के लिए कर सकते हैं कि उपयोगकर्ता को दी गई अनुमति है या नहीं:

$user = Sentry::getUser();
if ($user->hasAccess('create_news')) {
    echo "You can create a news item";
}
else {
    echo "You can't create a news item";
}

मैं अपनी साइट में लैरवेल 4 के साथ निर्मित कार्टलास्ट सेंड्री 2 का उपयोग करने की कोशिश कर रहा हूं। असल में मुझे समझ में नहीं आता कि अनुमतियों को कैसे कार्यान्वित किया जाए।

समूह के लिए अनुमतियों के लिए मैंने जो उदाहरण देखे हैं, वे उदाहरण के रूप में निम्नलिखित निर्दिष्ट करते हैं:

{
    "name" : "Administrator",
    "permissions" : 
    {
        "user.create" : 1,
        "user.delete" : 1,
        "user.view"   : 1,
        "user.update" : 1
    }
}

इसलिए यह व्यवस्थापक समूह के लिए अनुमतियां सेट कर रहा है। लेकिन इन अनुमतियों को कहां सेट किया गया है?

तालिका 'समूहों' में अनुमतियों नामक एक फ़ील्ड है जो एक टेक्स्ट फ़ील्ड है - क्या वे वहां सेट हैं - यदि ऐसा है तो कैसे? या ये एक मॉडल या नियंत्रक में सेट हैं?

क्या कोई मुझे लार्वेल 4 ऐप में उपयोग करने के तरीके पर कदम से कदम उठा सकता है? मैंने सहायक दस्तावेज़ों को पढ़ा है जो कार्यों के माध्यम से दुश्मन करते हैं लेकिन मुझे यकीन नहीं है कि कार्यों को काम करने के लिए डेटा कैसे सेट किया जाए।


असल में आपको करना है ..

अपने समूह बनाएं

Sentry::getGroupProvider()->create([
    'name' => 'Super Administrators',
    'permissions' => [
        'system' => 1,
    ],
]);

Sentry::getGroupProvider()->create([
    'name' => 'Managers',
    'permissions' => [
        'system.products' => 1,
        'system.store' => 1,
        'system.profile' => 1,
    ],
]);

किसी समूह को किसी विशेष उपयोगकर्ता को सेट करें, इस स्थिति में यह वर्तमान लॉग इन उपयोगकर्ता को प्रबंधक सेट कर रहा है

Sentry::getUser()->addGroup( Sentry::getGroupProvider()->findByName('Managers') );

जांचें कि क्या उपयोगकर्ता के पास विशेष पहुंच है या नहीं

if ( Sentry::getUser()->hasAnyAccess(['system','system.products']) )
{
    // Will be able to do a thing
}

जांचें कि कोई उपयोगकर्ता सुपर प्रशासक है (केवल इस समूह में 'सिस्टम' पहुंच है)

if ( Sentry::getUser()->hasAnyAccess(['system']) )
{
    // Will be able to do a thing
}

किसी विशेष उपयोगकर्ता से सभी समूह प्राप्त करें

try
{
    // Find the user using the user id
    $user = Sentry::getUserProvider()->findById(1);

    // Get the user groups
    $groups = $user->getGroups();
}
catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
{
    echo 'User was not found.';
}