added validation; DB is global now
This commit is contained in:
@@ -1,9 +1,62 @@
|
||||
package utils
|
||||
|
||||
import "regexp"
|
||||
// import "regexp"
|
||||
|
||||
func IsEmailValid(email string) bool {
|
||||
regex := `^[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,}$`
|
||||
re := regexp.MustCompile(regex)
|
||||
return re.MatchString(email)
|
||||
import (
|
||||
// "reflect"
|
||||
"time"
|
||||
|
||||
"GoMembership/internal/database"
|
||||
"GoMembership/internal/models"
|
||||
"GoMembership/pkg/logger"
|
||||
"github.com/go-playground/validator/v10"
|
||||
"github.com/jbub/banking/iban"
|
||||
"github.com/jbub/banking/swift"
|
||||
"slices"
|
||||
)
|
||||
|
||||
//
|
||||
// func IsEmailValid(email string) bool {
|
||||
// regex := `^[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,}$`
|
||||
// re := regexp.MustCompile(regex)
|
||||
// return re.MatchString(email)
|
||||
// }
|
||||
|
||||
func AgeValidator(fl validator.FieldLevel) bool {
|
||||
fieldValue := fl.Field()
|
||||
// Ensure the field is of type time.Time
|
||||
// if fieldValue.Kind() != reflect.Struct || !fieldValue.Type().ConvertibleTo(reflect.TypeOf(time.Time{})) {
|
||||
// return false
|
||||
// }
|
||||
dateOfBirth := fieldValue.Interface().(time.Time)
|
||||
now := time.Now()
|
||||
age := now.Year() - dateOfBirth.Year()
|
||||
|
||||
if now.YearDay() < dateOfBirth.YearDay() {
|
||||
age-- // if birthday is in the future..
|
||||
}
|
||||
|
||||
return age >= 18
|
||||
}
|
||||
|
||||
func SubscriptionModelValidator(fl validator.FieldLevel) bool {
|
||||
fieldValue := fl.Field().String()
|
||||
var names []string
|
||||
if err := database.DB.Model(&models.SubscriptionModel{}).Pluck("name", &names).Error; err != nil {
|
||||
logger.Error.Fatalf("Couldn't get SubscriptionModel names: %#v", err)
|
||||
return false
|
||||
}
|
||||
return slices.Contains(names, fieldValue)
|
||||
}
|
||||
|
||||
func IBANValidator(fl validator.FieldLevel) bool {
|
||||
fieldValue := fl.Field().String()
|
||||
|
||||
return iban.Validate(fieldValue) == nil
|
||||
}
|
||||
|
||||
func BICValidator(fl validator.FieldLevel) bool {
|
||||
fieldValue := fl.Field().String()
|
||||
|
||||
return swift.Validate(fieldValue) == nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user