2010-11-21 21 views
0

Symfony tarafından oluşturulan CRUD işlevine sahibim. Makale sınıfı ve makale sahibi var. Diğer kullanıcıların, geçerli makalenin sahibinden düzenlemesini engellemek istiyorum. Kendi filtrem veya geçerlilik denetleyicimi özel olarak düşünmekteydim, ancak onaylayıcıyı uygulayacağım zaman, bazı kullanıcılar düzenleme formuna girebiliyorlar (sadece gönderemediler). Ancak, kullanıcı filtresini uygulayacağımda, yalnızca bazı eylemlerden önce filtreyi yürütmek için sorun olacaktır (bu durumda düzenleme).Symfony CRUD eylemlerine erişim kısıtlaması

Bunu nasıl yaparım?

cevap

0

Bence bu yerleşik. security.yml dosyasını okumalısınız.

GÜNCELLEME: Görüyorum ki ... güvenlik sistemi calls the method hasCredential() of the user object. Belki özel kullanıcı sınıfınızda tthis yöntemini genişletebilirsiniz, böylece parametresi olduğu zaman özel bir kontrol yapar, örneğin, 'article_owner'. Bu kez

yapmanız gerekecek tüm ben symfony kutudan çıktığı Nesne düzeyinde erişim kontrolü destekler sanmıyorum

+0

Bunun ne olduğunu biliyorum. Ama ben örneğin yapmalıyım. "all: kimlik bilgileri: owner_article_5" tüm makaleler için ... Her sahibine kimlik bilgilerini nasıl belirlediğimi bilmiyorum. – user364622

+0

@ user364622: Güncellememe bkz. Yukarıdaki – greg0ire

+0

Nice:] Benim eylem sınıfımda alredy writen bir yöntem "isOwner" var. Ama önerdiğin çözüm cadı güzel ve zekidir. Kullanıcı sınıfının aşırı yüklenmesinin bu sorun için iyi bir şey olduğunu düşünüyorum. – user364622

0

istediğiniz işlemler için bu kimlik belirtmek olduğunu yapılır. Uygulamalardan birinde bu sorunla karşılaştım ve oturum açmış kullanıcının düzenleme eylemindeki sahibiyle eşleşip eşleşmediğini açıkça belirledim. Bu, bunun için kullandığım işlev:

protected function hasObjectAccess($obj) { 
    if ($this->getUser()->hasGroup('admin') 
     || $obj->getOwnerId() == $this->getUser()->getId()))) { 
     return true; 
    } 
    return false; 
}