func checkLen(fieldName, fieldValue string, minLen, maxLen int) string {
lenField := len(fieldValue)
return fmt.Sprintf("%s field is too short, less than %d", fieldName, minLen)
return fmt.Sprintf("%s field is too long, more than %d", fieldName, maxLen)
func checkUsername(username string) string {
return checkLen("Username", username, 3, 20)
func checkPassword(password string) string {
return checkLen("Password", password, 6, 50)
func checkEmail(email string) string {
if m, _ := regexp.MatchString(`^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})
06-User-Login - go-mega
, email); !m {
return fmt.Sprintf("Email field not a valid email")
func checkUserPassword(username, password string) string {
if !vm.CheckLogin(username, password) {
return fmt.Sprintf("Username and password is not correct.")
func checkUserExist(username string) string {
if !vm.CheckUserExist(username) {
return fmt.Sprintf("Username already exist, please choose another username")
func checkLogin(username, password string) []string {
if errCheck := checkUsername(username); len(errCheck) > 0 {
errs = append(errs, errCheck)
if errCheck := checkPassword(password); len(errCheck) > 0 {
errs = append(errs, errCheck)
if errCheck := checkUserPassword(username, password); len(errCheck) > 0 {
errs = append(errs, errCheck)
func checkRegister(username, email, pwd1, pwd2 string) []string {
errs = append(errs, "2 password does not match")
if errCheck := checkUsername(username); len(errCheck) > 0 {
errs = append(errs, errCheck)
if errCheck := checkPassword(pwd1); len(errCheck) > 0 {
errs = append(errs, errCheck)
if errCheck := checkEmail(email); len(errCheck) > 0 {
errs = append(errs, errCheck)
if errCheck := checkUserExist(username); len(errCheck) > 0 {
errs = append(errs, errCheck)
func addUser(username, password, email string) error {
return vm.AddUser(username, password, email)