TokenType.java

package com.albertsilva.dev.asjcatalog.domain.recovery.enums;

/**
 * Finalidade de um {@link com.albertsilva.dev.asjcatalog.domain.recovery.Token}.
 *
 * <p>
 * É persistido pelo nome da constante ({@code @Enumerated(EnumType.STRING)}) na
 * coluna {@code tb_token.type}, cuja restrição {@code check} (migration
 * {@code V009}) aceita exatamente os valores declarados aqui: uma nova
 * constante exigiria também uma nova migration.
 * </p>
 *
 * <p>
 * O tipo é conferido em {@code Token#validate(TokenType)}: um token só é aceito
 * para a finalidade para a qual foi emitido.
 * </p>
 */
public enum TokenType {
  /**
   * Token emitido para confirmar o e-mail e ativar a conta de um usuário recém
   * registrado.
   */
  ACTIVATION,
  /**
   * Token emitido para permitir a redefinição da senha de um usuário.
   */
  PASSWORD_RECOVERY
}