Exemple #1
0
        /// <summary>
        /// Reset password.
        /// </summary>
        /// <param name="username">The username.</param>
        /// <param name="answer">The answer.</param>
        /// <returns>The new password.</returns>
        public string ResetPassword(string username, string answer)
        {
            // Get the user data.
            Nequeo.DataAccess.ApplicationLogin.Data.User user = GetSpecificUser(username);

            if (!EnablePasswordReset)
            {
                throw new NotSupportedException("Password reset is not enabled.");
            }

            if (user == null)
            {
                throw new NotSupportedException("The supplied user name has not been found.");
            }

            // Generate the new password.
            string newPassword = System.Web.Security.Membership.GeneratePassword(MinRequiredPasswordLength, MinRequiredNonAlphanumericCharacters);

            // Update the password.
            user.LoginPassword = newPassword;
            user.ModifiedDate  = DateTime.Now;
            bool ret = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User().Update.UpdateItem(user);

            // Return the password.
            if (ret)
            {
                return(newPassword);
            }
            else
            {
                throw new Exception("User not found, or user is locked out. Password not Reset.");
            }
        }
Exemple #2
0
        /// <summary>
        /// Delete the user
        /// </summary>
        /// <param name="username">The username.</param>
        /// <param name="deleteAllRelatedData">Delete all related data.</param>
        /// <returns>True if complete; else false.</returns>
        public bool DeleteUser(string username, bool deleteAllRelatedData)
        {
            bool ret = false;

            // Get the user data.
            Nequeo.DataAccess.ApplicationLogin.Data.User user = GetSpecificUser(username);

            try
            {
                // Attempt to delete the user.
                ret = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User().
                      Delete.DeleteItemPredicate(
                    u =>
                    (u.LoginUsername == username)
                    );

                // Delete any extra data.
                if (deleteAllRelatedData)
                {
                    // Attempt to delete the user address.
                    ret = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress().
                          Delete.DeleteItemPredicate(
                        u =>
                        (u.UserAddressID == user.UserAddressID)
                        );
                }
            }
            catch { }

            // Return the result of the deletion.
            return(ret);
        }
Exemple #3
0
        /// <summary>
        /// Get username by email.
        /// </summary>
        /// <param name="email">The email address.</param>
        /// <returns>The username; else empty string.</returns>
        public string GetUserNameByEmail(string email)
        {
            string username = string.Empty;

            // Get the user data.
            Nequeo.DataAccess.ApplicationLogin.Data.Extension.User        user        = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User();
            Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress userAddress = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress();
            Nequeo.DataAccess.ApplicationLogin.Data.UserAddress           address     = userAddress.Select.SelectDataEntity(u => u.EmailAddress == email);
            Nequeo.DataAccess.ApplicationLogin.Data.User userData = user.Select.SelectDataEntity(u => u.UserAddressID == address.UserAddressID);

            // Return the username.
            if (userData != null)
            {
                username = userData.LoginUsername;
            }

            // Return an empty string.
            if (userData == null)
            {
                username = string.Empty;
            }

            // Return the username.
            return(username);
        }
Exemple #4
0
        /// <summary>
        /// Change password.
        /// </summary>
        /// <param name="username">The username.</param>
        /// <param name="oldPassword">The old password.</param>
        /// <param name="newPassword">The new password.</param>
        /// <returns>True if complete; else false.</returns>
        public bool ChangePassword(string username, string oldPassword, string newPassword)
        {
            // Validate the user.
            if (!ValidateUser(username, oldPassword))
            {
                return(false);
            }

            bool ret = false;

            // Attempt to validate the user.
            Nequeo.DataAccess.ApplicationLogin.Data.User user = GetSpecificUser(username);

            // If user exists.
            if (user != null)
            {
                // Update the question and answer.
                ret = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User().
                      Update.UpdateItemPredicate(
                    new Data.User()
                {
                    LoginPassword = newPassword,
                    ModifiedDate  = DateTime.Now
                }, u =>
                    (u.LoginUsername == username)
                    );
            }

            // Return the result.
            return(ret);
        }
Exemple #5
0
        /// <summary>
        /// Find users by name.
        /// </summary>
        /// <param name="usernameToMatch">The username to match.</param>
        /// <param name="pageIndex">The page index.</param>
        /// <param name="pageSize">The page size.</param>
        /// <param name="totalRecords">Total number of records.</param>
        /// <returns>The membership user collection.</returns>
        public System.Web.Security.MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
        {
            System.Web.Security.MembershipUserCollection                  memShipUsers = new System.Web.Security.MembershipUserCollection();
            Nequeo.DataAccess.ApplicationLogin.Data.Extension.User        user         = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User();
            Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress userAddress  = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress();

            // Get all the users for the match.
            long usersMatched = user.Select.
                                GetRecordCount(
                u =>
                (Nequeo.Data.TypeExtenders.SqlQueryMethods.Like(u.LoginUsername, ("%" + usernameToMatch + "%")))
                );

            // Get the total number of uses.
            totalRecords = Int32.Parse(usersMatched.ToString());
            int      skipNumber  = (pageIndex * pageSize);
            DateTime createdDate = DateTime.Now;

            // Get the current set on data.
            IQueryable <Data.User> users = user.Select.QueryableProvider().
                                           Where(u =>
                                                 (Nequeo.Data.TypeExtenders.SqlQueryMethods.Like(u.LoginUsername, ("%" + usernameToMatch + "%")))).
                                           OrderBy(u => u.UserID).
                                           Take(pageSize).
                                           Skip(skipNumber);

            // For each user found.
            foreach (Data.User item in users)
            {
                // Get the current users address details
                Data.UserAddress address = userAddress.Select.SelectDataEntity(u => u.UserAddressID == item.UserAddressID);

                // Create the membership user.
                System.Web.Security.MembershipUser memShipUser =
                    new System.Web.Security.MembershipUser(
                        ProviderName,
                        item.LoginUsername,
                        item.UserID,
                        address.EmailAddress,
                        "",
                        item.Comments,
                        true,
                        item.UserSuspended,
                        createdDate,
                        createdDate,
                        createdDate,
                        createdDate,
                        createdDate);

                // Add the user to the collection.
                memShipUsers.Add(memShipUser);
            }

            // Return the collection of membership users.
            return(memShipUsers);
        }
Exemple #6
0
        /// <summary>
        /// Get the specific user for the current application.
        /// </summary>
        /// <param name="userID">The userid.</param>
        /// <returns>The user; else null.</returns>
        private Nequeo.DataAccess.ApplicationLogin.Data.User GetSpecificUser(long userID)
        {
            // Get the user data.
            Nequeo.DataAccess.ApplicationLogin.Data.Extension.User userExt = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User();
            Nequeo.DataAccess.ApplicationLogin.Data.User           user    =
                userExt.Select.SelectDataEntity(
                    u =>
                    (u.UserID == userID)
                    );

            // Return the user.
            return(user);
        }
Exemple #7
0
        /// <summary>
        /// Get the specific user for the current application.
        /// </summary>
        /// <param name="username">The username.</param>
        /// <returns>The user; else null.</returns>
        private Nequeo.DataAccess.ApplicationLogin.Data.User GetSpecificUser(string username)
        {
            // Get the user data.
            Nequeo.DataAccess.ApplicationLogin.Data.Extension.User userExt = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User();
            Nequeo.DataAccess.ApplicationLogin.Data.User           user    =
                userExt.Select.SelectDataEntity(
                    u =>
                    (u.LoginUsername.ToLower() == username.ToLower())
                    );

            // Return the user.
            return(user);
        }
Exemple #8
0
        /// <summary>
        /// Get the number of users online.
        /// </summary>
        /// <returns>The number of users online.</returns>
        public int GetNumberOfUsersOnline()
        {
            // Get the window time interval.
            TimeSpan onlineSpan  = new TimeSpan(0, System.Web.Security.Membership.UserIsOnlineTimeWindow, 0);
            DateTime compareTime = DateTime.Now.Subtract(onlineSpan);

            // Get the users online.
            long usersOnline = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User().Select.
                               GetRecordCount(
                u =>
                (u.ModifiedDate > compareTime)
                );

            // Return the number of users online.
            return(Int32.Parse(usersOnline.ToString()));
        }
Exemple #9
0
        /// <summary>
        /// Unlock the user.
        /// </summary>
        /// <param name="userName">The username.</param>
        /// <returns>True if complete; else false.</returns>
        public bool UnlockUser(string userName)
        {
            bool ret = false;

            // Get the user data.
            Nequeo.DataAccess.ApplicationLogin.Data.User user = GetSpecificUser(userName);

            // Update the user.
            if (user != null)
            {
                user.UserSuspended = false;
                ret = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User().Update.UpdateItem(user);
            }

            // Return the result.
            return(ret);
        }
Exemple #10
0
        /// <summary>
        /// Get user.
        /// </summary>
        /// <param name="username">The username.</param>
        /// <param name="userIsOnline">Is the user online.</param>
        /// <returns>The membership user.</returns>
        public System.Web.Security.MembershipUser GetUser(string username, bool userIsOnline)
        {
            System.Web.Security.MembershipUser memShipUser = null;
            DateTime createdDate = DateTime.Now;

            // Get the user data.
            Nequeo.DataAccess.ApplicationLogin.Data.User user = GetSpecificUser(username);
            Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress userAddress = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress();

            // Make sure that the user exists.
            if (user != null)
            {
                // Get the current users address details
                Data.UserAddress address = userAddress.Select.SelectDataEntity(u => u.UserAddressID == user.UserAddressID);

                // Create the membership user.
                memShipUser = new System.Web.Security.MembershipUser(
                    ProviderName,
                    username,
                    user.UserID,
                    address.EmailAddress,
                    "",
                    user.Comments,
                    true,
                    user.UserSuspended,
                    createdDate,
                    createdDate,
                    createdDate,
                    createdDate,
                    createdDate);

                // If user is on line.
                if (userIsOnline)
                {
                    user.ModifiedDate = createdDate;
                    bool ret = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User().Update.UpdateItem(user);
                }
            }

            // Return the membership user.
            return(memShipUser);
        }
Exemple #11
0
        /// <summary>
        /// Create user.
        /// </summary>
        /// <param name="username">The username.</param>
        /// <param name="password">The password.</param>
        /// <param name="email">The email address.</param>
        /// <param name="passwordQuestion">The password question.</param>
        /// <param name="passwordAnswer">The password answer.</param>
        /// <param name="isApproved">Is approved.</param>
        /// <param name="providerUserKey">The provider key.</param>
        /// <param name="status">The status.</param>
        /// <returns>The membership user.</returns>
        public System.Web.Security.MembershipUser CreateUser(string username, string password, string email,
                                                             string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out System.Web.Security.MembershipCreateStatus status)
        {
            // Attemtp to get a duplicate email address.
            if (RequiresUniqueEmail && GetUserNameByEmail(email) != "")
            {
                // Duplicate email found.
                status = System.Web.Security.MembershipCreateStatus.DuplicateEmail;
                return(null);
            }

            // Attempt to get a use with the same username.
            System.Web.Security.MembershipUser membershipUser = GetUser(username, false);

            // If no user exists then no duplicates.
            if (membershipUser == null)
            {
                DateTime createdDate   = DateTime.Now;
                long     userAddressID = 0;

                // Create a new address.
                Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress userAddress = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.UserAddress();
                Data.UserAddress userAddressData = Data.UserAddress.CreateUserAddress(username, username, 0, false);
                userAddressData.EmailAddress = email;

                // Insert the user address.
                List <object> identities = userAddress.Insert.InsertDataEntity(userAddressData);
                if (identities != null && identities.Count > 0)
                {
                    // Get the user address id.
                    userAddressID = (long)identities[0];
                }

                // Create the new user.
                Nequeo.DataAccess.ApplicationLogin.Data.Extension.User user = new Nequeo.DataAccess.ApplicationLogin.Data.Extension.User();
                Data.User userDate =
                    Data.User.CreateUser(
                        password,
                        username,
                        userAddressID,
                        0,
                        false);

                // Attemtp to insert the new item.
                bool ret = user.Insert.InsertItem(userDate);

                // Set the status of the create user operation.
                if (ret)
                {
                    status = System.Web.Security.MembershipCreateStatus.Success;
                }
                else
                {
                    status = System.Web.Security.MembershipCreateStatus.UserRejected;
                }

                // Return the created user.
                return(GetUser(username, false));
            }
            else
            {
                // Duplicate username.
                status = System.Web.Security.MembershipCreateStatus.DuplicateUserName;
                return(null);
            }
        }