//private string _TestValidPassword = "******"; //private string _TestSaltedHashedPassword = @"瞌訖ꎚ壿喐ຯ缟㕧"; //private int _TestSalt = -54623530; //private string _TestInvalidUsername = "******"; //private string _TestInvalidPassword = "******"; /// <summary> /// Returns Success(true) if verify user is valid, Success(false) if invalid. Throws exceptions if something bad happens. /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> protected override bool? VerifyUserImpl(string username, string password) { bool? retResult = null; var results = from u in SeedData.Ton.Users where u.Username == username select u; if (results.Count() == 1) { //USERNAME FOUND. CHECK PASSWORD var userDto = results.First(); SaltedHashedPassword saltedHashedPasswordObj = new SaltedHashedPassword(password, userDto.Salt); if (string.Compare(userDto.SaltedHashedPasswordValue, saltedHashedPasswordObj.Value, StringComparison.InvariantCulture) == 0) { //PASSWORDS MATCH retResult = true; } else { //PASSWORDS DO *NOT* MATCH retResult = false; } } else if (results.Count() == 0) { //USERNAME NOT FOUND. retResult = false; } else { //?? VERY BAD EXCEPTION. MULTIPLE USERS WITH THAT USERNAME FOUND? throw new Exceptions.VeryBadException(); } return retResult; }
/// <summary> /// Returns Success(true) if verify user is valid, Success(false) if invalid. Throws exceptions if something bad happens. /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> public Result<bool?> VerifyUser(string username, string password) { //old //return Result<bool?>.Success(username == _TestValidUsername && password == _TestValidPassword); Result<bool?> retResult = Result<bool?>.Undefined(null); try { var results = from u in SeedData.Ton.Users where u.Username == username select u; if (results.Count() == 1) { //USERNAME FOUND. CHECK PASSWORD var userDto = results.First(); SaltedHashedPassword saltedHashedPasswordObj = new SaltedHashedPassword(password, userDto.Salt); if (string.Compare(userDto.SaltedHashedPasswordValue, saltedHashedPasswordObj.Value, StringComparison.InvariantCulture) == 0) { //PASSWORDS MATCH retResult = Result<bool?>.Success(true); } else { //PASSWORDS DO *NOT* MATCH retResult = Result<bool?>.Success(false); } } else if (results.Count() == 0) { //USERNAME NOT FOUND. retResult = Result<bool?>.Success(false); } else { //?? VERY BAD EXCEPTION. MULTIPLE USERS WITH THAT USERNAME FOUND? throw new Exceptions.VeryBadException(); } } catch (Exception ex) { retResult = Result<bool?>.FailureWithInfo(null, ex); } return retResult; }