function entrar() { //obter o usuário e a senha e tentar efetuar o login $usuario = isset($_POST['username']) ? $_POST['username'] : ''; $senha = isset($_POST['password']) ? $_POST['password'] : ''; //validar if ($usuario == "" || $senha == "") { $var = array('success' => false, 'message' => htmlentities('Dados do usuário não informados')); echo json_encode($var); return false; } $this->load->model('usuario_model'); $u = new Usuario_model(); $u->where('login', $usuario); // @todo: permitir ao usuário trocar o hash padrão $u->where('senha', md5($senha)); // @todo: Recuperar da configuração do sistema // $u->where('situacao_id', 2); $u->get(1); if ($u->result_count() != 1) { $var = array('success' => false, 'message' => htmlentities('Usuário não localizado')); echo json_encode($var); return false; } // @todo: recuperar do sistema switch ($u->situacao_id) { case 1: //Novo //Novo case 4: //Expirado $this->trocar_senha($u); break; case 2: //Ativo break; case 3: //Inativo //Inativo default: //@todo: dar mensagem e voltar a tela de login return false; break; } // insere data e hora do ultimo login $u->update('ultimo_acesso', date("Y-m-d H:i:s")); /* salva na session o usuário, o cooke só guarda 4KB, * talvez seja necessário salvar apenas o id do usuario */ $usuario = array('id' => $u->id, 'nome' => $u->nome, 'login' => $u->login, 'email' => $u->email, 'tipo_usuario_id' => $u->tipo_usuario_id, 'situacao_id' => $u->situacao_id, 'senha' => $u->senha, 'ultima_troca' => $u->ultima_troca, 'ultimo_acesso' => $u->ultimo_acesso); $this->session->set_userdata('usuario_logado', $usuario); $var = array('success' => true, 'usuario' => array('login' => $usuario['login'], 'nome' => $usuario['nome'])); echo json_encode($var); return TRUE; }
public function delete($id) { $u = new Usuario_model(); $u->where('id', $id); //@todo: Recuperar da configuração do sistema return $u->update('situacao_id', 3); }
function recuperar_senha() { try { $login = isset($_POST['login']) ? $_POST['login'] : ''; $email = isset($_POST['email']) ? $_POST['email'] : ''; $usuario = new Usuario_model(); $usuario->where('login', $login); $usuario->where('email', $email); $usuario->get(1); if ($usuario->result_count() != 1) { $var = array('success' => false, 'message' => htmlentities('Usuário informado não localizado')); echo json_encode($var); return false; } $this->enviar_email($usuario->email, $usuario->senha); $var = array('success' => true); echo json_encode($var); return true; } catch (Exception $e) { $var = array('success' => false, 'message' => htmlentities($e->getMessage())); echo json_encode($var); return false; } }
function alterar_senha() { try { $login = isset($_POST['login']) ? $_POST['login'] : ''; $password = isset($_POST['password']) ? $_POST['password'] : ''; $password_new_1 = isset($_POST['password_new_1']) ? $_POST['password_new_1'] : ''; $password_new_2 = isset($_POST['password_new_2']) ? $_POST['password_new_2'] : ''; //salvando o hash da senha $password_hash = md5($password); $password_new_hash = md5($password_new_1); /* * validar entradas do usuário */ if (strlen($login) == 0) { $var = array('success' => false, 'message' => htmlentities('Login do usuário não informado!')); echo json_encode($var); return false; } else { if (strlen($password) == 0) { $var = array('success' => false, 'message' => htmlentities('Senha atual do usuário não informada!')); echo json_encode($var); return false; } else { if (strlen($password_new_1) == 0) { $var = array('success' => false, 'message' => htmlentities('Nova senha não informada!')); echo json_encode($var); return false; } else { if (strlen($password_new_2) == 0) { $var = array('success' => false, 'message' => htmlentities('Confirmação de nova senha não informada!')); echo json_encode($var); return false; } else { if ($password_new_1 !== $password_new_2) { $var = array('success' => false, 'message' => htmlentities('Confirmação de senha não confere com a nova senha informada!')); echo json_encode($var); return false; } } } } } /* * localizar usuário pelo login e senha */ $usuario = new Usuario_model(); $u = $usuario->where('login', $login)->where('senha', $password_hash)->get(1); if (count($u->all) == 0) { $var = array('success' => false, 'message' => htmlentities('Usuário informado não encontrado ou a senha informada não é a senha atual de acesso!')); echo json_encode($var); return false; } else { /* * testar se a nova senha é igual a uma das últimas * senhas informadas pelo usuário, se for * não permitir seu uso. */ if ($password_new_hash == $password_hash) { $var = array('success' => false, 'message' => htmlentities('A senha não pode ser identica a senha atual!')); echo json_encode($var); return false; } if ($password_new_hash == $u->senha_anterior1 || $password_new_hash == $u->senha_anterior2 || $password_new_hash == $u->senha_anterior3) { $var = array('success' => false, 'message' => htmlentities('A senha não pode ser identica as últimas 3 já informadas!')); echo json_encode($var); return false; } /* * obter a situação de usuário ativo */ $situacao = new Situacao_usuario_model(); $s = $situacao->where('descricao', 'Ativo')->get(1); if (count($s->all) == 0) { throw new Exception('Situação "Ativo" não existente!'); } /* * efetuar a troca de senha do usuário */ $u->senha_anterior3 = $u->senha_anterior2; $u->senha_anterior2 = $u->senha_anterior1; $u->senha_anterior1 = $u->senha; $u->senha = md5($password_new_1); $u->ultima_troca = date('Y-m-d H:i:s'); $u->ultimo_acesso = date('Y-m-d H:i:s'); $u->situacao_usuario_id = $s->id; $u->save(); /* * incluir o usuário na session */ $usuario = array('id' => $u->id, 'nome' => $u->nome, 'login' => $u->login, 'email' => $u->email, 'tipo_usuario_id' => $u->tipo_usuario_id, 'situacao_id' => $u->situacao_id, 'senha' => $u->senha, 'ultima_troca' => $u->ultima_troca, 'ultimo_acesso' => $u->ultimo_acesso); $this->session->set_userdata('usuario_logado', $usuario); /* * direcionar para página principal do sistema */ $var = array('success' => true, 'url' => site_url('welcome'), 'message' => htmlentities('Troca efetuada com sucesso!')); echo json_encode($var); return true; } } catch (Exception $ex) { $var = array('success' => false, 'message' => htmlentities($ex->getMessage())); echo json_encode($var); return false; } }