Relacionado al tutorial Kumbiaphp : Login de la aplicacion utilizando una cuenta de correo [ phpmail ]
class SmtpAuth implements AuthInterface { /** * Nombre del archivo (si es utilizado) * * @var string */ private $filename; /** * Servidor de autenticación (si es utilizado) * * @var string */ private $server; /** * Nombre de usuario para conectar al servidor de autenticacion (si es utilizado) * * @var string */ private $username; /** * Password de usuario para conectar al servidor de autenticacion (si es utilizado) * * @var string */ private $password; /** * Atributos del modelo a comparar para autenticacion valida */ private $compare_attributes = array(); /** * Identidad encontrara */ private $identity = array(); /** * Constructor del adaptador * * @param $auth * @param $extra_args */ public function __construct ($auth, $extra_args) { foreach (array('class') as $param) { if (isset($extra_args[$param])) { $this->$param = $extra_args[$param]; } else { throw new AuthException("Debe especificar el parametro '$param' en los parámetros"); } } Load::models($extra_args['class']); unset($extra_args[0]); unset($extra_args['class']); $this->compare_attributes = $extra_args; } /** * Obtiene los datos de identidad obtenidos al autenticar * */ public function get_identity () { return $this->identity; } /** * Autentica un usuario usando el adaptador * * @return boolean */ public function authenticate () { Load::lib("phpmailer"); $result=null; if( $this->compare_attributes['login']!="" && $this->compare_attributes['password']!="" && $this->compare_attributes['server']!=""){//comprobar existencia de parametros $login=$this->compare_attributes['login']; $password=$this->compare_attributes['password']; $server=$this->compare_attributes['server']; /** * Configuramos la conexion con el SMTP */ $mail=new phpmailer(); $mail->Mailer = "smtp"; $mail->Host = "$server"; $mail->Port = 25; $mail->SMTPAuth = true; $domain=substr($server,5); $mail->Username = "$login@$domain"; // SMTP username $mail->Password = "$password"; // SMTP password /** * Valido los datos con la funcion SmtpConnect() */ try{ if($mail->SmtpConnect()==true){ $identity = array(); $result=$usuario; foreach ($usuario->fields as $field) { /** * Trata de no incluir en la identidad el password del usuario */ if (! in_array($field, array('password' , 'clave' , 'contrasena' , 'passwd' , 'pass'))) { $identity[$field] = $usuario->$field; } } } $this->identity = $identity; }catch(phpmailerException $ex){ Flash::error($ex->errorMessage() . "[$mail->Username | Server: $mail->Host]" ); } } return $result; } /** * Asigna los valores de los parametros al objeto autenticador * * @param array $extra_args */ public function set_params ($extra_args) { foreach (array('login','server', 'secret' , 'principal' , 'password' , 'port' , 'max_retries') as $param) { if (isset($extra_args[$param])) { $this->$param = $extra_args[$param]; } } } }
No hay comentarios:
Publicar un comentario