Optimized AD user import

This commit is contained in:
Douglas Barone 2020-12-01 14:56:20 -04:00
parent 95364dc8a7
commit 04a2fb01cb
2 changed files with 22 additions and 25 deletions

View File

@ -287,6 +287,13 @@ class User {
}
static async importAllUsers() {
if (this.working) {
console.log('Já há uma importação em andamento')
return 0
}
this.working = true
try {
console.log('Obtendo usuários do AD...')
@ -295,35 +302,27 @@ class User {
filter: '(!(userAccountControl:1.2.840.113556.1.4.803:=2))' // Only active users
})
// const allAdUsers = await ad.getUsersForGroup('Estudantes')
// const allAdUsers = [await ad.findUser('aluno.teste')]
console.log('Importando usuários...')
const dbUsers = []
let i = 0
allAdUsers.forEach(async user => {
const dbUser = await prisma.user.upsert({
await Promise.all(
allAdUsers.map(async user =>
prisma.user.upsert({
where: {
sAMAccountName: user.sAMAccountName
},
update: user,
create: user
})
dbUsers.push(dbUser)
i++
process.stdout.write(
`\rImportando usuário ${i} de ${allAdUsers.length}.`
)
})
)
console.log('\nOK!')
console.log(`${allAdUsers.length} usuários importados`)
return dbUsers
return allAdUsers.length
} catch (e) {
throw new Error('Erro ao importar usuários: ' + e)
} finally {
this.working = false
}
}
}

View File

@ -25,8 +25,6 @@ const Mutation = {
async importUsers() {
User.importAllUsers()
.then(users => console.log('OK', users.length))
.catch(console.log)
return 'A importação está sendo feita. Isso pode demorar alguns minutos.'
}