added nonce creattion

This commit is contained in:
Sockenklaus
2021-10-23 09:35:53 +02:00
parent f8bf1a745f
commit 42efa25185
6 changed files with 122 additions and 14 deletions

View File

@@ -1,7 +1,8 @@
import { OpaqueTokenContract } from '@ioc:Adonis/Addons/Auth'
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
import Logger from '@ioc:Adonis/Core/Logger'
import User from 'App/Models/User'
import Nonce from 'App/Models/Nonce'
import Database from '@ioc:Adonis/Lucid/Database'
import { DateTime } from 'luxon'
type AuthSuccResult = {
notification: {
@@ -66,4 +67,30 @@ export default class AuthController {
Logger.error(error.message)
}
}
public async nonce(ctx: HttpContextContract) {
const requestId = ctx.request.header('X-REQUEST-ID')
try {
this.deleteExpiredNonces()
const nonce = await Nonce.create({
requestId: requestId
})
return nonce.nonce
}
catch(err){
return ctx.response.forbidden(err)
}
}
private async deleteExpiredNonces(){
try {
await Database.from('nonces').where('expiry_date', '<', DateTime.now().toFormat('yyyy-MM-dd HH:mm:ss')).delete()
}
catch(err){
throw err
}
}
}

29
app/Models/Nonce.ts Normal file
View File

@@ -0,0 +1,29 @@
import { DateTime } from 'luxon'
import { BaseModel, beforeCreate, column } from '@ioc:Adonis/Lucid/Orm'
import { v4 as uuidv4 } from 'uuid'
export default class Nonce extends BaseModel {
public static selfAssignPrimaryKey = true
@column.dateTime({ autoCreate: true })
public createdAt: DateTime
@column.dateTime({ autoCreate: true, autoUpdate: true })
public updatedAt: DateTime
@column.dateTime()
public expiryDate : DateTime;
@column()
public nonce : string;
@column({isPrimary: true})
public requestId: string;
@beforeCreate()
public static generateNonce( nonce : Nonce) {
nonce.nonce = uuidv4()
nonce.expiryDate = DateTime.now().plus({minutes: 10})
}
}