Yii Framework Forum: Funcionalidad De Registro De Usuarios Y Roles - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Funcionalidad De Registro De Usuarios Y Roles Rate Topic: -----

#1 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 18-July 13

Posted 02 August 2013 - 09:23 AM

Hola a todos

Llevo varias horas o un día de trabajo leyendo e intentando entender como funciona la autenticaciónen Yii. He leido los siguientes articulos Implementing a User Level Access System y Authentication and Authorization y un video en Youtube. Pero aun estoy algo perdido en el proceso de las llamadas entre Modelo (LoginForm), Controlador (SiteController función Login) y la función authenticate de la clase UserIdentity.

Mayormente no se que valida el Modelo y el Controlador (me parece que es por mi poco conocimiento en PHP) pero me parece que UserIdentity se encarga de mirar en la Base de Datos o por lo menos en el ejemplo que da la aplicación en el arreglo de users -> demo y admin. Tampoco entiendo como puedo asignar un Rol o Permiso al Usuario según el ejemplo del segundo LINK me parece que es cuando hace

$this->setState('title', $record->title);


class UserIdentity extends CUserIdentity
{
    private $_id;
    public function authenticate()
    {
        $record=User::model()->findByAttributes(array('username'=>$this->username));
        if($record===null)
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        else if($record->password!==crypt($this->password,$record->password))
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
        {
            $this->_id=$record->id;
                               //¿title es el  ROLE?
            $this->setState('title', $record->title);
            $this->errorCode=self::ERROR_NONE;
        }
        return !$this->errorCode;
    }
 
    public function getId()
    {
        return $this->_id;
    }
}


Si explicando lo que necesito hacer ayuda, pues les explico -> necesito pasar la autenticación de una página en joomla 2.5 a Yii lo cual se me ha hecho ridiculamente dificil. Se que puedo guardar una sesión en la base de datos pero no tengo idea de como hacerlo. Una vez pueda saber quien se autenticó en joomla pues puedo ofrecer mis servicios de Yii pero en realiadad no entiendo en que parte de Yii se autentica el usuario y como dije me parece que es en la función authenticate de la clase UserIdentity.

Gracias adelantadas por su ayuda, muchisimoas gracias
0

#2 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 18-July 13

Posted 02 August 2013 - 11:56 AM

acabo de encontrar que la forma debe ser tener de esta forma

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'login-form',
	//'enableClientValidation'=>true,
	'enableAjaxValidation'=>true,
	'clientOptions'=>array(
		'validateOnSubmit'=>true,
	),
)); ?>


pero esta raro que no funciona bien, me explico -> la forma no valida
0

#3 User is offline   xavieremv 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 19-September 12

Posted 02 August 2013 - 01:28 PM

Hola que tal,

según veo no necesitas manejar o autenticar el usuario en yii ya que joomla lo hace,

en yii podrías manejar un regla para verificar si el usuario esta autenticado y determinar si puede usar los servicios de yii o no, pero repito el que dice si el usuario esta logueado es joomla.

te dejo un código donde determinas los datos de usuario de joomla

/**
 * @package		Joomla.Site
 * @copyright	Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license		GNU General Public License version 2 or later; see LICENSE.txt
 */
// Set flag that this is a parent file.
define('_JEXEC', 1);


if (file_exists( 'ROOT_JOOMLA/defines.php')) {
	include_once 'ROOT_JOOMLA/defines.php';
}

if (!defined('_JDEFINES')) {
	define('JPATH_BASE', 'ROOT_JOOMLA';
	require_once JPATH_BASE.'/includes/defines.php';
}

require_once JPATH_BASE.'/includes/framework.php';

// Instantiate the application.
$app = JFactory::getApplication('site');


// Route the application.
$app->route();

global $my;


donde ROOT_JOOMLA es la raiz de la carpeta donde esta instalado joomla

y en la variable $my tienes los datos de usuario, como por ejemplo

  	        $my->groups //roles o perfiles del usuario
		$my->name //nombre 
		$my->username //usuario
		$my->guest //logueado; 0 si, 1 no
		$my->email //correo


paras mas información has un print_r a la variable $my

por ultimo si vas a utilizar dicho código dentro de yii encierralo en las siguientes sentencias para que no de comflicto con las librerías internas de yii

spl_autoload_unregister(array('YiiBase','autoload'));
//conexión a joomla...
spl_autoload_register(array('YiiBase','autoload'));

0

#4 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 18-July 13

Posted 02 August 2013 - 03:37 PM

Interesante,¿donde debo poner ese código?
0

#5 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 18-July 13

Posted 03 August 2013 - 12:25 AM

hola,

gracias por el código. He puesto el codigo que distes en /layout/main.php y en index.php en el directorio raiz y llevo algo de tiempo intentando obtener los datos de la variable $my pero siempre me devuelve 1 por lo que me parece que no esta registrando bien el usuario. Tambien he intentado usar$user = JFactory::getUser(); pero tambien devuelve 1. Estoy usando una instalación de joomla 2.5. saludos y muchas gracias
0

#6 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 18-July 13

Posted 06 August 2013 - 09:05 AM

Update -> Debo decirles que lo he logrado. utilizando lo siguiente

define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/..' )); //should change to match to your file directory
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
$session =& JFactory::getSession();


Luego en protected->layout->main.php utilizo la variable $user con las llamadas que mencionas y veo los datos
echo $user->email;


¿que significa el simbolo -> y => en php?
0

#7 User is offline   Apositivo 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 20
  • Joined: 06-August 13

Posted 06 August 2013 - 10:09 AM

View PostMoriPR, on 06 August 2013 - 09:05 AM, said:

Update -> Debo decirles que lo he logrado. utilizando lo siguiente

define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/..' )); //should change to match to your file directory
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
$session =& JFactory::getSession();


Luego en protected->layout->main.php utilizo la variable $user con las llamadas que mencionas y veo los datos
echo $user->email;


¿que significa el simbolo -> y => en php?


Hola, saludos, En PHP no se utiliza el operador punto (.) para referirte a un método o atributo ( si has trabajado con .NET, ellos si lo usan :) ) El operador utilizado en php es la flecha (->). . ..todo esto si estamos hablando de POO. correcto ?
0

#8 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 18-July 13

Posted 06 August 2013 - 02:46 PM

View PostHely Rojas, on 06 August 2013 - 10:09 AM, said:

Hola, saludos, En PHP no se utiliza el operador punto (.) para referirte a un método o atributo ( si has trabajado con .NET, ellos si lo usan :) ) El operador utilizado en php es la flecha (->). . ..todo esto si estamos hablando de POO. correcto ?



correcto, gracias por la ayuda
0

#9 User is offline   bluyell 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 222
  • Joined: 28-October 11

Posted 13 August 2013 - 11:21 PM

Dispones del modulo "Cruge", el cual es un gestor de RBAC avanzado que ya trae UI para gestionar tanto RBAC como Usuarios ademas de una enorme API y documentacion en español.
http://yiiframeworke...php?title=Cruge
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users