Vamos criar nossa action de login. Vou, por discricionariedade adicioná-la à pasta app/(auth)/login/_actions, mas você pode escolher a estrutura de pastas que preferir.
Exportando a função signIn
A primeira coisa que você vai se deparar ao tentar criar essa action é: como é que eu chamo o sign-in com credenciais?
Pra isso, vamos voltar no nosso arquivo auth.ts e veja que a função NextAuth retorna também uma função signIn. Vamos exportá-la então:
Criando a Action
Como já colocamos a lógica de autenticação na função authorize() do arquivo auth.ts, não precisamos, nesse caso, repeti-la aqui.
Fazendo o link da Action com nosso formulário
Agora, basta ir no nosso login form e instruirmos o nosso formulário a chamar nossa action:
Algumas coisas a notar nesse arquivo:
A função signIn é async, então precisamos aguardá-la
Precisamos sempre passar para a função signIn qual é o método de autenticação que estamos usando. Nesse caso, credenciais.
Quando o login é mal sucedido, um erro é lançado. Vamos relançar esse mesmo erro, mudando a mensagem (para depois exibi-la no nosso front)