Olá desenvolvedores, o tutorial de hoje é sobre validação de login. Considere a seguinte situação, temos um usuário com o login admin, ou seja, o usuário com todos os privilégios que o sistema tem para oferecer. Ou ainda, o usuário Alex, com os privilégios de usuário comum. O fato aqui é que poderíamos ter vários usuários com o nome Alex, mas imagina o que aconteceria se vários usuários tivessem o login “alex”?
O cenário que ilustramos acima, onde existem dois usuários com o mesmo nome e login, causaria uma inconsistência no sistema. E não apenas isso. Se o login admin é do administrador do sistema, e se este mesmo sistema permite o cadastro de vários usuários com o login admin, seria um risco imenso a segurança da aplicação.
A nossa aplicação até o momento possui uma regra de restrição que impede o cadastro de dois ou mais usuários com o mesmo login. Entretanto, há uma falha, a mesma regra não se aplica a atualização. Ou seja, é fácil contornar a regra de restrição que implementamos, visto que ela assegura apenas uma situação. Assim, vamos tratar de corrigir esta falha.
A nossa regra de restrição se aplica a um cenário onde o ID ou está nulo ou vazio. Porém, no caso da atualização o ID já existe, desse modo, aqui a verificação é se o novo login proveniente de uma atualização já existe no sistema.
IMPLEMENTANDO A VALIDAÇÃO DE ATUALIZAÇÃO
Então, na classe responsável pelo acesso aos dados, a DaoUsuario.java implementaremos o método validarLoginUpdate, que receberá como parâmetro login e id. E isso porque temos que verificar se o login já existe para um usuário diferente do que o que está sendo atualizado/validado.
E novamente iremos utilizar a instrução SQL count, onde se o login não existir no sistema, ele retornará zero, mas se já existir, retornará um. Iremos selecionar na tabela usuário onde o login é igual ao login informado na atualização, mas o id é diferente do que está sendo atualizado. Neste caso de login igual e id diferente, temos então que o login que estamos tentamos cadastrar já existe no sistema.
Desse modo se resultSet.getInt(“qtder”) <= 0, isto é, se a expressão for verdadeira, o usuário não existe, mas se for maior que zero, a expressão será falsa e barrará a atualização.
Assim se a expressão resultSet.getInt(“qtder”) <= 0, retornar um false, na servlet usuário.java no doPost será feita uma verificação após a verificar se o usuário e existe e logicamente está gravado no banco de dados. Assim, se um false for retornado uma mensagem informando que o usuário já existe será exibida na tela.
Mas se a expressão retornar um true, o sistema seguirá seu fluxo normal e a atualização do usuário será realizada com sucesso.
EM POUCAS PALAVRAS
Implementamos então uma restrição agora também na atualização, deixando nosso sistema bem mais seguro. Quando uma tentiva de atualizar um usuário para um login que já exista no sistema ocorrer, a mensagem será exibida e o registro não será atualizado. A dica é que algumas situações poderão ser resolvidas no SQL. Mas fica para você o desafio de tentar fazer suas próprias implementações utilizando Java, porque somente assim você irá aprender e evoluir como programador.