سؤال

لدي ببساطة وظيفة crud التي تم إنشاؤها بواسطة symfony. هناك فئة مقالة ومالك مقال. أريد منع المستخدمين الآخرين غير صاحب المقال الحالي tu edit. كنت أفكر في مخصص مرشح أو التحقق الخاص بي ، لكن عندما أقوم بتنفيذ المدقق ، يمكن لبعض المستخدمين الدخول في نموذج التحرير (لم يتمكنوا من إرساله فقط). ولكن عندما أقوم بتنفيذ مرشح المستخدم ، ستكون هناك مشكلة لجعل التصفية تنفذ فقط قبل بعض الإجراءات (تحرير في هذه الحالة).

كيف أفعل ذلك؟

هل كانت مفيدة؟

المحلول

أعتقد أن هذا مدمج. يجب أن تقرأ عن الأمن ملف.

تحديث: أرى ... على ما يبدو نظام الأمان يستدعي الطريقة hasCredential() من كائن المستخدم. ربما يمكنك تمديد طريقة TTHIS في فئة المستخدم المخصصة الخاصة بك ، بحيث تقوم بإجراء فحص خاص عندما تكون معلمته ، على سبيل المثال ، "article_owner".

بمجرد الانتهاء من ذلك ، كل ما عليك فعله هو تحديد بيانات الاعتماد هذه للإجراءات التي تريدها

نصائح أخرى

لا أعتقد أن Symfony يدعم التحكم في الوصول إلى مستوى الكائن خارج المربع. واجهت هذه المشكلة الخاصة في أحد تطبيقاتي وانتهى بي الأمر بالتحقق الصريح ما إذا كان المستخدم المسجل في مطابقة المالك في إجراء التحرير. هذه هي الوظيفة التي استخدمتها لذلك:

protected function hasObjectAccess($obj) {
    if ($this->getUser()->hasGroup('admin')
        || $obj->getOwnerId() == $this->getUser()->getId()))) {
      return true;
    }
    return false;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top