//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Attempts to sign up from the given data. </summary> /// <remarks> Andre Beging, 26.04.2018. </remarks> /// <param name="model"> The model. </param> /// <returns> True if it succeeds, false if it fails. </returns> //////////////////////////////////////////////////////////////////////////////////////////////////// public static bool TrySignUp(SignUpModel model, out User user) { user = new User(); if (string.IsNullOrWhiteSpace(model.Password)) { return(false); } if (string.IsNullOrWhiteSpace(model.PasswordConfirmation)) { return(false); } if (model.Password != model.PasswordConfirmation) { return(false); } if (string.IsNullOrWhiteSpace(model.Mail)) { return(false); } using (var context = ContextHelper.OpenContext()) { if (context.User.Any(u => u.Mail.Trim().ToLower() == model.Mail.Trim().ToLower())) { return(false); } // Data valid var salt = GenerateSalt(); var hash = CalculatePasswordHash(salt, model.Password); var newUser = new User { Mail = model.Mail.Trim(), Username = model.Name, Origin = model.Origin.Trim(), Created = DateTime.Now, Modified = DateTime.Now, Salt = salt, Hash = hash, Type = UserType.User, Enabled = true }; context.User.Add(newUser); var result = context.SaveChanges(); // No rows affected? if (result == 0) { return(false); } user = newUser; // All good return(true); } }