drivers/src/autenticacao.ts
2024-06-04 12:01:01 -03:00

76 lines
1.8 KiB
TypeScript

import type { tipoResposta } from "~comuns"
type tipoPostValidarTokem = { token: string }
type tipoPostCodigoContaSite = { site: string }
const urlAutenticacao = (ambiente: "desenvolvimento" | "producao") =>
`${
ambiente == "producao"
? "https://carro-de-boi.idz.one"
: "http://localhost:5030"
}/autenticacao`
/** faz a validação do token */
const validarToken = async ({
ambiente,
post,
buscar,
}: {
ambiente: "desenvolvimento" | "producao"
post: tipoPostValidarTokem
/** função que conecta com a API */
buscar: (
url: string,
post: tipoPostValidarTokem,
) => Promise<tipoResposta<any>>
}): Promise<"valido" | "erro"> => {
const url = `${urlAutenticacao(ambiente)}/autenticacao/api/validar_token`
try {
const resposta = await buscar(url, post)
.then((resposta) =>
resposta.eCerto ? ("valido" as const) : ("erro" as const),
)
.catch((e) => "erro" as const)
return resposta
} catch (e) {
return "erro"
}
}
const codigoPrefeituraSite = async ({
ambiente,
post,
buscar,
}: {
ambiente: "desenvolvimento" | "producao"
post: tipoPostCodigoContaSite
/** função que conecta com a API */
buscar: (
url: string,
post: tipoPostCodigoContaSite,
) => Promise<tipoResposta<string>>
}): Promise<"valido" | "erro"> => {
const url = `${urlAutenticacao(
ambiente,
)}/autenticacao/api/codigo_prefeitura_site`
try {
const resposta = await buscar(url, post)
.then((resposta) =>
resposta.eCerto ? ("valido" as const) : ("erro" as const),
)
.catch((e) => "erro" as const)
return resposta
} catch (e) {
return "erro"
}
}
/** todas as rotas de comunicação com autenticador partem dessa variável */
export const pAutenticacao = {
validarToken,
urlAutenticacao,
codigoPrefeituraSite,
}