/// <summary> /// Returns an TUser given the user's id. /// </summary> /// <param name="userId">The user's id.</param> /// <returns></returns> public TUser GetUserById(string userId, ConverIdFromStringDelegate <TKey> stringToId) { TUser user = null; string commandText = "SELECT * FROM " + _tableName + " WHERE Id = @id"; Dictionary <string, object> parameters = new Dictionary <string, object>() { { "@id", userId } }; var rows = _database.Query(commandText, parameters); if (rows != null && rows.Count == 1) { var row = rows[0]; user = (TUser)Activator.CreateInstance(typeof(TUser)); user.Id = stringToId(row["id"]); user.UserName = row["username"]; user.PasswordHash = string.IsNullOrEmpty(row["passwordhash"]) ? null : row["passwordhash"]; user.SecurityStamp = string.IsNullOrEmpty(row["securitystamp"]) ? null : row["securitystamp"]; user.Email = string.IsNullOrEmpty(row["email"]) ? null : row["email"]; user.EmailConfirmed = row["emailconfirmed"] == "True"; } return(user); }
/// <summary> /// Returns a list of TUser instances given a user email. /// </summary> /// <param name="email">User's email address.</param> /// <returns></returns> public List <TUser> GetUserByEmail(string email, ConverIdFromStringDelegate <TKey> stringToId) { //Due to PostgreSQL's case sensitivity, we have another column for the user name in lowercase. if (email != null) { email = email.ToLower(); } List <TUser> users = new List <TUser>(); string commandText = "SELECT * FROM " + _tableName + " WHERE LOWER(Email) = @email"; Dictionary <string, object> parameters = new Dictionary <string, object>() { { "@email", email } }; var rows = _database.Query(commandText, parameters); foreach (var row in rows) { TUser user = (TUser)Activator.CreateInstance(typeof(TUser)); user.Id = stringToId(row["id"]); user.UserName = row["username"]; user.PasswordHash = string.IsNullOrEmpty(row["passwordhash"]) ? null : row["passwordhash"]; user.SecurityStamp = string.IsNullOrEmpty(row["securitystamp"]) ? null : row["securitystamp"]; user.Email = string.IsNullOrEmpty(row["email"]) ? null : row["email"]; user.EmailConfirmed = row["emailconfirmed"] == "True"; users.Add(user); } return(users); }