Joomla.it Forum
Joomla! 1.5.x (versione con supporto terminato) => Joomla! 1.5 => : Donatinho 17 Jan 2011, 12:01:56
-
Buongiorno, avrei bisogno di rendere un collegamento "Web Link" accessibile solo ad utenti registrati.
Ho impostato la categoria dei Web Link su "registered", ma, se non sono loggato, mi restituisce una pagina con errore "403 - Non sei autorizzato a visualizzare questa risorsa."
Cosa devo modificare per fargli aprire la pagina che rimanda al messaggio di login?
Grazie
-
.... o magari se esiste un extensions.......
-
Il metodo che controlla se l'utente è registrato o meno si trova nel model category e si chiama getCategory(). Ovviamente se vuoi dare accesso solo agli utenti registrati alla visione di un link il model che verrà usato è weblink. A questo punto penso che basti modificare il pezzo
if ($this->_category->access > $user->get('aid', 0)) {
JError::raiseError(403, JText::_("ALERTNOTAUTH"));
return false;
}
con un redirect verso la pagina che vuoi, però non penso si possa fare il redirect all'interno del model, lo devi gestire nel controller
-
Grazie della risposta, provo quanto prima e ti farò sapere
-
Premetto che non sono un programmatore, ma ho trovato la riga di codice che genera l'errore nel file "components/com_weblink/models/weblink.php" dalla linea 94-96:
// Check whether category access level allows access
if ($this->_data->cat_access > $user->get('aid', 0)) {
JError::raiseError( 403, JText::_('ALERTNOTAUTH') );
return;
}
ho provato ad inserire "header("Location: index.php?option=com_user&view=login");" e mi restitusce l'errore "500 Layout no found"...
Non conosco l'esatta stringa per poter far aprire uno specifico articolo.
Grazie in anticipo
-
Hai fatto il redirect dal controller o dal model?
-
... dal model...
-
devi farlo da controller
-
Ho provato da tutte e due le parti, ma dal model se cambio la parte del "('ALERTNOTAUTH')" con qualsiasi altro testo, mi cambia il messaggio sul sito, quindi ho pensato che fosse quello da cambiare.
Comunque sai dirmi qual è la giusta stringa per reindirizzare alla pagina del login?
-
http://api.joomla.org/Joomla-Framework/Application/JController.html#setRedirect
-
Ho provato dal controller.php del componet weblink, ma non ho trovato dove poterlo inserire.
Ti posto il contenuto del controller.php
<?php
/**
* @version $Id: controller.php 14401 2010-01-26 14:10:00Z louis $
* @package Joomla
* @subpackage Content
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant to the
* GNU General Public License, and as distributed it includes or is derivative
* of works licensed under the GNU General Public License or other free or open
* source software licenses. See COPYRIGHT.php for copyright notices and
* details.
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );
jimport('joomla.application.component.controller');
/**
* Weblinks Component Controller
*
* @package Joomla
* @subpackage Weblinks
* @since 1.5
*/
class WeblinksController extends JController
{
/**
* Method to show a weblinks view
*
* @access public
* @since 1.5
*/
function display()
{
// Set a default view if none exists
if ( ! JRequest::getCmd( 'view' ) ) {
JRequest::setVar('view', 'categories' );
}
//update the hit count for the weblink
if(JRequest::getCmd('view') == 'weblink')
{
$model =& $this->getModel('weblink');
$model->hit();
}
// View caching logic -- simple... are we logged in?
$user = &JFactory::getUser();
$view = JRequest::getVar('view');
$viewcache = JRequest::getVar('viewcache', '1', 'POST', 'INT');
if ($user->get('id') || ($view == 'category' && $viewcache == 0)) {
parent::display(false);
} else {
parent::display(true);
}
}
}