public VerifyResult CheckVerificationToken(int id, VerificationToken token) { if (token == null) { return(VerifyResult.InvalidToken); } string email; return(this.CheckVerificationToken(id, token, out email)); }
public VerifyResult CheckVerificationToken(int id, VerificationToken token, out string email) { string userEmail = null; var result = this.Connection.InTransaction(true).Do(t => { var data = t.ReadOne("SELECT Email, UserBlocked, VerificationToken FROM Users WHERE Id=@id", new { id }); return(VerifyToken(data, token, out userEmail)); }); email = userEmail; return(result); }
public VerifyResult CheckAndClearVerificationToken(int id, VerificationToken token, out string email, string newPassword = null) { string userEmail = null; VerifyResult result = this.Connection.InTransaction(true).Do( t => { var data = t.ReadOne("SELECT Email, Password, UserBlocked, VerificationToken FROM Users WHERE Id=@id", new { id }); result = VerifyToken(data, token, out userEmail); if ((newPassword != null && !this.ValidatePassword(newPassword)) || (newPassword == null && data.Password == null)) { return(VerifyResult.InvalidPassword); } if (result != VerifyResult.Success) { return(result); } var values = new Dictionary <string, object> { { "VerificationToken", null }, { "EmailVerified", true } }; if (newPassword != null) { byte[] salt = null; var hashedPassword = this.PasswordHasher.Hash(newPassword, ref salt); values.Add("Password", hashedPassword); values.Add("Salt", salt); } t.Update("Users", values, "Id=@id", new { id }); return(result); }); email = userEmail; return(result); }
private static VerifyResult VerifyToken(dynamic data, VerificationToken token, out string email) { if (data == null) { email = null; return(VerifyResult.UnknownUser); } email = data.Email; if (data.UserBlocked) { return(VerifyResult.UserBlocked); } byte[] storedToken = data.VerificationToken; if (token == null || !AreNotNullAndEqual(storedToken, token.Data)) { return(VerifyResult.InvalidToken); } return(VerifyResult.Success); }
public VerifyResult ResetVerificationToken(string email, out VerificationToken token, out int id) { if (!ValidateAndNormalizeEmail(ref email)) { token = null; id = 0; return(VerifyResult.UnknownUser); } VerificationToken localToken = null; int localId = 0; var result = this.Connection.InTransaction(true).Do( t => { var data = t.ReadOne("SELECT Id, EmailVerified, UserBlocked FROM Users WHERE Email=@email", new { email }); if (data == null) { return(VerifyResult.UnknownUser); } localId = data.Id; if (data.UserBlocked) { return(VerifyResult.UserBlocked); } localToken = VerificationToken.Generate(); t.Update("Users", new { VerificationToken = localToken.Data }, "Id=@id", new { id = localId }); return(VerifyResult.Success); }); token = localToken; id = localId; return(result); }
public VerifyResult ResetVerificationToken(string email, out VerificationToken token) { int id; return(this.ResetVerificationToken(email, out token, out id)); }
public VerifyResult CheckAndClearVerificationToken(int id, VerificationToken token, out string email, string newPassword = null) { string userEmail = null; VerifyResult result = this.Connection.InTransaction(true).Do( t => { var data = t.ReadOne("SELECT Email, Password, UserBlocked, VerificationToken FROM Users WHERE Id=@id", new { id }); result = VerifyToken(data, token, out userEmail); if ((newPassword != null && !this.ValidatePassword(newPassword)) || (newPassword == null && data.Password == null)) { return VerifyResult.InvalidPassword; } if (result != VerifyResult.Success) { return result; } var values = new Dictionary<string, object> { { "VerificationToken", null }, { "EmailVerified", true } }; if (newPassword != null) { byte[] salt = null; var hashedPassword = this.PasswordHasher.Hash(newPassword, ref salt); values.Add("Password", hashedPassword); values.Add("Salt", salt); } t.Update("Users", values, "Id=@id", new { id }); return result; }); email = userEmail; return result; }
public RegisterResult Register(string email, string password, out VerificationToken token) { int id; return this.Register(email, password, out token, out id); }
public RegisterResult Register(string email, string password, out VerificationToken token, out int id) { if (!ValidateAndNormalizeEmail(ref email)) { id = 0; token = null; return RegisterResult.InvalidEmail; } if (password != null && !this.ValidatePassword(password)) { id = 0; token = null; return RegisterResult.InvalidPassword; } byte[] salt = null; byte[] hash = null; if (password != null) { hash = this.PasswordHasher.Hash(password, ref salt); } token = VerificationToken.Generate(); var user = new { Salt = salt, Password = hash, Email = email, EmailVerified = false, UserBlocked = false, VerificationToken = token.Data }; try { int userId = 0; var result = this.Connection.InTransaction(true).Do( t => { var userInfo = t.ReadOne("SELECT Id, UserBlocked FROM Users WHERE Email=@email", new { email }); if (userInfo != null) { userId = userInfo.Id; return userInfo.UserBlocked ? RegisterResult.UserBlocked : RegisterResult.DuplicateEmail; } t.Save("Users", user, out userId); return RegisterResult.Success; }); id = userId; return result; } catch (DbException exception) { const int MysqlDuplicateEntryServerErrorCode = 1062; object exceptionData = exception.Data["Server Error Code"]; if (exceptionData is int && (int)exceptionData == MysqlDuplicateEntryServerErrorCode) { id = 0; token = null; return RegisterResult.DuplicateEmail; } throw; } }
public VerifyResult ResetVerificationToken(string email, out VerificationToken token, out int id) { if (!ValidateAndNormalizeEmail(ref email)) { token = null; id = 0; return VerifyResult.UnknownUser; } VerificationToken localToken = null; int localId = 0; var result = this.Connection.InTransaction(true).Do( t => { var data = t.ReadOne("SELECT Id, EmailVerified, UserBlocked FROM Users WHERE Email=@email", new { email }); if (data == null) { return VerifyResult.UnknownUser; } localId = data.Id; if (data.UserBlocked) { return VerifyResult.UserBlocked; } localToken = VerificationToken.Generate(); t.Update("Users", new { VerificationToken = localToken.Data }, "Id=@id", new { id = localId }); return VerifyResult.Success; }); token = localToken; id = localId; return result; }
private static VerifyResult VerifyToken(dynamic data, VerificationToken token, out string email) { if (data == null) { email = null; return VerifyResult.UnknownUser; } email = data.Email; if (data.UserBlocked) { return VerifyResult.UserBlocked; } byte[] storedToken = data.VerificationToken; if (token == null || !AreNotNullAndEqual(storedToken, token.Data)) { return VerifyResult.InvalidToken; } return VerifyResult.Success; }
public VerifyResult ResetVerificationToken(string email, out VerificationToken token) { int id; return this.ResetVerificationToken(email, out token, out id); }
public VerifyResult CheckVerificationToken(int id, VerificationToken token, out string email) { string userEmail = null; var result = this.Connection.InTransaction(true).Do(t => { var data = t.ReadOne("SELECT Email, UserBlocked, VerificationToken FROM Users WHERE Id=@id", new { id }); return VerifyToken(data, token, out userEmail); }); email = userEmail; return result; }
public VerifyResult CheckVerificationToken(int id, VerificationToken token) { if (token == null) { return VerifyResult.InvalidToken; } string email; return this.CheckVerificationToken(id, token, out email); }
public RegisterResult Register(string email, string password, out VerificationToken token) { int id; return(this.Register(email, password, out token, out id)); }
public VerifyResult CheckAndClearVerificationToken(int id, VerificationToken token, string newPassword = null) { string email; return(this.CheckAndClearVerificationToken(id, token, out email, newPassword)); }
public RegisterResult Register(string email, string password, out VerificationToken token, out int id) { if (!ValidateAndNormalizeEmail(ref email)) { id = 0; token = null; return(RegisterResult.InvalidEmail); } if (password != null && !this.ValidatePassword(password)) { id = 0; token = null; return(RegisterResult.InvalidPassword); } byte[] salt = null; byte[] hash = null; if (password != null) { hash = this.PasswordHasher.Hash(password, ref salt); } token = VerificationToken.Generate(); var user = new { Salt = salt, Password = hash, Email = email, EmailVerified = false, UserBlocked = false, VerificationToken = token.Data }; try { int userId = 0; var result = this.Connection.InTransaction(true).Do( t => { var userInfo = t.ReadOne("SELECT Id, UserBlocked FROM Users WHERE Email=@email", new { email }); if (userInfo != null) { userId = userInfo.Id; return(userInfo.UserBlocked ? RegisterResult.UserBlocked : RegisterResult.DuplicateEmail); } t.Save("Users", user, out userId); return(RegisterResult.Success); }); id = userId; return(result); } catch (DbException exception) { const int MysqlDuplicateEntryServerErrorCode = 1062; object exceptionData = exception.Data["Server Error Code"]; if (exceptionData is int && (int)exceptionData == MysqlDuplicateEntryServerErrorCode) { id = 0; token = null; return(RegisterResult.DuplicateEmail); } throw; } }
public VerifyResult CheckAndClearVerificationToken(int id, VerificationToken token, string newPassword = null) { string email; return this.CheckAndClearVerificationToken(id, token, out email, newPassword); }