package com.softwaremill.common.cdi.validation;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
/**
* Password strength validator.
*
* Created by amorfis on Dec 3, 2010 2:08:05 PM
*/
@Documented
@Constraint(validatedBy = PasswordValidator.class)
@Target( {ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface Password {
/**
* Minimal number of lowercase letters required.
* @return
*/
int lowercaseRequired() default 0;
/**
* Minimal number of uppercase letters required.
* @return
*/
int uppercaseRequired() default 0;
/**
* Minimal number of digits required.
* @return
*/
int digitsRequired() default 0;
/**
* Minimal number of special characters required.
* @return
*/
int specialRequired() default 0;
/**
* Minimal password length
* @return
*/
int minLength() default 1;
String noLowerCaseMessage() default "Not enough lowercase letters";
String noUpperCaseMessage() default "Not enough uppercase letters";
String noDigitsMessage() default "Not enough digits";
String noSpecialMessage() default "Not enough special characters";
String tooShortMessage() default "Password is too short";
String message() default "Password too weak";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}