diff --git a/src/db/schema/user-stats.schema.ts b/src/db/schema/user-stats.schema.ts index 475ffc156bf73e925240a401305e211f9e652e72..39e045da20a2ed1e1ff217641486ec05f051aa8a 100644 --- a/src/db/schema/user-stats.schema.ts +++ b/src/db/schema/user-stats.schema.ts @@ -1,4 +1,4 @@ -import { integer, pgTable, serial } from "drizzle-orm/pg-core"; +import { integer, numeric, pgTable, serial } from "drizzle-orm/pg-core"; import { createInsertSchema, createSelectSchema } from "drizzle-zod"; import type { z } from "zod"; @@ -6,9 +6,9 @@ const userStatsTable = pgTable('user_stats', { id: serial('id').primaryKey() .unique() .notNull(), - score: integer('score') + score: numeric('score') .notNull() - .default(0), + .default('0.0'), likes: integer('likes').notNull() .default(0), likes_received: integer('likes_received').notNull() diff --git a/src/routes/password.route.ts b/src/routes/password.route.ts index ebb039985eea44fd1e0bc51fbfcbf06ec251d3f5..3e0753a33f7cda83dd655f43b242abd220772ee9 100644 --- a/src/routes/password.route.ts +++ b/src/routes/password.route.ts @@ -27,14 +27,14 @@ export const passRouter = new Hono() if(user == null) throw new Error(); - let resetTickets = await passwordRecoveryService.findByUserId(user.id) + const resetTickets = await passwordRecoveryService.findByUserId(user.id) if(resetTickets == null) throw new Error(); /* * Find reset ticket in database */ - var resetTicket: PasswordRecoveryModel | any = null + let resetTicket: PasswordRecoveryModel | any = null resetTickets.forEach(element => { if(element.tokenHash == token[0]) resetTicket = element @@ -55,13 +55,7 @@ export const passRouter = new Hono() await userService.update(user) ) - /* - * Set this ticket as used and not valid - */ - resetTicket.validToken = false; - resetTicket.tokenUsed = true; - - await passwordRecoveryService.update(resetTicket) + await passwordRecoveryService.delete(resetTicket.id) return c.json({ ret }) } catch (e) { @@ -87,14 +81,13 @@ export const passRouter = new Hono() ) /* - * When a ticket is generated, the last one is set as invalid + * When a ticket is generated, the last one is deleted */ const ticketList = await passwordRecoveryService.findByUserId(user.id) if(ticketList?.length != 0){ - let lastTicket = ticketList![ticketList!.length - 1] + const lastTicket = ticketList![ticketList!.length - 1] if(lastTicket.validToken){ - lastTicket.validToken = false - await passwordRecoveryService.update(lastTicket) + await passwordRecoveryService.delete(lastTicket.id) } } diff --git a/src/services/password.service.ts b/src/services/password.service.ts index 87872038dfb7b041ef5fe8a0194eabc983f9e8c5..9ed0a643053b488522fc4a9f02641360c6ef4ed6 100644 --- a/src/services/password.service.ts +++ b/src/services/password.service.ts @@ -14,7 +14,7 @@ export class PasswordRecoveryService { isNotValidTicket(resetTicket: PasswordRecoveryModel): boolean { if(resetTicket == null) return true - let is_expired: boolean = Date.parse(resetTicket.expirationDate) < Date.now() + const is_expired: boolean = Date.parse(resetTicket.expirationDate) < Date.now() if(!resetTicket.validToken || is_expired || resetTicket.tokenUsed) return true return false @@ -36,13 +36,13 @@ export class PasswordRecoveryService { emailTemplatePasswordRecovery(resetTicket: PasswordRecoveryModel): string{ - let recover_link: string = process.env["URL"] + '/reset-password/'+resetTicket.tokenHash - let token_link: string = recover_link + "?token=" + resetTicket.tokenHash + const recover_link: string = process.env["URL"] + '/reset-password/'+resetTicket.tokenHash + const token_link: string = recover_link + "?token=" + resetTicket.tokenHash - let expirationDate = new Date(resetTicket.expirationDate) + const expirationDate = new Date(resetTicket.expirationDate) expirationDate.setHours(expirationDate.getHours() - 1) - let requestedDate = expirationDate.toLocaleString('pt-br', { timeZone: 'America/Sao_Paulo'}) - let text = ` + const requestedDate = expirationDate.toLocaleString('pt-br', { timeZone: 'America/Sao_Paulo'}) + const text = ` <head> <style> @@ -109,9 +109,9 @@ export class PasswordRecoveryService { }*/ async create(user: UserDto, tx?: db): Promise<PasswordRecoveryModel>{ - let tokenExpirationDate = this.generateExpirationDate() - let newTokenHash = this.generateToken(user?.email, tokenExpirationDate) - let resetTicket = { + const tokenExpirationDate = this.generateExpirationDate() + const newTokenHash = this.generateToken(user?.email, tokenExpirationDate) + const resetTicket = { userId: user!.id, tokenHash: newTokenHash, expirationDate: tokenExpirationDate,