Obs.: Repare que o método “buildAuthenticatedRouter” recebe um argumento a mais, que é um objeto contendo a função de autenticação e uma chave para garantir a segurança do cookie de autenticação. Também é possível passar um nome opcionalmente.
Usaremos variáveis de ambiente no futuro para não deixar nossa senha do cookie exposta.
// src/adminjs/index.ts
// ...
export const adminJsRouter = AdminJsExpress.buildAuthenticatedRouter(adminJs, {
authenticate: () => {
},
cookiePassword: ''
})
// src/adminjs/index.ts
import { User } from '../models'
import bcrypt from 'bcrypt'
// ...
export const adminJsRouter = AdminJsExpress.buildAuthenticatedRouter(adminJs, {
authenticate: async (email, password) => {
const user = await User.findOne({ where: { email } })
if (user && user.role === 'admin') {
const matched = await bcrypt.compare(password, user.password)
if (matched) {
return user
}
}
return false
},
cookiePassword: 'senha-do-cookie'
}, null, {
resave: false,
saveUninitialized: false
})