Added logger
This commit is contained in:
parent
7f19378145
commit
706660f73e
|
@ -6,6 +6,7 @@ import bcrypt from 'bcrypt'
|
||||||
import { replacePassword } from '../lib/activeDirectory/passwordUtils'
|
import { replacePassword } from '../lib/activeDirectory/passwordUtils'
|
||||||
|
|
||||||
import prisma from '../prisma'
|
import prisma from '../prisma'
|
||||||
|
import { logInfo, logSuccess } from '../lib/logger'
|
||||||
|
|
||||||
class ResetToken {
|
class ResetToken {
|
||||||
/**
|
/**
|
||||||
|
@ -37,6 +38,11 @@ class ResetToken {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
logInfo({
|
||||||
|
tags: ['token', 'user'],
|
||||||
|
message: `User ${creatorUsername} created a reset-token for user ${username}`
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...hashedToken,
|
...hashedToken,
|
||||||
token
|
token
|
||||||
|
@ -98,6 +104,11 @@ class ResetToken {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
logSuccess({
|
||||||
|
tags: ['token', 'user'],
|
||||||
|
message: `User ${user.sAMAccountName} used a reset token`
|
||||||
|
})
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -202,7 +202,7 @@ class User {
|
||||||
User.upsertUser(this.username)
|
User.upsertUser(this.username)
|
||||||
client.unbind(() => {
|
client.unbind(() => {
|
||||||
logSuccess({
|
logSuccess({
|
||||||
message: `Client unbinded. Password updated for user ${this.username}`,
|
message: `User ${this.username} updated his password`,
|
||||||
data: result,
|
data: result,
|
||||||
tags: ['ldap']
|
tags: ['ldap']
|
||||||
})
|
})
|
||||||
|
@ -284,11 +284,32 @@ class User {
|
||||||
*/
|
*/
|
||||||
static async login(username, password) {
|
static async login(username, password) {
|
||||||
try {
|
try {
|
||||||
await ad.authenticate('ifms\\' + username, password)
|
logInfo({
|
||||||
|
tags: ['user', 'login'],
|
||||||
|
message: `User ${username} is trying to login`
|
||||||
|
})
|
||||||
|
|
||||||
|
await ad.authenticate(`ifms\\${username}`, password)
|
||||||
|
|
||||||
|
logSuccess({
|
||||||
|
tags: ['user', 'login'],
|
||||||
|
message: `User ${username} logged successfully`
|
||||||
|
})
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw (await ad.checkBinding())
|
if (await ad.checkBinding()) {
|
||||||
? new Error('Usuário ou senha inválidos.')
|
logWarning({
|
||||||
: new Error('Problemas técnicos ao autenticar. Tente mais tarde.')
|
tags: ['user', 'login', 'password'],
|
||||||
|
message: `User ${username} tried to login but failed`,
|
||||||
|
data: err
|
||||||
|
})
|
||||||
|
throw new Error('Usuário ou senha inválidos.')
|
||||||
|
} else {
|
||||||
|
logError({
|
||||||
|
tags: ['user', 'login', 'password'],
|
||||||
|
message: `Can't bind with AD.`
|
||||||
|
})
|
||||||
|
throw new Error('Problemas técnicos ao autenticar. Tente mais tarde.')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -21,7 +21,7 @@ cron.schedule('*/1 * * * *', async () => {
|
||||||
|
|
||||||
const devices = await updateDevicesInfo()
|
const devices = await updateDevicesInfo()
|
||||||
|
|
||||||
logSuccess({
|
logInfo({
|
||||||
tags: ['cron', 'wifiDevices'],
|
tags: ['cron', 'wifiDevices'],
|
||||||
message: `updateDevicesInfo updated ${devices} devices`
|
message: `updateDevicesInfo updated ${devices} devices`
|
||||||
})
|
})
|
||||||
|
@ -36,7 +36,7 @@ cron.schedule('*/1 * * * *', async () => {
|
||||||
|
|
||||||
mappings = await updateUserIdMappings()
|
mappings = await updateUserIdMappings()
|
||||||
|
|
||||||
logSuccess({
|
logInfo({
|
||||||
tags: ['cron', 'user-id'],
|
tags: ['cron', 'user-id'],
|
||||||
message: `updateUserIdMappings updated ${mappings} user-id mappings`
|
message: `updateUserIdMappings updated ${mappings} user-id mappings`
|
||||||
})
|
})
|
||||||
|
@ -51,11 +51,11 @@ cron.schedule(
|
||||||
message: `User.importAllUsers started`
|
message: `User.importAllUsers started`
|
||||||
})
|
})
|
||||||
|
|
||||||
await User.importAllUsers()
|
const users = await User.importAllUsers()
|
||||||
|
|
||||||
logSuccess({
|
logInfo({
|
||||||
tags: ['cron', 'user'],
|
tags: ['cron', 'user'],
|
||||||
message: `User.importAllUsers finished`
|
message: `User.importAllUsers imported ${users} users`
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
{}
|
{}
|
||||||
|
|
|
@ -22,6 +22,6 @@ server.listen().then(options => {
|
||||||
})
|
})
|
||||||
logInfo({
|
logInfo({
|
||||||
tags: ['server'],
|
tags: ['server'],
|
||||||
message: `Endpoint: ${options.url}graphql - WebSocket: ${options.subscriptionsUrl}`
|
message: `Endpoint: ${options.url}graphql | WebSocket: ${options.subscriptionsUrl}`
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import prisma from '../prisma'
|
import prisma from '../prisma'
|
||||||
import { format, subDays } from 'date-fns'
|
import { format, subDays } from 'date-fns'
|
||||||
|
|
||||||
|
const DAYS_TO_KEEP = process.env.NODE_ENV === 'production' ? 30 : 1
|
||||||
|
|
||||||
async function log({ level, tags = [], message = '', data }) {
|
async function log({ level, tags = [], message = '', data }) {
|
||||||
const logEntry = await prisma.log.create({
|
const logEntry = await prisma.log.create({
|
||||||
data: {
|
data: {
|
||||||
|
@ -48,7 +50,7 @@ function logError({ tags, message, data }) {
|
||||||
|
|
||||||
async function deleteOldLogs() {
|
async function deleteOldLogs() {
|
||||||
return prisma.log.deleteMany({
|
return prisma.log.deleteMany({
|
||||||
where: { timestamp: { lt: subDays(new Date(), 30) } }
|
where: { timestamp: { lt: subDays(new Date(), DAYS_TO_KEEP) } }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import prisma from '../prisma'
|
||||||
import https from 'https'
|
import https from 'https'
|
||||||
import { subMinutes } from 'date-fns'
|
import { subMinutes } from 'date-fns'
|
||||||
import qs from 'qs'
|
import qs from 'qs'
|
||||||
import { logError } from './logger'
|
import { logError, logSuccess } from './logger'
|
||||||
|
|
||||||
const DEBOUNCE_TIME_IN_MS = 5000
|
const DEBOUNCE_TIME_IN_MS = 5000
|
||||||
const TIMEOUT_IN_MINUTES = '3'
|
const TIMEOUT_IN_MINUTES = '3'
|
||||||
|
@ -71,6 +71,12 @@ async function updateUserIdMappings() {
|
||||||
httpsAgent
|
httpsAgent
|
||||||
})
|
})
|
||||||
|
|
||||||
|
logSuccess({
|
||||||
|
tags: ['user-id', 'paloalto'],
|
||||||
|
message: `Updated ${wifiDevices.length} user-id mappings`,
|
||||||
|
data: wifiDevices
|
||||||
|
})
|
||||||
|
|
||||||
return wifiDevices.length
|
return wifiDevices.length
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError({
|
logError({
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { getOnlineWifiDevices as getOnlineCiscoDevices } from './ciscoController
|
||||||
import prisma from '../prisma'
|
import prisma from '../prisma'
|
||||||
|
|
||||||
import { pubsub, USER_PRESENCE_UPDATED } from '../pubsub'
|
import { pubsub, USER_PRESENCE_UPDATED } from '../pubsub'
|
||||||
import { logError } from './logger'
|
import { logError, logSuccess } from './logger'
|
||||||
|
|
||||||
const DEBOUNCE_TIME_MS = 10000
|
const DEBOUNCE_TIME_MS = 10000
|
||||||
const RECENT_THRESHOLD_IN_MINUTES = 3
|
const RECENT_THRESHOLD_IN_MINUTES = 3
|
||||||
|
@ -109,6 +109,12 @@ async function updateDevicesInfo() {
|
||||||
userPresenceUpdated: onlineDevices.length
|
userPresenceUpdated: onlineDevices.length
|
||||||
})
|
})
|
||||||
|
|
||||||
|
logSuccess({
|
||||||
|
tags: ['wifiDevices'],
|
||||||
|
message: `Updated ${onlineDevices.length} devices`,
|
||||||
|
data: onlineDevices
|
||||||
|
})
|
||||||
|
|
||||||
return onlineDevices.length
|
return onlineDevices.length
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError({
|
logError({
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { ResetToken } from '../classes/ResetToken'
|
||||||
|
|
||||||
import { updateDevicesInfo } from '../lib/wifiDevices'
|
import { updateDevicesInfo } from '../lib/wifiDevices'
|
||||||
import { updateUserIdMappings } from '../lib/paloalto'
|
import { updateUserIdMappings } from '../lib/paloalto'
|
||||||
|
import { logInfo, logSuccess } from '../lib/logger'
|
||||||
|
|
||||||
const Mutation = {
|
const Mutation = {
|
||||||
async login(_, { data }) {
|
async login(_, { data }) {
|
||||||
|
@ -14,7 +15,12 @@ const Mutation = {
|
||||||
return auth.updatePassword(data.oldPassword, data.newPassword)
|
return auth.updatePassword(data.oldPassword, data.newPassword)
|
||||||
},
|
},
|
||||||
|
|
||||||
async replacePassword(_, { data }) {
|
async replacePassword(_, { data }, { auth }) {
|
||||||
|
logInfo({
|
||||||
|
tags: ['replacePassword', 'user'],
|
||||||
|
message: `User ${auth.sAMAccountName} is replacing the password for user ${data.username}`
|
||||||
|
})
|
||||||
|
|
||||||
return replacePassword(data.username, data.newPassword)
|
return replacePassword(data.username, data.newPassword)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user