-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
restricted Contact page displays error stack instead of 404 or 403 error page (Fix #7053) #7867
Conversation
I wouldn't change the exception throwing back to the deprecated JError. That is the wrong approach. |
Ok. It sounds strange to change the throw by the JError... I'll check that. This comment was created with the J!Tracker Application at issues.joomla.org/joomla-cms/7867. |
Done. |
Shall we not display a non authorised message in that case as it seems that even after merging #7824 , we do not get the correct message for a contact. Something like:
|
I'll prepare those corrections. |
@Bakual |
To me it looks like bad design if you have to check the source of the issue at this time. |
@Bakual |
Sorry, my fault. I remembered this PR wrong and for some reason thought the code was in the view. Imho, it is wrong to distinguish the error message based on a filter state. You don't know why the result is false. It may be because the contact doesn't exist or becauise the permissions aren't sufficient. But I don't understand that method to begin with. It is named |
From the code it seems that |
I think this PR is still wrong. Also, the code in ContactModelContact is wrong / bad, too.
if ($extendedData = $this->getContactExtendedData($this->_item[$pk]))
{
$this->_item[$pk]->articles = $extendedData->articles;
$this->_item[$pk]->profile = $extendedData->profile;
} Happy to make a new PR to replace this one if needed. |
Tested @joomdonation modifications in a file he sent me and it works great. We now get the Error message from viewthml display() OK |
@infograf768 |
I will let @joomdonation discuss this with you :) |
@jlainezs Feel free to make the change to this PR. I think we both have same thinking about this issue and solution. For your information, here is my code with the direction mentioned on my comment |
Nice! I'll take it tomorrow afternoon and will do a push. |
OK here. Thanks. This comment was created with the J!Tracker Application at issues.joomla.org/joomla-cms/7867. |
@joomdonation can you please test if it works as expected with the changes? If yes we can move it together with @infograf768 's test to RTC. Thanks. |
@zero-24 As part of the code is mine, I already tested it. However, I am not sure I am allowed to give the test result? |
I've tested it before pushing and, for me, its OK. |
Thanks. Moving to RTC than! This comment was created with the J!Tracker Application at issues.joomla.org/joomla-cms/7867. |
why add another function |
getContactQuery is not good because it has an extra query to get the contact data while we have the data available already I decided to add buildContactExtendedData instead of improve getContactQuery because I am worry that it might be used somewhere and cause something broken. |
restricted Contact page displays error stack instead of 404 or 403 error page (Fix #7053)
This is a fix for the issue #7053. It is solved as suggested on the report.
Steps to reproduce the issue
Create a contact, public & published, save, memorise id (1).
Create another contact, public & unpublished, save, memorise id (2).
Create another contact, registered & published, save, memorise id (3).
Create a menu item "list contacts in category", call it "contacts".
Navigate to http://mysite.com/contacts to see the list of contacts as public, you'll see just one contact (1).
Navigate to this contact (http://mysite.com/contacts/1-somename), all good.
Navigate to unpublished contact (http://mysite.com/contacts/2-somename), see 404 "Contact not found" error page. All good.
Navigate to registered contact (http://mysite.com/contacts/3-somename), see long error message with stack trace.
Expected result
404 or 403 Error page (error template based) saying "contact not found" or "not authorised"
Actual result
Normal page (not error template based) with just an error message:
Error
exception 'Exception' with message 'Contact not found' in C:\home\bgpa\j31\components\com_contact\models\contact.php:328 Stack trace: #0 C:\home\bgpa\j31\components\com_contact\models\contact.php(252): ContactModelContact->getContactQuery(28) #1 C:\home\bgpa\j31\libraries\legacy\view\legacy.php(401): ContactModelContact->getItem() #2 C:\home\bgpa\j31\components\com_contact\views\contact\view.html.php(66): JViewLegacy->get('Item') #3 C:\home\bgpa\j31\libraries\legacy\controller\legacy.php(690): ContactViewContact->display() #4 C:\home\bgpa\j31\components\com_contact\controller.php(42): JControllerLegacy->display(true, Array) #5 C:\home\bgpa\j31\libraries\legacy\controller\legacy.php(728): ContactController->display() #6 C:\home\bgpa\j31\components\com_contact\contact.php(15): JControllerLegacy->execute(NULL) #7 C:\home\bgpa\j31\libraries\cms\component\helper.php(391): require_once('C:\home\bgpa\j3...') #8 C:\home\bgpa\j31\libraries\cms\component\helper.php(371): JComponentHelper::executeComponent('C:\home\bgpa\j3...') #9 C:\home\bgpa\j31\libraries\cms\application\site.php(191): JComponentHelper::renderComponent('com_contact') #10 C:\home\bgpa\j31\libraries\cms\application\site.php(230): JApplicationSite->dispatch() #11 C:\home\bgpa\j31\libraries\cms\application\cms.php(252): JApplicationSite->doExecute() #12 C:\home\bgpa\j31\index.php(40): JApplicationCms->execute() #13 {main}
System information (as much as possible)
J3.4.1, SEF on, error reporting off (!!!)
Additional comments
Probably a clash of old and new ways of raising errors (JError vs Exception) in contact model.
adding this line in components/com_contact/models/contact.php @ line 257 fixes the situation:
else JError::raiseError(404, JText::_('COM_CONTACT_ERROR_CONTACT_NOT_FOUND'));