AYUDA POR FAVOR CON AUTENTICACION DE USUARIO

edited diciembre 2010 in Dudas/Problemas
Hola amigos estoy con un problema otra vez el cual consiste en:

como puedo obtener la informacion del usuario autenticado en todas mis paginas es decir que salga el nombre del usuario autenticado mas el apellido
como rescato esas variables no solo para todas las paginas si no tambien necesito ingresar el nombre del usuario autenticado en un lugar del formulario es dece ir si tengo una receta y necesito agregar el usuario en este caso el medico el nombre del medico en un text_field_tag

he tratado algo como esto
<?php

	/**
	 * Es la clase que administra el acceso a la aplicación
	 *
	 */
	class LoginController extends ApplicationController {
		
		function index(){
						
			
		}
		
		
		
		
public function valida(){
      $login      =   $this->request("login");
      $password      =   $this->request("password");
      $auth= new Auth("model","class: Usuarios", "login: $login","password: $password", "estado: A");
      if($auth->authenticate()){
         $login      =   $auth->get_identity();
         $usuarios   =   $this->Usuarios->find($login["id"]);
         Session::set("usuarios_nombres", $login["nombres"]);
         Session::set("usuarios_apellidos", $login["apellidos"]);
             
          
         
        return $this->route_to('controller: paciente');
 } 
 

else {
 Flash::error("Usuario/Clave incorrectos");
 return $this->route_to("action: index");
 }


}
function salir(){
			/**
			 * Destruye la sesión actual del usuario
			 */
			Auth::destroy_identity();
			$this->route_to('action: index');
		}



		
	}

donde supuestamente guardo las variables en sesion set::

pero como las recato en mi formulario


en mi index donde despliego todos mis pacientes trate de llamarlo de esta manera
pero no me sale nada
<? content() ?>


   <? $usuarios_nombres   =   Session::get("nombres"); ?>

   <? print $usuarios_nombres ?>
    
<h1>Lista de Pacientes en Sistema</h1>



<? if($Paciente->count()){ ?>
<table cellspacing='0' cellpadding='2' border='1' style='border: 1px solid #CFCFCF'>
	<tr>
		<th>His.Clin</th>
		<th>Nombres.</th>
		<th>Ape. Paterno</th>	
		<th>Ape. Materno</th>	
		<th>Est. Civil</th>
		<th>Telefono</th>		
		<th>Inf.Completa</th>
		<th> </th>
		<th> </th>
	</tr>

<? foreach($Paciente->find('order: his_clinica') as $paciente): ?>

<? tr_color('#F0FAFF', '#FFFFFF') ?>
	<td><?= $paciente->his_clinica ?></td>
	<td><?= $paciente->nombres ?></td>
	<td><?= $paciente->paterno ?></td>
	<td><?= $paciente->materno ?></td>
	<td><?= $paciente->est_civil ?></td>
	<td><?= $paciente->telefono ?></td>
	
	<td><?= link_to('paciente/consultar/'.$paciente->his_clinica, 'Dat. Generales') ?></td>
	<td><?= link_to('paciente/modificar/'.$paciente->his_clinica, 'Modificar') ?></td>
	<td><b><?= link_to('paciente/borrar/'.$paciente->his_clinica, img_tag('delete.gif', 'border: 0', 'title: Eliminar registro?'),
	                   'confirm: Desea borrar el Post?') ?>
	    </b>
	</td>
</tr>

<? endforeach;?>
</table>

<? } else { print "No hay pacientes"; } ?>
	
<br>

pero esto es solo parte de lo querio hacer tambien me gustaria rescatar el nombre y el apellido del autenticado en un formulario
por favor ayuda no se que mas hacer estoy varios dias clavada en esto

Comentarios

  • edited 10:02
    hola
    no entendí algunas cosas que quieres hacer

    pero si de manejar datos relativos a la sesión del usuario se trata hay dos cosas que resultan utiles:

    Auth

    cuando haces
    $auth= new Auth("model","class: Usuarios", "login: $login","password:
    
    estas cargando todo lo referente al registro que coincide con login y password; Desde $auth puedes verificar si se encontró el usuario (retornaría todo el registro correspondiente al usuario en la tabla) o si no se encontró

    con
    $auth->authenticate()
    
    puedes verificar si se identifico o no el usuario

    con
    Auth::is_valid()
    
    tambien puedes validar la identidad del usuario

    y con
    Auth::get('campo');
    
    obtienes el dato correspondiente a la columna 'campo' en el registro del usuario
    Mas información sobre Auth en el pdf y/o la wiki

    Si necesitas manejar otros datos que no están en la tabla de login prueba con Session

    Session
    sesion hace las cosas super simples

    con
    Session::set('edad','45');
    
    agregas un valor a la session que podrás consultar en cualquier momento, para el caso estamos creando un valor llamado 'edad' con el valor '45'

    para obtener en cualquier vista o partial ese valor basta con:
    echo Session::get('edad');
    
    de modo que se imprimiría '45'

    necesitas almacenar mas datos?
    Session::set('datos_paciente',$array);
    
    almacenalos en un array, se obtiene de la misma forma con la que se obtuvo la edad
    Mas información sobre Session en el pdf y/o la wiki

    En ambos caso no olvides que hay que destruir esos datos al cerrar sesion y hay que procurar no almacenar mucha información en la session

    Ahora dices que quieres que ese dato aparezca en un texfield
    <?php echo text_field_tag('name: login','id: username', 'value: '.Auth::get('nombre'));
    
    o pudiera ser
    
    <?php echo text_field_tag(array('login','username' => Auth::get('nombre'), 'id' => 'elid'));
    

    espero haber ayudado
    saludos!!
  • muchisimas gracias amigo omizucar todo me sale a pedir de voca
    estoy feliz
    muchisimas gracias
  • ahora querido amigo tengo otra duda, me explico
    public function valida(){
          $login      =   $this->request("login");
          $password      =   $this->request("password");
          $auth= new Auth("model","class: Usuarios", "login: $login","password: $password", "estado: A");
          if($auth->authenticate()){
             $login      =   $auth->get_identity();
             $usuarios   =   $this->Usuarios->find($login["id"]);
             Session::set("nombres", $login["nombres"]);
             Session::set("apellidos", $login["apellidos"]);
             
             Session::set('edad','45');
               
              
             
            return $this->route_to('controller: paciente');
     }
    
    todo esto me sale excelente por partes es decir
    si yo llamo apellidos
    me sale el apellido solamente
    pero ahora quiero que me salga nombres y apellidos en un solo llamado
    como hago tu me dices que todo lo ponga en un $array
    y como hago eso
    gracias por tu ayuda me sierve de mucho tus consejos
  • edited 10:02
    hacer Session::set("nombres", $login["nombres"]); es innecesario
    porque tienes ese dato disponible en Auth::get('nombre');

    para que se tenga el nombre y apellido en session puedes trabajarlo asi
    Session::set("nombreapellido", Auth::get('nombre').'  '.Auth::get('apellido'));
    
    //y para mostrarlo
    
    echo Session::get("nombreapellido");
    

    poner eso en un array seria complicarse, comento que se puede almacenar un array ahí, pero en este caso no es necesario

    Saludos!!
Sign In or Register to comment.