Joomla.it Forum

Joomla! 1.5.x (versione con supporto terminato) => Joomla! 1.5 => : Donatinho 17 Jan 2011, 12:01:56

: Web Link redirect
: 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

: Re:Web Link redirect
: Donatinho 18 Jan 2011, 16:32:27
.... o magari se esiste un extensions.......
: Re:Web Link redirect
: mattialori 18 Jan 2011, 17:18:07
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
: Re:Web Link redirect
: Donatinho 19 Jan 2011, 14:02:57
Grazie della risposta, provo quanto prima e ti farò sapere
: Re:Web Link redirect
: Donatinho 19 Jan 2011, 18:43:56
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

: Re:Web Link redirect
: mattialori 19 Jan 2011, 20:53:51
Hai fatto il redirect dal controller o dal model?
: Re:Web Link redirect
: Donatinho 19 Jan 2011, 21:09:16
... dal model...
: Re:Web Link redirect
: mattialori 19 Jan 2011, 21:49:26
devi farlo da controller
: Re:Web Link redirect
: Donatinho 19 Jan 2011, 22:18:11
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?
: Re:Web Link redirect
: mattialori 19 Jan 2011, 22:25:52
http://api.joomla.org/Joomla-Framework/Application/JController.html#setRedirect
: Re:Web Link redirect
: Donatinho 21 Jan 2011, 17:53:13
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);
      }
   }
}