From cad76473d1a4046362602ad969bce8f7237b7aa6 Mon Sep 17 00:00:00 2001 From: Douglas Barone Date: Wed, 30 Mar 2022 14:30:28 -0400 Subject: [PATCH] Add replaceStudentPassword mutation --- server/src/resolvers/Mutation/index.js | 36 +++++++++++++++++++++----- server/src/typeDefs.js | 4 +++ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/server/src/resolvers/Mutation/index.js b/server/src/resolvers/Mutation/index.js index d0ceba0..6891ec3 100644 --- a/server/src/resolvers/Mutation/index.js +++ b/server/src/resolvers/Mutation/index.js @@ -11,15 +11,15 @@ import { updateAccessPoints } from '../../lib/accessPoints' import prisma from '../../prisma' const Mutation = { - async login(_, { data }) { + async login(parent, { data }) { return User.login(data.username, data.password) }, - async updatePassword(_, { data }, { auth }) { + async updatePassword(parent, { data }, { auth }) { return auth.updatePassword(data.oldPassword, data.newPassword) }, - async replacePassword(_, { data }, { auth }) { + async replacePassword(parent, { data }, { auth }) { logInfo({ tags: ['replacePassword', 'user'], message: `Usuário ${auth.sAMAccountName} (${auth.displayName}) está trocando a senha do usuário ${data.username}` @@ -27,12 +27,34 @@ const Mutation = { return replacePassword(data.username, data.newPassword) }, + async replaceStudentPassword(parent, { data }, { auth }) { + const user = await new User(data.username).init() - async createResetToken(_, { data }, { auth }) { + const isStudent = !!user.groups.find( + group => group.name == (process.env.STUDENT_GROUP || 'Estudantes') + ) + + const isServant = !!user.groups.find( + group => group.name == (process.env.SERVANT_GROUP || 'G_SERVIDORES') + ) + + if (isServant) throw new Error(`Usuário ${data.username} é um servidor`) + + if (!isStudent) + throw new Error(`Usuário ${data.username} não é um estudante`) + + logInfo({ + tags: ['replaceStudentPassword', 'user'], + message: `Usuário ${auth.sAMAccountName} (${auth.displayName}) está trocando a senha do aluno ${data.username}` + }) + + return replacePassword(data.username, data.newPassword) + }, + async createResetToken(parent, { data }, { auth }) { return ResetToken.createToken(data.username, auth.sAMAccountName) }, - async useResetToken(_, { data }) { + async useResetToken(parent, { data }) { return ResetToken.useToken(data.token, data.newPassword) }, @@ -56,7 +78,7 @@ const Mutation = { }, async addPAHost( - _, + parent, { data: { cidr, user, password, description, note } }, { auth } ) { @@ -78,7 +100,7 @@ const Mutation = { return host }, - async delPAHost(_, { id }, { auth }) { + async delPAHost(parent, { id }, { auth }) { const host = await prisma.pAHost.findUnique({ where: { id } }) if (host.ownerId != auth.id) diff --git a/server/src/typeDefs.js b/server/src/typeDefs.js index 8a21c09..30e4d83 100644 --- a/server/src/typeDefs.js +++ b/server/src/typeDefs.js @@ -72,6 +72,10 @@ const typeDefs = gql` replacePassword(data: ReplacePasswordInput!): String! @auth(roles: ["superAdmin"]) + "Update a student password" + replaceStudentPassword(data: ReplacePasswordInput!): String! + @auth(roles: ["tokenCreator"]) + "Create a Reset Token to reset a student password" createResetToken(data: CreateResetTokenInput!): ResetToken! @auth(roles: ["superAdmin", "tokenCreator"])