Skip to content

Commit

Permalink
docs: add comments above methods
Browse files Browse the repository at this point in the history
  • Loading branch information
brunolipe-a committed Jan 27, 2024
1 parent 55720dc commit 89e979f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
24 changes: 18 additions & 6 deletions src/two_factor_auth_manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,27 @@ import { randomInt } from 'node:crypto'
export class TwoFactorAuthManager {
constructor(private config: ResolvedTwoFactorAuthConfig) {}

generateSecret(account: string): TwoFactorSecret {
/**
* Generate a `Secret` to the given user information
*/
generateSecret(userInfo: string): TwoFactorSecret {
return twoFactor.generateSecret({
name: this.config.issuer,
account,
account: userInfo,
})
}

generateRecoveryCodes(codeLength = 16) {
return Array.from({ length: codeLength }, () => this.generateRecoveryCode(10))
/**
* Generate `n` recovery codes
*/
generateRecoveryCodes(n = 16) {
return Array.from({ length: n }, () => this.generateRecoveryCode(10))
}

/**
* Verify if the OTP (One-Time password) is
* valid to the user `secret`, or if the `recovery codes` includes the `otp`.
*/
verifyToken(secret: string = '', token: string, recoveryCodes: string[] = []) {
const verifyResult = twoFactor.verifyToken(secret, token)
if (!verifyResult) {
Expand All @@ -28,8 +38,11 @@ export class TwoFactorAuthManager {
return verifyResult.delta === 0 // Valida token atual, não permitindo token já expirado ou token futuro
}

/**
* Generate a new token from a secret string
*/
generateToken(secret: string) {
return twoFactor.generateToken(secret)
return twoFactor.generateToken(secret)?.token
}

private generateRandomChar() {
Expand All @@ -45,7 +58,6 @@ export class TwoFactorAuthManager {
recoveryCode += this.generateRandomChar()
}

// Inserir um espaço no meio
const middleIndex = Math.floor(length / 2)
recoveryCode = `${recoveryCode.substring(0, middleIndex)} ${recoveryCode.substring(middleIndex)}`

Expand Down
3 changes: 3 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ export type ResolvedTwoFactorAuthConfig = {
issuer: string
}

/**
* `Secret` generated from `generateSecret` method
*/
export type TwoFactorSecret = {
secret: string
uri: string
Expand Down

0 comments on commit 89e979f

Please sign in to comment.