package security

import (
	"errors"
	"regexp"
	"strings"
)

var (
	reUpper   = regexp.MustCompile(`[A-Z]`)
	reLower   = regexp.MustCompile(`[a-z]`)
	reDigit   = regexp.MustCompile(`[0-9]`)
	reSpecial = regexp.MustCompile(`[^A-Za-z0-9]`)
)

func ValidatePassword(pw string) error {
	pw = strings.TrimSpace(pw)

	if len(pw) < 8 {
		return errors.New("Parola en az 8 karakter olmalı")
	}
	if !reUpper.MatchString(pw) {
		return errors.New("Parola en az 1 büyük harf içermeli")
	}
	if !reLower.MatchString(pw) {
		return errors.New("Parola en az 1 küçük harf içermeli")
	}
	if !reDigit.MatchString(pw) {
		return errors.New("Parola en az 1 rakam içermeli")
	}
	if !reSpecial.MatchString(pw) {
		return errors.New("Parola en az 1 özel karakter içermeli")
	}
	return nil
}
