/// <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."); } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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())); }
/// <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); }
/// <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); }
/// <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); } }