import { IBaseUser, ISignUp } from '../interfaces'; import { DAO } from './dao'; import * as JSData from 'js-data'; import { AppConfig } from '../config/app-config'; import * as nodemailer from 'nodemailer'; /** * Classe responsável pelo processamento de cadastros de novos usuários no sistema * * * foi construido para trabalhar com seguinte fluxo: * * 1 - usuário inicia pre-cadastro enviando email; * * 1* - um usuário ativo envia convite para o email do candidato ao novo cadastro; * * 2 - depois que enviado o email, o usuário procede com cadastro entrando no hotlink e cadastrando; * * 3 - finalmente com cadastro passado por toda triagem, é enviado a resposta de ok do cadastro; * * 4 - o filtro de "unicidade" do metodo registerPassword pode ser customizado adicionando mais lógica conforme a lógica de query filter; * * @export * @class SignUpDAO */ export declare class SignUpDAO { storedb: JSData.DataStore; private mailConfig; private sendMail; private serviceLib; private userDAO; private appConfig; constructor(appConfig: AppConfig, userDao: DAO, transporter?: nodemailer.Transporter); /** * Envia um email para o usuário * * @param {ISignUp} obj * @returns {JSData.JSDataPromise} * * @memberOf SignUpDAO */ sendSignUpMail(obj: ISignUp, appUrl: string): any; /** * Valida o token e retorna o user com email do token * * @param {*} params parametros de rota predefinidos na querystring da rota ( /signup/token => /signup/1234 => token = 1234 ) * @returns {Promise} * @memberOf SignUpDAO */ validaToken(params: any): Promise; /** * Verifica o token e cadastra a senha para o usuário, utilizado no processamento do hotlink do site de cadastro * * @param {*} params parametro de entrada quando o usuario clica no hotlink do site por convite de email (exemplo: /signup/:token => params = { token : 'conteudo'}) * @param {*} obj objeto dos dados do usuário preenchido por um formulário ou outro meio * @param {Object} [matchFilter] se deseja colocar um filtro "custom" além do usual que é o de email esse campo pode ser utilizado * @returns {Promise} retorna booleano indicando ok do processo * * @memberOf SignUpDAO */ registerPassword(params: any, obj: any, matchFilter?: Object): Promise; /** * metodo para criar um usuário vazio para terminar de preencher na conclusão do SignUp * * @private * @param {string} email email informado na entrada do signup ou quando recebe convite * @returns {Promise} retorna o objeto basico do usuario com os campos em branco para manter consistencia com o antigo modelo * * @memberOf SignUpDAO */ private createEmptyUser(email); }