package auth

import "regexp"

const MinPasswordLen = 5

var (
	hasLetter  = regexp.MustCompile(`[A-Za-z]`)
	hasDigit   = regexp.MustCompile(`\d`)
	hasSpecial = regexp.MustCompile(`[^A-Za-z0-9]`)
)

// PasswordPolicyMessage retorna mensagem em PT-BR se a senha não atender a política mínima.
func PasswordPolicyMessage(password string) string {
	if len(password) < MinPasswordLen {
		return "A senha deve ter no mínimo 5 caracteres."
	}
	if !hasLetter.MatchString(password) {
		return "A senha deve conter pelo menos uma letra."
	}
	if !hasDigit.MatchString(password) {
		return "A senha deve conter pelo menos um número."
	}
	if !hasSpecial.MatchString(password) {
		return "A senha deve conter pelo menos um caractere especial (ex.: !@#$%)."
	}
	return ""
}

func PasswordPolicyOK(password string) bool {
	return PasswordPolicyMessage(password) == ""
}
