Amigos,
Consegui resolver meu problema em partes, vou tentar explicar:
A minha aplicação existe uma tabela de usuarios cadastrados, porém gostaria que automaticamente minha aplicação fizesse uma conexão com o Active Diretory do windows, pegando assim todos usuários. Consegui fazer isto, porém gostaria que fizesse o seguinte. Quando o usuário logasse, com o usuário do Active, a aplicação comparasse com o usuário que está na tabela da aplicação, e desse as devidas permissões que tb estão definidas na aplicação. Se o usuário do Active não tivesse no banco da aplicação mostraria uma mensagem, que esse usuário não tem permissão para entrar no sistema.
Se alguém não entendeu, posso explicar de novo.
Abaixo a conexão com os usuário do Active Directory via LDAP
\protected\components\UserIdentity.php
class UserIdentity extends CUserIdentity {
public function getId() {
return usuario::model()->findByAttributes(array('login' => $this->username))->idusuario;
}
public function authenticate() {
$users = usuario::listUserPassword();
// Tenta se conectar com o servidor
$servidor_ad = 'XXX.XXX.XXX.XXX'; // Endereco IP do servidor AD
$dominio_ad = 'DDDDDDD'; // Nome do dominio
$ldap = @ldap_connect($servidor_ad);
// Tenta autenticar no servidor
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
if (!($bind = @ldap_bind($ldap, "{$this->username}@{$dominio_ad}", $this->password))) {
$this->errorCode = self::ERROR_PASSWORD_INVALID;
} else {
$this->errorCode = self::ERROR_NONE;
}
return!$this->errorCode;
}
}
Depois descomentem a linha “extension=php_ldap.dll” no arquivo “php.ini”.
Com isso todos os usuários cadastrados na empresa podem acessar o Sistema com seus usuários e senhas padrão da empresa. Mas quando é um usuário que não está no banco da minha aplicação, dá um erro assim
Trying to get property of non-object
public function getId() {
return usuario::model()->findByAttributes(array('login' => $this->username))->idusuario; //Erro nesta linha
}
Alguém pode me ajudar a tirar esse erro. Agora falta pouco!!
Obrigado a todos.