0
I have an XPTO class with the methods below, in the login method I try to call the answer treatment method, however, the this
is Undefined in the context of the function, as far as I could understand I would have to use the function .bind()
, but how would I do that if my response treatment function receives parameters?
Of course, I could do everything in one function only (I tested and worked), but then the function would be too big, I’ve read this question, but it was not clear.
Code of the two functions:
import AutenticacaoDAO from '../daos/autenticacao.dao'
import MailController from './email.controller'
import jwt from 'jsonwebtoken'
import TokenSecret from '../config/token-secret'
import crypto from 'crypto'
import { Request, Response } from 'express'
import { Usuario } from '../models/usuario.model';
class AutenticacaoController {
constructor() {
}
public async login(req: Request, res: Response) {
let usuario;
try {
usuario = await AutenticacaoDAO.login(req.body)
this.tratarResposta(crypto.createHash("md5").update(req.body.senha).digest("hex"), usuario, res) //this está undefined
} catch (error) {
res.json(error)
}
}
private tratarResposta(senhaEnviada: any, usuario: any, res: Response){ //função que eu quero chamar
if (usuario && usuario.length > 0 && senhaEnviada === usuario[0].usuario.senha && !usuario[0].usuario.bloqueado) {
res.json({
usuario: usuario,
token: jwt.sign({ usuario: usuario[0] }, TokenSecret, { expiresIn: '7d' })
})
} else if (usuario && usuario.length > 0 && senhaEnviada !== usuario[0].usuario.senha) {
res.status(403).json({
mensagem: `Não foi possível efetuar o login, sua senha está incorreta.`, erro: res.statusCode
})
}
else if (usuario && usuario.length > 0 && usuario[0].usuario.bloqueado) {
res.status(403).json({
mensagem: `Não foi possível efetuar o login, seu usuário encontra-se bloqueado. Converse com seu gestor.`, erro: res.statusCode
})
}
else {
res.status(404).json({
mensagem: `Não foi possível efetuar o login: Usuario não encontrado.`, erro: res.statusCode
})
}
}
}
export default new AutenticacaoController()
These methods are part of a class?
– Luiz Felipe
Yes, I’ll put the whole class, I think it looks better.
– Tiago Silveira
@luizfelipe, I put the whole class.
– Tiago Silveira