public UserAuth CreateUserAuth(UserAuth newUser, string password) { newUser.ThrowIfNull("newUser"); password.ThrowIfNullOrEmpty("password"); if (newUser.UserName.IsNullOrEmpty() && newUser.Email.IsNullOrEmpty()) throw new ArgumentNullException("UserName or Email is required"); if (!newUser.UserName.IsNullOrEmpty()) { if (!ValidUserNameRegEx.IsMatch(newUser.UserName)) throw new ArgumentException("UserName contains invalid characters", "UserName"); } return dbFactory.Exec(dbCmd => { var effectiveUserName = newUser.UserName ?? newUser.Email; var existingUser = GetUserAuthByUserName(dbCmd, effectiveUserName); if (existingUser != null) throw new ArgumentException("User {0} already exists".Fmt(effectiveUserName)); var saltedHash = new SaltedHash(); string salt; string hash; saltedHash.GetHashAndSaltString(password, out hash, out salt); newUser.PasswordHash = hash; newUser.Salt = salt; dbCmd.Insert(newUser); newUser = dbCmd.GetById<UserAuth>(dbCmd.GetLastInsertId()); return newUser; }); }
private void ValidateNewUserWithoutPassword(UserAuth newUser) { newUser.ThrowIfNull("newUser"); if (newUser.UserName.IsNullOrEmpty() && newUser.Email.IsNullOrEmpty()) throw new ArgumentNullException("UserName or Email is required"); if (!newUser.UserName.IsNullOrEmpty()) { if (!ValidUserNameRegEx.IsMatch(newUser.UserName)) throw new ArgumentException("UserName contains invalid characters", "UserName"); } }
public UserAuth CreateUserAuth(UserAuth newUser, string password) { newUser.ThrowIfNull("newUser"); password.ThrowIfNullOrEmpty("password"); if (newUser.UserName.IsNullOrEmpty() && newUser.Email.IsNullOrEmpty()) { throw new ArgumentNullException("UserName or Email is required"); } if (!newUser.UserName.IsNullOrEmpty()) { if (!ValidUserNameRegEx.IsMatch(newUser.UserName)) { throw new ArgumentException("UserName contains invalid characters", "UserName"); } } using (var redis = factory.GetClient()) { var effectiveUserName = newUser.UserName ?? newUser.Email; var userAuth = GetUserAuthByUserName(redis, newUser.UserName); if (userAuth != null) { throw new ArgumentException("User {0} already exists".Fmt(effectiveUserName)); } var saltedHash = new SaltedHash(); string salt; string hash; saltedHash.GetHashAndSaltString(password, out hash, out salt); newUser.PasswordHash = hash; newUser.Salt = salt; newUser.Id = redis.As <UserAuth>().GetNextSequence(); if (!newUser.UserName.IsNullOrEmpty()) { redis.SetEntryInHash(IndexUserNameToUserId, newUser.UserName, newUser.Id.ToString()); } if (!newUser.Email.IsNullOrEmpty()) { redis.SetEntryInHash(IndexEmailToUserId, newUser.Email, newUser.Id.ToString()); } redis.Store(newUser); return(newUser); } }
private void ValidateNewUser(UserAuth newUser, string password) { newUser.ThrowIfNull("newUser"); password.ThrowIfNullOrEmpty("password"); if (newUser.UserName.IsNullOrEmpty() && newUser.Email.IsNullOrEmpty()) { throw new ArgumentNullException("UserName or Email is required"); } if (!newUser.UserName.IsNullOrEmpty()) { if (!ValidUserNameRegEx.IsMatch(newUser.UserName)) { throw new ArgumentException("UserName contains invalid characters", "UserName"); } } }
public UserAuth CreateUserAuth(UserAuth newUser, string password) { newUser.ThrowIfNull("newUser"); password.ThrowIfNullOrEmpty("password"); if (newUser.UserName.IsNullOrEmpty() && newUser.Email.IsNullOrEmpty()) { throw new ArgumentNullException("UserName or Email is required"); } if (!newUser.UserName.IsNullOrEmpty()) { if (!ValidUserNameRegEx.IsMatch(newUser.UserName)) { throw new ArgumentException("UserName contains invalid characters", "UserName"); } } return(dbFactory.Exec(dbCmd => { var effectiveUserName = newUser.UserName ?? newUser.Email; var existingUser = GetUserAuthByUserName(dbCmd, effectiveUserName); if (existingUser != null) { throw new ArgumentException("User {0} already exists".Fmt(effectiveUserName)); } var saltedHash = new SaltedHash(); string salt; string hash; saltedHash.GetHashAndSaltString(password, out hash, out salt); newUser.PasswordHash = hash; newUser.Salt = salt; dbCmd.Insert(newUser); newUser = dbCmd.GetById <UserAuth>(dbCmd.GetLastInsertId()); return newUser; })); }
public UserAuth CreateUserAuth(UserAuth newUser, string password) { newUser.ThrowIfNull("newUser"); password.ThrowIfNullOrEmpty("password"); if (newUser.UserName.IsNullOrEmpty() && newUser.Email.IsNullOrEmpty()) throw new ArgumentNullException("UserName or Email is required"); if (!newUser.UserName.IsNullOrEmpty()) { if (!ValidUserNameRegEx.IsMatch(newUser.UserName)) throw new ArgumentException("UserName contains invalid characters", "UserName"); } using (var redis = factory.GetClient()) { var effectiveUserName = newUser.UserName ?? newUser.Email; var userAuth = GetUserAuthByUserName(redis, newUser.UserName); if (userAuth != null) throw new ArgumentException("User {0} already exists".Fmt(effectiveUserName)); var saltedHash = new SaltedHash(); string salt; string hash; saltedHash.GetHashAndSaltString(password, out hash, out salt); newUser.PasswordHash = hash; newUser.Salt = salt; newUser.Id = redis.As<UserAuth>().GetNextSequence(); if (!newUser.UserName.IsNullOrEmpty()) redis.SetEntryInHash(IndexUserNameToUserId, newUser.UserName, newUser.Id.ToString()); if (!newUser.Email.IsNullOrEmpty()) redis.SetEntryInHash(IndexEmailToUserId, newUser.Email, newUser.Id.ToString()); redis.Store(newUser); return newUser; } }
private void ValidateNewUser(UserAuth newUser, string password) { newUser.ThrowIfNull("newUser"); password.ThrowIfNullOrEmpty("password"); if (newUser.UserName.IsNullOrEmpty() && newUser.Email.IsNullOrEmpty()) throw new ArgumentNullException("UserName or Email is required"); //Want to have username and email be the same //if (!newUser.UserName.IsNullOrEmpty()) //{ // if (!ValidUserNameRegEx.IsMatch(newUser.UserName)) // throw new ArgumentException("UserName contains invalid characters", "UserName"); // } }