Skip to content
Snippets Groups Projects
Commit 1558d5d3 authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira
Browse files

Merge branch 'issue-43/delete-reset-ticket-after-use' into 'develop'

issue #43: delete reset ticket after use

See merge request !38
parents 9c8c377b a2bed0ac
No related branches found
No related tags found
1 merge request!38issue #43: delete reset ticket after use
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()
......
......@@ -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)
}
}
......
......@@ -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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment