Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const generateNewKey = async () => {
try {
let sk = new SymmetricKey(new encoder)
sk.generate().then(() => {
let b64 = sk.encode()
env.PASETO_KEY = b64
let output = envfile.stringifySync(env)
fs.writeFileSync(sourcePath, output)
console.log('New PASETO key has been sucessfully generated.')
});
} catch (err) {
throw err
}
}
public async getSharedKey(): Promise {
const sharedKey = new Paseto.SymmetricKey(new Paseto.V2())
return sharedKey.base64(process.env.PASETO_KEY).then((): Paseto.SymmetricKey => {
return sharedKey
})
}
public async getTokenBuilder(): Promise {
return new Paseto.Builder()
.setPurpose('local')
.setKey(await this.getSharedKey())
.setIssuedAt(new Date())
.setExpiration(this.getExpireTime())
.setIssuer(this.getIssuer())
}
public async check(req: Request): Promise {
let parser = new Paseto.Parser(await this.getSharedKey())
parser = parser.addRule(new Rules.notExpired()).addRule(new Rules.issuedBy(this.getIssuer()))
try {
const token = await parser.parse(this.getTokenFromRequest(req))
Object.assign(req, {token: token})
const id = token.getClaims().id
const user = await User.query().eager('roles').findById(id).throwIfNotFound()
const iat = token.getClaims().iat
if (user) {
if (user.tokensRevokedAt && (new Date(iat) < new Date(user.tokensRevokedAt))) {
return false
}
Object.assign(req, {user: user})
} else {
return false
public async check(req: Request): Promise {
let parser = new Paseto.Parser(await this.getSharedKey())
parser = parser.addRule(new Rules.notExpired()).addRule(new Rules.issuedBy(this.getIssuer()))
try {
const token = await parser.parse(this.getTokenFromRequest(req))
Object.assign(req, {token: token})
const id = token.getClaims().id
const user = await User.query().eager('roles').findById(id).throwIfNotFound()
const iat = token.getClaims().iat
if (user) {
if (user.tokensRevokedAt && (new Date(iat) < new Date(user.tokensRevokedAt))) {
return false
}
Object.assign(req, {user: user})
} else {
return false
}