fala rapaziada beleza que que tá falando com vocês é o Lucas do canal Dev entusiasta e hoje galera queria já começar agradecendo pelo feedback pelo comentário de vocês que foram Nossa muito legal tá ligado nos comentários de vocês vocês apoiaram demais e com certeza vou estar continuando essa série né Hoje é o nosso segundo episódio e assim eu tô muito feliz de verdade vou J que vou trazer o melhor conteudo possível para vocês vou dar o meu melhor beleza E assim a aio hoje tá muito massa certo tá com os 403 minutos de duração né
já queria adicionar hoje nessa aula a verificação do e-mail já com o envio no e-mail e tals Porém a aula ia ficar com mais de uma hora de duração então assim acabou que ia ficar muito muito longo que eu deixei desse jeito então na próxima a gente já vai estar adicionando isso e também nas próximas aulas aí autenticação e autorização tals mas hoje Já começamos é a arquitetura do projeto já acertamos ela junto com e a criação de conta né de entidade usando um pouco do Spring Security do user the Tails ali então assim já
tá bem interessante certo tá muito massa e é isso e pode deixar aí o feedback de vocês a sugestão o que que vocês querem alguma algo que eu possa melhorar entendeu algo que Poo errado enfim Estamos aqui todos para aprender né Eu tô aqui também para ensinar e para aprender e é isso espero que você gostem de coração se você tiver gostado do vídeo né quando tiver assistido não esquece de deixar o like e se não for inscrito se inscrev no canal porque é para mim O sensor que você sei que vocês estão gostando da
série do conteúdo fechou é isso tamo junto Valeu pronto rapaziada agora estamos aqui nosso código e vamos dar continuidade nessa aula né com que colocamos já na primeira que nós adicionamos o arquivo de docker para criar o banco de dados certo e adicionamos a nossa conexão com alguns perfis do application properties ok galera teve um comentário vou colocar aí na tela é que fala sobre o docker Né não consegi instalar o docker e por agora galera vocês não vão precisar 100% dele né Eu uso ele para criar a conexão com banco para criar o nosso
banco de dados porque é o o jeito que eu gosto de usar acho que facilita muito se você já costuma utilizar conexão com banco de dados de outra forma é você pode criar el sei lá pelo shamp né usando aquele servidorzinho do apach e você Pando no Google no Google não no YouTube você acha isso ok e ou de outra várias outras formas você pode criar aí enfim você pode da sua forma que achar melhor eu gosto de criar desse jeito então eu gravei assim beleza sem enação vamos aqui pro nosso P XML que vamos
adicionar algumas dependências a gente já tinha adicionado algumas quando a gente criou e gerou arquivo Spring porém algumas vão ser necessárias nesse vídeo e para todo o resto da série né que essas aqui ó colar elas aqui que é o Spring Security ele vai ser responsável por permitir a gente fazer toda essa questão da autenticação e autorização e tudo mais E além disso vamos adicionar mais uma também que é o nosso o token jwt Beleza eu vou vou escrever aqui e a gente volta já volto pronto rapaziada já adicionei aqui é eu coloquei só você
escrever do mesmo jeito que eu escrevi é na versão você pode ver que tem um cifrão Chaves e esse nome Java P jwt verion né na real galera eu coloquei isso aqui é o seguinte eu poderia ter feito desse jeito ó colocada a versão aqui desse jeito só que vai ser muito comum você ver dessa forma aqui escrito assim como se fosse passando uma variável por que isso no projeto Você pode ter várias dependências imagina caso alguma que mudar a versão dela desatualizar ou atualizar a versão você tem que achar ela que descobrir então ISO
aqui facilita muito porque você coloc Java jwt você pode colocar qualquer nome aqui certo ess e você cria uma variável você coloca aqui ó rapaziada vendo aqui negócio estava errado aqui as dependências estavam fora do pacote aqui dependências V então não ia nunca aqui beleza tirar aqui a gente tem que colocar pacote dependências perfeito aqui aqui para dar espacinho perfeito agora vamos recarregar o projeto mav prontinho já está tudo certinho é se não aparecer a opção ali para recarregar o projeto você pode clicar com o botão direito vem aqui em maven project ou pode vir
nessa abinha aqui ó maven aí aqui ó recarrega tudo o projeto beleza vamos aqui agora na nossa pasta principal já vamos começar a criação de pastas né Vamos criar aqui a nossa pasta entity beleza e vamos criar a nossa vamos deixar só an aqui por enquanto e vamos deixar vamos criar também aqui nossos controllers Controller colocar só vamos criar também service e o repository para ficar tudo certinho reposit Pronto tem mais algumas que a gente pode criar mais PR frente classe dto enfim e várias outras Ok mas por enquanto vai ser aqui vai servir Vamos
criar nossa classe user beleza aqui na classe user pessoal a gente vai criar o nosso usuário né que vai ser o objeto que a gente vai salvar no banco de dados para poder fazer o login poder fazer os testes todos com eles ok então vamos criar algumas variáveis aqui a principal né que é o ID certo vamos criar também um nome name eu em mente que a gente vai ter que criar também um vamos esar e-mail e uma senha também ok temos que criar também nosso verification code o que que vai ser isso aqui rapaziada
lembra que no come da série no primeiro episódio na introdução eu falei que eu queria adicionar o sistema de ativação de conta o que que é isso sabe quando você se loga em alguma você criar al umaa conta em algum site e ele te manda um e-mail para verificar se aquele e-mail é realmente seu se ele realmente existe e você tem que ir lá no seu e-mail na sua caixa né é pegar o código ou clicar em algum link Então vai ser exatamente isso então criem essa variável aí beleza a gente vai criar aqui também
outra variável que vai ser um bullan Beleza vai ser o enable enabled né para ver se o usuário ele já está com a conta ativa ou se a conta dele ainda está inativa pra gente fazer essa verificação Zinha beleza vamos criar aqui o nosso Construtor com todos os argumentos passar um Construtor sem nenhum argumento deixar ele vazio e vamos fazer o seguinte colocar aqui o @id beleza que é importante Generation Type sude criando aqui manualmente ISS també por nome customizado por isso vai ser users porque no My você colocar deixar só user US uma palavra
reservada Se não me engano então pode dar problema assim né colocar o table aqui para criar uma tabela também forçar sinalização disso para deixar bem freado aqui beleza US também perfeito perfeito agora iremos implementar uma classe que vai ser muito importante aqui que é o Us aqui ela vem do nosso springing Security n e vai ser que vai ser responsável por colocar aqui o e-mail vai ser responsável pelo log a senha enfim implementar os métodos implementar todos eles aqui vai ficar aqui na parte de baixo e aqui vai ter uma cois que a gente vai
ter que fazer que é o por ex usame usame oet usar para logar então assim poderia ser que você usasse como loginho verification code só que ninguém quer isso né a gente quer usar o qu o e-mail certo que é o comum então vamos colocar para ele retornar eil perfeito a gente vai ter que também colocar aqui tudo como vamos passar aqui tá beleza colocar aqui também e acho que aqui foi rapaz tá faltando não sei porque não foi tá faltando um método galera não sei por não foi implementado B vamos criar aqui então na
mão é um método que já tem aqui nosso que vai ser um um B também ele beleza vai ser o mesmo nome is enable pronto fecha e aqui em vez de gente retornar false ou true a gente vai retornar a nossa variável que a gente colocou ponto isso é this né this P enable isso aqui quer dizer o quê E caso o usuário esteja e você criou a conta exemplo você acabou de criar conta só que você ainda não fez a ativação dela pelo e-mail então ele ainda não vai est ativo você ainda não vai
conseguir fazer o login Ok então esse aqui ainda vai est setado como falso após você logar né É você fazer ativação da conta isso aqui vai se tornar trugo vai ficar verdadeiro então aí o usuário vai est habilitado Beleza quando ele tiver habilitado Aí sim ele vai poder fazer requisições tirando isso ele só vai poder fazer nada né basicamente beleza porque esse é o objetivo então agora vamos para o nosso repository colocar user repository repository criar aqui já vamos extender ele né JP JPA né repository temos colocar nossa en entidade aqui que é o user
comica né Lucas ó ver se você tá importando certinho porque Us é uma palavra que é meio reservada Então já tem várias tá ligado Então coloca certinho a que é da entidade que a gente criou e o tipo do id que é long se você colou integer queer outro Enfim meu Deus criar classe sempre faço isso é uma interface aqui beleza rapaziada não é uma classe aqui a gente vai criar um método já customizado que é o método do user details beleza ele vai retornar o user details e o nome desse método vai ser find
by e-mail Ok colocar aqui pronto o que que vai tá que que esse método vai fazer agora ele vai achar algum usuário com e-mail então ele vai ser usado basicamente no login Ok essa é a função dele ele vai ser usado no login do nosso objeto não vai usar agora agora e agora mas mais para frente você vocês vão entender a gente vai colocar ele em jogo Beleza agora vamos criar a nossa nosso dto galera que vai ser o seguinte ó dto criar aqui pacote dto beleza e vamos criar um o record que vai ser
o user request Beleza a gente vai passar aqui basicamente name string name eu coloquei nome velho Deixa eu ver aqui se eu coloquei nome name Beleza vai ter nome name string email muito importante e a senha pass pronto e basicamente D Já tá feito né então vamos criar o nosso user Service service service aqui vamos criar o aut doos beleza Prontinho criado por agora G aqui vai o suficiente cer você v ver a gente vai adicionar mais coisa e vamos começar a criar o nosso método de salvar né que basicamente o nosso foco agora a
gente tem que conseguir registrar algum usuário para depois fazer o login dele beleza é vai retornar um user vamos pronto importar certinho aqui tem que lembrando o a importação tem que ser do A Entidade que a gente fez beleza belezinha Vamos criar novo método vai ser reg Us normalzinho é o básico que funciona tem que sempre ser o nome que você vai conseguir lembrar fil vai conseguir associar seja bem semântico beleza aqui eu vou passar user mesmo por que eu t passando user request porque eu já quero fazer essa transformação lá no contr Beleza is
aqui já vou receber user Não precisa preocupar mais suave suave vamos fazer criar condicional aqui antes de tudo vai ser o seguinte if né seil usar esse mtodo se o essil n user.get eil for diferente de nul que que a gente vai fazer você vai colocar aqui ó New Run Pode excep ser aqui deixa eu ver pode colocar que tá dizendo o qu agora tá falando se a gente encontrar no banco de dados né se essa variável aqui for diferente nulo quer dizer que esse e-mail já existe no blco de dados né porque esse find
by mail vai fazer uma Procura lá no blco de dados se ele já existir é porque esse eil já foi registrado logo logo ele não pode ser registrado novamente Então a gente vai colocar um ELS aqui beleza esse ELS vai cumprir a nossa próxima agora esse ELS que vai fazer se o responsável por salvar mesmo nosso US Ok primeiro galera vamos fazer o seguinte vamos criar aqui uma variável encoded password vai ser o qu a senha criptografada a gente vai usar essa questão de criptografia de senha por é muito importante galera você não pode trabalhar
com a senha lá normal zona se tá criptografado fica muito suscetível a ataques né e a segurança da sua aplicação vai ficar muito vulnerável Então a gente vai usar esse PW Encoder beleza que a gente vai já esqueci de criar Vamos criar aqui Private vai ser basicamente o nome esse nome aqui só que assim ó PW Word Encoder perfeito perfeito ISS aqui é um decodificador Cadê que já vem no spring Security Então ele pode ver como Spring Security ele ajuda demais demais demais demais vamos usar o PW code para usar esse método encode n e
vamos passar aqui ó user P get passw vai pegar essa senha a senha do usuário que ele colocou e vai criptografar vai ficar um negócio todo diferente lá e para você descriptografar ela só com o próprio PW coder que a gente vai fazer só que isso vai ser na parte de login Beleza então vamos colocar aqui ó vamos setar na verdade né nosso user. set password vai ser em cod de password Então vai ser a senha del citografado que vai ser um um hash de palavr gigante vai ser # B20 a ser gigante então assim
a pessoa que olhar olho não vai entender nada que é o que tem que acontecer agora agora antes de gente terminar essa partez a gente tem que criar uma Nossa pasta aqui que vai ser chamada útil nessa pasta a gente usa geralmente para alguns códigos que vão ser algumas funcionalidades bem pequenas beleza como é desse casos aqui que vai ser Random string Ok essa classe vai ser responsável por gerar o nosso código de verificação vai ser um código totalmente aleatório certo e ele vai ser feito para ser um código em que por exemplo imagina que
seu código é ab20 D10 e você criou a conta lá né ele gerou esse código para você só que quando você verificar sua conta esse código vai ficar nugo quer dizer que o qu Você Já Foi verificado Beleza então é isso a gente vai criar aqui criar primeiro um método aqui V criar a Nossa variável aqui vai ser test final string vai ser uma variável imutável Então vai ser characters eu vou colar aqui porque é bem grande basicamente o que eu tô fazendo aqui é o seguinte e colocando todos os nossos tô colocando todas as
letras do alfabeto macul todas minúsculos e d de 0 a 9 que vai gerar combinação com essas com esses e símbolos aqui ok e voltar todo o código vai est no github então você pode pegar e colar aqui para não precisar ficar digitando um por um Beleza então vou colocar Public static string colocar generate Random string colocar aqui um in que vai ser [Música] nossa largura po palavra e vamos implementar aqui essa classe Random essa classe pode ver do próprio Java então adicionar nada aí beleza vamos instanciar ela aqui Security Random pronto e um string
builder também do próprio Java que é para você realmente criar né a a sua string criar também Instância dele agora galera a gente vai fazer aqui um for beleza um código um laço de repetição para criar esse código aleatoriamente beleza assim ó a gente vai colocar o for in e que vai ser igual a zero de início ele vai até e vai né durar esse código até o tamanho vai ser a largura né a largura o comprimento da string que a gente vai querer passar beleza e enquanto ele não conclui isso até enquanto o i
não chegar ao valor de L ele vai continuar repetindo isso aqui n vírgula esse aqui pronto vou abrir as chaves vai ser aqui ó int index igual Security Rand e vai fazer o próximo valor vai seror L perfeito e agora tava vendo onde é que tá o aqui tava negócio vermelho foi tava aqui ó tinha colocado isso aqui ai ai mas enfim agora vamos colocar no string builder el juntar tudo isso [Música] NS pronto a vai passar o index belza fechar aqui codozinho e por último temos que retornar essa vai passar aqui retornar USB P
string beleza Prontinho Prontinho agora que nós já temos nosso criado vamos continuar no nosso service aqui né na criação da conta Random code criar string aqui né e Random Random string nós vamos usar aqui a classe e vamos usar o generate string como a gente tá conseguindo usar sem criar uma variável dele aqui é porque a gente colocou o estático aqui então a CONSEG usar dessa forma Beleza o tamanho que iremos usar vai ser 64 Mas você pode colocar qualquer número colocar 64 aqui que é o que estava em mente beleza e vamos colocar aqui
user verification code Vamos colocar o Random code beleza e vamos colocar que ele vai ser ó set enable como falso Ele ainda não foi ativado então ele vai ter que vai ter que estar falso uma coisa que eu lembrei aqui foi que o seguinte eu vou criar um vou criar um Construtor aqui que vai ter só um name e-mail e o password beleza porque vai ser necessário isso aqui agora vamos US beleza aqui já tá feito basicamente G agora o que falta pra gente é deixa eu ver salvar o usuário né obviamente user save save
user repository ponto save vamos salvar o usuário Opa save ó não save perfeito o usuário já foi salvo Ele ainda não está ativado Mas ele já está salvo lá no banco de dados Beleza agora temos que fazer a parte de agora para esse método ficar completo precisamos fazer a parte de é envio do e-mail certo a gente vai enviar um e-mail PR e-mail da do usuário nesse eil vai est contendo o link PR P clicar para poder ativar a conta beleza e aqui rapaziada a gente vai retornar o user beleza por enquanto ok Por enquanto
você pode ver que até ficou redundante que a gente poderia retornar já aqui certo só que eu não vou retornar agora porque vou deixar desse jeito vai usar mais PR frente certo a gente vai adicionar código nessa ent esse espaço de linha aqui eu vou deixar assim né T preparando terreno para envio de que vai acontecer nas aulas posteriores Ok então vamos criar o Controller aqui user Controller adicionar anotação R Controller vamos adicionar requ map também mapap bar user Ok eh vamos adicionar o autowired que vai ser Private user saf beleza user adicionado aqui agora
vamos fazer o nosso método vai ser o método po vai ser o htp po Ok o método P vai retornar o respons user beleza user Ok user Prontinho deixa eu ver se tá importando user certinho tá é register user beleza aqui a gente vai receber um user request user request Ok no us request aqui a gente vai ter que fazer criar um metodo Zinho vai ser ó o Public Public mod que é o qu vai ser a transferência de dados isso aqui beleza gente vai receber os dados nesse request só que a gente vai passar
vai transformar esse objeto em objeto user Ok fazer aqui não vou passar aqui passar nada com parâmetro vou vai retornar o user Ok e vamos instanciar o novo objeto novo novo user tem que portar certinho do pacote que a gente criou e vai ser name eil perfeito aqui a gente retorna retorna ele a então aqui a gente vem vai anotar aqui Quest que a gente vai est pegando passando um objeto no corpo da requisição beleza e vamos adicionar aqui ó vai ser user request Vamos colocar o Model beleza e vamos instanciar aqui objeto user a
já transferir os dados desse objeto para esse e agora a gente pode chamar o método US Service sem medo de ser feliz né não registre user Vamos colocar aqui passar o user perfeito user user saved foi salvo e vamos retornar ele return respon entity pon Ok eh calma aqui ponto Body e no Body a gente passa user saved beleza e aqui galera essa parte aqui está pronto fechou está pronto eh Lembrando que ainda tem funcionalidade eu vou modificar esse método só que nas aulas posteriores porque senão a aula Vai ficar extremamente longa essa e eu
não quero isso porque vai ficar ruim para vocês verem né uma al muito muito muito longa quero fracionar ela né Não gosto de vídeos muito curto certo e go porque senão fica enrolando muito mas aulas extremamente longas fica ruim também na minha opinião vocês podem opinar aí também né Se vocês gostarem de a aulas longas e unificadas em uma só vocês podem falar que eu vou começar a fazer o que fica melhor para vocês Beleza então basicamente essa parte tá pronta eu vou abrir o Dock aqui vou subir o banco de dados pessoal o banco
de dados subiu aqui porém é eu tinha iniciar o server certo e eu recebi um erro e eu falei pô que erro esse aqui velho quando F ver a coisa muito besta que e muito essencial que eu tinha esquecido que é Esqueci de colocar o @s aqui então não tinha como saber se ess classe de serviço ou não ele não vai conseguir discernir só tiver esse nome aqui isso aqui não é nada para ele aí tem que ter anotação e outra coisa e eu tinha colocado aqui o p certinho porém esqueci também de uma informação
importante você tem que configurar ele né você tem que passar um bind PW Encoder PR que o Spring consiga gerenciar essa classe certo você vai deixar na responsabilidade dele de implementar Então você vai criar aqui ó é mais pacote config beleza Já criei aqui vai adicionar @configuration e esse codozinho aqui você vai passar um Bin para ele entendeu vai deixar essa responsabilidade para o Spring ok a gente vai mexer muito nessa classe posteriormente n Security config mas é mais pra frente Beleza você retornar ele aqui e pronto eu também coloquei esse aqui ó essa configuração
aqui @ enable aut configuration excluir né excluir essa classe por pessoal quando você adiciona o Spring Security automaticamente eh quando você eh iniciar a aplicação ele vai já ter sistema de login eh que vai precisar de um código a senha porém é o negócio nada personalizável entendeu is S vai atrapalhar nos testes porque a gente realmente não usa ele a gente vai substituir ele como a gente ainda não substituiu a gente não quer usar ele por agora senão a gente não conseguiria fazer nenhuma requisição http Quando você quiser salvar alguma conta ele ia bloquear tipo
assim ah você não pode salvar a conta porque você ainda não logou entendeu eu sendo que o esquema de login ainda nem tá feito então coloca isso aqui vai por mim por enquanto para fazer os testes e d Play Beleza vai subir a aplicação aí já abriu o nosso po aqui para testar Pronto já subiu a aplicação eu tô usando a porta 808 foi que eu coloquei aqui ó aqui é na verdade não c tem nenhum né só que automaticamente quando não seta nenhuma vai fica 80 80 e vamos testar aqui ó nome e-mail e
senha vou criar aqui é GT ah ai ai eu falei Ué Deu erro aqui como é que deu erro aqui quando foi esse meil já existe por qu eu já tinha testado aqui tava funcionando certinho só que eu usei esse e-mail Então já tá funcionando ó ele já notificou que esse e-mail existe a gente não pode usar ele então vamos colocar aqui será qualquer e-mail diferente perfeito já salvou nome e-mail a senha ó olha o hash da senha todo diferente isso aqui tá inelegível só ó a verification code também já gerou a string aleatória e
tá dizendo que ele não tá ativo então o usuário não vai conseguir fazer nada basicamente né até ele verificar a conta só que isso vai ficar com o próximo vídeo galera né Espero que vocês tenham gostado essa aula aqui ficou muito massa curti muito muito cultura interessante né foi basicamente a criação de conta só que muito mais é profunda certo e iremos modificar esse código iremos modificar esse código a partir do tempo Beleza então Não se preocupem a gente vai fazer mon danç muitas coisas aqui a gente vai melhorando ele aos poucos espero que vocês
tenham gostado do vídeo se gostou não esquece de deixar o like por favor que isso dá uma força absurda você não tem noção não tem noção continuar o feedback eu vou continuar e eu quero deixar essa série bem completa e muito legal beleza então é isso G tamos junto Muito obrigado e valeu