Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }