This commit is contained in:
Luiz H. R. Silva 2024-06-26 10:29:02 -03:00
commit e498c967be
34 changed files with 674 additions and 232 deletions

View file

@ -33,7 +33,7 @@ export const usuarios_quipo_governo = async ({
})
.then((r) => r.json())
.catch((e) =>
respostaComuns.erro("Erro ao buscar usuários quipo governo", [e.message]),
respostaComuns.erro(`Erro ao buscar usuários quipo governo ${e.message}`),
)
.then((r) => r as tipoResposta<tipoUsuarioExterno[]>)
}

View file

@ -0,0 +1,43 @@
import node_fetch from "cross-fetch"
import { respostaComuns, type tipoResposta } from "p-respostas"
import type { z } from "zod"
import type { zAmbiente } from "../ts/ambiente"
import { urlAutenticacao } from "./_urlAutenticacao"
export const usuarios_quipo_vincular = async ({
token_produto,
ambiente,
conta,
vinculo,
codigo_usuario,
email,
}: {
ambiente: z.infer<typeof zAmbiente>
token_produto: string
conta: string
vinculo: string
codigo_usuario?: string
email: string
}): Promise<tipoResposta<string>> => {
const url = `${urlAutenticacao(ambiente)}/api/vinculos__criar`
if (!token_produto) return respostaComuns.erro("token_produto não informado")
const headers = {
token: token_produto,
"Content-Type": "application/json",
}
const parametros = {
vinculos: { codigo_conta: conta, codigo_usuario, vinculo },
email: email,
}
return await node_fetch(url, {
headers,
body: JSON.stringify(parametros),
method: "POST",
})
.then(async (r) => await r.json())
.catch((e) =>
respostaComuns.erro(`Erro ao criar vinculo de usuario ${e.message}`),
)
}

View file

@ -4,6 +4,7 @@ import {
type tipoUsuarioExterno,
usuarios_quipo_governo,
} from "./_usuarios_quipo_governo"
import { usuarios_quipo_vincular } from "./_usuarios_quipo_vincular"
import { validarToken } from "./_validarToken"
export type { tipoUsuarioExterno }
@ -14,4 +15,5 @@ export const pAutenticacao = {
urlAutenticacao,
codigoContaSite,
usuarios_quipo_governo,
usuarios_quipo_vincular,
}

69
src/email/index.ts Normal file
View file

@ -0,0 +1,69 @@
import nodemailer from "nodemailer"
import { respostaComuns, type tipoResposta } from "p-respostas"
// const confEmail = {
// host: "email-smtp.us-east-1.amazonaws.com",
// port: 587,
// secure: false,
// user: "AKIA2LGJTHGX2ZKMMYHG",
// pass: "BFuchUwoUYYDJK8l+pd1NvZxk70PjhMX+KbQy+5HfPDl",
// requireTLS: true,
// ignoreTLS: false,
// emailDe: "nao-responder@e-licencie.com.br",
// nomeDe: "🌱 Betha Meio Ambiente",
// };
const confEmail = {
host: "email-smtp.us-east-1.amazonaws.com",
port: 587,
secure: false,
user: "AKIA2LGJTHGX2ZKMMYHG",
pass: "BFuchUwoUYYDJK8l+pd1NvZxk70PjhMX+KbQy+5HfPDl",
requireTLS: true,
ignoreTLS: false,
emailDe: "nao-responder@gestao-ambiental-brasil.idz.one",
nomeDe: "🌱 Betha Meio Ambiente",
}
export const enviarEmail = async ({
email,
nome,
assunto,
texto,
htlm,
}: {
email: string
nome?: string
assunto: string
/** Verão em texto do html, não obrigatório */
texto?: string
htlm: string
}): Promise<tipoResposta<string>> => {
const info = await nodemailer
.createTransport({
host: confEmail.host,
port: confEmail.port,
secure: confEmail.secure,
auth: {
user: confEmail.user,
pass: confEmail.pass,
},
})
.sendMail({
from: { address: confEmail.emailDe, name: confEmail.nomeDe },
to: nome ? { address: email, name: nome } : email,
subject: assunto,
text: texto,
html: htlm,
})
.then(() =>
respostaComuns.valor(`Email "${assunto}" enviado para ${email}`),
)
.catch((err) => {
console.error(err)
return respostaComuns.erro(
`Erro ao enviar email para ${email}: ${err.message}`,
)
})
return info
}

View file

@ -4,3 +4,4 @@ export * from "./produtos"
export * from "./pilao-de-dados"
export * from "./residuos"
export * from "./NPS"
export * from "./email"

View file

@ -9,6 +9,7 @@ export const zAuntenticacaoResiduos = z.object({
documento_usuario: z.string(),
organizacao: z.string(),
rotas: z.object({}),
tipo_usuario: z.string(),
// Dados do sistema
sistema: z.string(),