public void Delete(string guid, BOUser currentUser)
        {
            UserRole userRole = GetRoleByGuid(guid);
            if (BORoleRightX.DeleteAllRightsByRoleID(guid))
            {
                BORole role = new BORole(userRole.RoleId);
                var preDeleteValue = role.CascadingDelete;
                role.CascadingDelete = true;
                role.Delete();
                role.CascadingDelete = preDeleteValue;
            }

            BOUserAudit.CreateAudit(currentUser, "Role Deleted", userRole.RoleName);
        }
        public void Delete(long id, BOUser currentUser)
        {
            // This needs to be handled differently, providing info to the user
            if (id == currentUser.ID)
                return;

            BOUser user = _userRepository.GetById(id);
            user.CascadingDelete = true;

            Membership.DeleteUser(user.Username, true);

            _userRepository.Delete(user);

            BOUserAudit.CreateAudit(currentUser, "User Deleted", string.Format("Changes made to user account for '{0}'", user.Username));
        }
 public static bool CreateAudit(BOUser user, string type, string description)
 {
     try
     {
         BOUserAudit audit = new BOUserAudit();
         audit.User = user;
         audit.Type = type;
         audit.Description = description;
         audit.Save();
         return true;
     }
     catch (Exception ex)
     {
         logger.ErrorException(string.Format("Failed to create audit of type {0}: {1}", type, description), ex);
         return false;
     }
 }
        private bool CreateRole(UserRole userRole, out string message, BOUser user)
        {
            message = string.Empty;
            if (userRole.RoleId == SQLPersistent.NULL_INT64)
            {
                if (UserRole.GetByName(userRole.RoleName) != null)
                {
                    message = string.Format("Failed to create Role: {0}. Role name is already in use.", userRole.RoleName);
                    return false;
                }

                Roles.CreateRole(userRole.RoleName);
                UserRole role = UserRole.GetByName(userRole.RoleName);
                if (userRole == null)
                {
                    message = string.Format("Failed to create Role: {0}", userRole.RoleName);
                    return false;
                }
                userRole.RoleId = role.RoleId;
                BOUserAudit.CreateAudit(user, "Role Created", userRole.RoleName);
            }
            else
            {
                BOUserAudit.CreateAudit(user, "Role Updated", userRole.RoleName);
            }
            return true;
        }
        public IEnumerable<BORole> UserRoles(BOUser user)
        {
            IEnumerable<BOUserRole> userRoles = _userRoleRepository.GetBy<BOUser>(user);
            var roles = new List<BORole>();

            foreach (var userRole in userRoles)
            {
                roles.Add(userRole.Role);
            }

            return roles;
        }
 public BOUserComparer(BOUser.Columns column, BOUser.SortDirections direction)
 {
     _column = column;
     _direction = direction;
 }
        private CreateNewUserResult CreateNewUser(BOMembershipUser membershipUser, ref MembershipUser membership, BOUser currentUser)
        {
            var passwordHistoryRepository = _repositoryFactory.GetRepository<BOPasswordHistory, BOPasswordHistoryCollection>();

            BOUser user = membershipUser.User;
            MembershipCreateStatus createStatus;

            if (IsAlreadyRegisteredEmail(membershipUser))
            {
                return CreateNewUserResult.DuplicateEmailExists;
            }
            BOUser.ValidatePasswordResult validatePasswordResult = user.ValidatePassword(membershipUser.Password.Trim());
            if (validatePasswordResult != BOUser.ValidatePasswordResult.Success)
            {
                switch (validatePasswordResult)
                {
                    case BOUser.ValidatePasswordResult.CannotReusePassword:
                        return CreateNewUserResult.CannotReusePassword;
                    case BOUser.ValidatePasswordResult.InvalidPassword:
                        return CreateNewUserResult.InvalidPassword;
                }
            }
            if (Membership.GetUser(membershipUser.UserName) != null)
                return CreateNewUserResult.DuplicateUserNameExists;

            membershipUser.PasswordHistory.Password = MD5.Md5Hash(membershipUser.Password);

            Membership.CreateUser(membershipUser.UserName, membershipUser.Password, membershipUser.Email, null, null, true, null, out createStatus);
            if (createStatus == MembershipCreateStatus.Success)
            {
                try
                {
                    membership = Membership.GetUser(membershipUser.UserName);
                    user.GUID = ((Guid)membership.ProviderUserKey).ToString();
                    membershipUser.PasswordHistory.User = user;

                    _userRepository.Save(user);

                    passwordHistoryRepository.Save(membershipUser.PasswordHistory);
                    BOUserAudit.CreateAudit(currentUser, "User Created", string.Format("User account for '{0}'", membershipUser.UserName));

                    return CreateNewUserResult.Success;
                }
                catch
                {
                    return CreateNewUserResult.Failed;
                }
            }
            else
            {
                return CreateNewUserResult.Failed;
            }
        }
        public SaveResult Save(BOMembershipUser membershipUser, BOUser currentUser)
        {
            var contactRepository = _repositoryFactory.GetRepository<BOContact, BOContactCollection>();

            MembershipUser membership = null;
            BOUser user = membershipUser.User;

            if (IsAlreadyRegisteredEmail(membershipUser))
                return SaveResult.DuplicateEmailExists;

            if (user != null && user.GUID != null && !string.IsNullOrEmpty(user.GUID.ToString()))
            {
                membership = Membership.GetUser(Guid.Parse(user.GUID));
                ModifyExistingUserResult result = ModifyExistingUser(membershipUser, membership);
                if (result != ModifyExistingUserResult.Success)
                {
                    switch (result)
                    {
                        case ModifyExistingUserResult.CannotReusePassword:
                            return SaveResult.CannotReusePassword;
                        case ModifyExistingUserResult.InvalidPassword:
                            return SaveResult.InvalidPassword;
                        default:
                            return SaveResult.Failed;
                    }
                }
                BOUserAudit.CreateAudit(currentUser, "User Updated", string.Format("Changes made to user account for '{0}'", membershipUser.UserName));
            }
            else
            {
                CreateNewUserResult result = CreateNewUser(membershipUser, ref membership, currentUser);
                if (result != CreateNewUserResult.Success)
                {
                    switch (result)
                    {
                        case CreateNewUserResult.CannotReusePassword:
                            return SaveResult.CannotReusePassword;
                        case CreateNewUserResult.DuplicateEmailExists:
                            return SaveResult.DuplicateEmailExists;
                        case CreateNewUserResult.DuplicateUserNameExists:
                            return SaveResult.DuplicateUserNameExists;
                        case CreateNewUserResult.InvalidPassword:
                            return SaveResult.InvalidPassword;
                        default:
                            return SaveResult.Failed;
                    }
                }
            }

            membershipUser.Contact.User = membershipUser.User;

            contactRepository.Save(membershipUser.Contact);

            AddRoles(membershipUser, membership);

            ChangeUsernameResult changeUserNameResult = ChangeUserName(membershipUser, membership);

            if (changeUserNameResult != ChangeUsernameResult.Success)
            {
                switch (changeUserNameResult)
                {
                    case ChangeUsernameResult.UsernameAlreadyExists:
                        return SaveResult.DuplicateUserNameExists;
                    default:
                        return SaveResult.Failed;
                }
            }

            UpdateMembershipUser(membershipUser, membership);

            _userRepository.Save(user);

            return SaveResult.Success;
        }
Пример #9
0
        /// <summary>
        /// Creates a BOUserObject from the ASPNet User GUID
        /// </summary>
        /// <param name="GUID">ASPNet User GUID</param>
        /// <returns>BOUser</returns>
        public static BOUser GetByGUID(string GUID)
        {
            logger.Trace("GetByGUID");
            BOUser a = new BOUser();
            SqlConnection con = new SqlConnection(GetConnectionString());

            con.Open();

            try
            {
                SqlCommand cmd = new SqlCommand("P_User_GetbyGUID", con);
                cmd.CommandType = CommandType.StoredProcedure;
                SetVarCharParameter(cmd.Parameters, "@USR_GUID", 50, GUID, false);
                SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleResult);

                try
                {
                    if (rdr.Read())
                        a.PopulateFromReader(rdr);
                    else
                        return null;
                }
                catch (Exception ex)
                {
                    logger.ErrorException("Failed to fetch record", ex);
                    return null;
                }
                finally
                {
                    rdr.Close();
                }
            }
            finally
            {
                con.Close();
            }
            return a;
        }