2016-03-23 9 views
3

için, FOSUserBundle özel profil aramış ve ben FriendsOfSymfony kullanmak, ama iki kullanıcıları oluşturursanız, her biri diğerlerinin yüklenen dosya görebilirsiniz. Birden fazla web sitesinde arama yapmaya çalıştım ve benim için çalışan bir şey bulamadı. örnek: Ben her kullanıcı dosya yüklemek için özel profiller oluşturmak isteyen Adding extended profile entity to FOS UserBundleBen boşuna yüzden özel profillerini içeren bir symfony projesini yapmaya çalıştık

, onlardan başka kimse (sadece yönetici ve spesifik kullanıcı) onları görmek mümkün olmalıdır.

+0

En kolay yol, FOSUser ProfileController'ı genişletmek (showAction'ın üzerine yazmak) ve diğer kullanıcıların profili görüntülemesini engellemek için showAction'a bazı mantık uygulamak olabilir. –

cevap

1

Soru çok geniştir.

Başvurunuzda kimlik uygulamaya koyması gerekmektedir. Yüklenen dosyalarınıza user id veya user relation ekleyin ve Daha sonra bu dosyaları listelediğiniz/gösterdiğiniz denetleyicide (/profile/my-uploads) - yalnızca bu belirli (oturum açmış) kullanıcıya ait dosyaları yükleyin. Yönetici erişim için

- özel bir back-office oluşturarak veya User Impersonation uygulamak olacaktır iyi. http://symfony.com/doc/current/components/security/authentication.html

+0

Uygulamada kimlik doğrulamam var, giriş yapmak için kullanıcı adı ve parola gerektiren kullanıcılar yapabilirim, ancak hesabı olan herhangi bir kullanıcı herhangi bir kullanıcının ne yüklediğini görebilir –

1

Eğer

artırdık Sağlanan

Symfony \ Bundle \ FrameworkBundle \ Kontrolör \ Kontrolörü

veya FOSUserBundle Controller şey yapıyor deneyebilirsiniz:

Symfony'nin belgelerinde bu konuda daha fazla oku böyle:

public function publicProfileAction($handleOrHash = '') 
{ 
    if ($handleOrHash == '') { 
     throw new NotFoundHttpException("Unable to find this user"); 
    } 

    $user = $this->getUserService()->getUserByHandleOrHash($handleOrHash); 

    if (!$user) { 
     throw new NotFoundHttpException("Unable to find this user"); 
    } 

    if ($user != $this->getUser()) { 
     throw new AccessDeniedException("You cannot see this user profile"); 
    } 

    return $this->render('MyUserBundle:Default:public-profile.html.twig', 
     array('user' => $user) 
    ); 
} 

getUserService() öğesi getPerByHandleOrHash() adlı bir yöntemle userRepository'ye erişimi olan bir nesneyi, doktrin sorgulaması için depoyu kullanan bir nesne döndürür.

+0

user.php dosyasına koymalı mıyım? Eğer –

+0

kullanıcı varlık User.php mı vermek istiyorsanız ben symfony ile bu deneyimli, biraz daha rehberliğine ihtiyacım ben? Yukarıdaki kod bir kontrolörün içine girer. En iyi okunabilir: https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_controllers.html Kodunuzu görmeden tam olarak size rehberlik etmesi zor. –

+0

Bağlantı için teşekkürler ve yes user.php kullanıcı varlıklarıdır. Geç cevap için özür dilerim, dokümanı okuyacağım ve belki de sorunu çözecek, sorumu aldığın ilgiye ve şimdiye kadar vermiş olduğunuz cevaplara teşekkür ederim! –