Add replaceStudentPassword mutation

This commit is contained in:
Douglas Barone 2022-03-30 14:30:28 -04:00
parent ef832db90e
commit cad76473d1
2 changed files with 33 additions and 7 deletions

View File

@ -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)

View File

@ -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"])