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() { static async importAllUsers() {
if (this.working) {
console.log('Já há uma importação em andamento')
return 0
}
this.working = true
try { try {
console.log('Obtendo usuários do AD...') 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 filter: '(!(userAccountControl:1.2.840.113556.1.4.803:=2))' // Only active users
}) })
// const allAdUsers = await ad.getUsersForGroup('Estudantes') console.log('Importando usuários...')
// const allAdUsers = [await ad.findUser('aluno.teste')]
const dbUsers = [] await Promise.all(
let i = 0 allAdUsers.map(async user =>
prisma.user.upsert({
allAdUsers.forEach(async user => {
const dbUser = await prisma.user.upsert({
where: { where: {
sAMAccountName: user.sAMAccountName sAMAccountName: user.sAMAccountName
}, },
update: user, update: user,
create: 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) { } catch (e) {
throw new Error('Erro ao importar usuários: ' + e) throw new Error('Erro ao importar usuários: ' + e)
} finally {
this.working = false
} }
} }
} }

View File

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