コード例 #1
0
        /// <summary>
        /// Creates the user using model and password string.
        /// </summary>
        /// <param name="newUser">Model of the new user.</param>
        /// <param name="password">The string with password for new user.</param>
        /// <returns>Id of newly created user.</returns>
        public int CreateUser(User newUser, string password)
        {
            Log.DebugFormat("Begin CreateUser('{0}')", newUser);
            UserValidator userValidator = new UserValidator();

            userValidator.ValidateAndThrow(newUser);

            if (this.FindUserByEmail(newUser.Email) != null)
            {
                string message = string.Format("User with email:'{0}' already exists in data base.", newUser.Email);
                Log.Debug(message);
                throw new DuplicateEntityException(message);
            }

            using (IdeaStorageEntities context = new IdeaStorageEntities())
            {
                ICryptographyManager cryptography = new CryptographyManager();
                string salt = cryptography.CreateSalt(12);
                USER   user = new USER
                {
                    FirstName  = newUser.FirstName,
                    SecondName = newUser.SecondName,
                    IsDeleted  = newUser.IsDeleted,
                    Email      = newUser.Email.ToLower(),
                    Salt       = salt,
                    Password   = cryptography.HashPassword(password, salt)
                };

                context.USERS.Add(user);
                context.SaveChanges();
                Log.DebugFormat("Created user's ID:'{0}'", user.UserId);
                return(user.UserId);
            }
        }
コード例 #2
0
        /// <summary>
        /// Updates the user password and salt.
        /// </summary>
        /// <param name="userId">The user's id.</param>
        /// <param name="oldPassword">The old password which should be updated.</param>
        /// <param name="newPassword">The new password for user.</param>
        /// <exception cref="System.Security.Authentication.AuthenticationException">Invalid email or password.</exception>
        public void UpdateUserCredentials(int userId, string oldPassword, string newPassword)
        {
            Log.DebugFormat("Begin UpdateUserCredentials(userId:'{0}')", userId);

            string passwordFromDataBase;
            string oldSalt;

            this.GetUserCredentials(userId, out passwordFromDataBase, out oldSalt);

            ICryptographyManager cryptographyManager = new CryptographyManager();

            oldPassword = cryptographyManager.HashPassword(oldPassword, oldSalt);

            if (oldPassword != passwordFromDataBase)
            {
                const string Message = "Invalid email or password.";
                Log.Debug(Message);
                throw new AuthenticationException(Message);
            }

            using (IdeaStorageEntities context = new IdeaStorageEntities())
            {
                USER user = context.USERS.Single(u => u.UserId == userId);
                user.Salt     = cryptographyManager.CreateSalt(12);
                user.Password = cryptographyManager.HashPassword(newPassword, user.Salt);
                context.SaveChanges();
            }

            Log.DebugFormat("Credentials updated for user with ID:'{0}'", userId);
        }
コード例 #3
0
        /// <summary>
        /// Updates the user in data base according the model.
        /// </summary>
        /// <param name="user">An <see cref="User" /> instance.</param>
        public void UpdateUser(User user)
        {
            Log.DebugFormat("Begin UpdateUser('{0}')", user);

            UserValidator userValidator = new UserValidator();

            userValidator.ValidateAndThrow(user);

            using (IdeaStorageEntities context = new IdeaStorageEntities())
            {
                USER userFromDataBase = context.USERS.SingleOrDefault(u => u.UserId == user.UserId);

                if (userFromDataBase == null)
                {
                    string message = string.Format("User with ID:'{0}' doesn't exist in data base.", user.UserId);
                    Log.Debug(message);
                    throw new EntityDoesNotExistException(message);
                }

                if (context.USERS.SingleOrDefault(u => u.Email == user.Email.ToLower() && u.UserId != user.UserId) != null)
                {
                    string message = string.Format("User with email:'{0}' already exists in data base.", user.Email);
                    Log.Debug(message);
                    throw new DuplicateEntityException(message);
                }

                userFromDataBase.Email      = user.Email.ToLower();
                userFromDataBase.FirstName  = user.FirstName;
                userFromDataBase.IsDeleted  = user.IsDeleted;
                userFromDataBase.SecondName = user.SecondName;
                context.SaveChanges();
            }

            Log.DebugFormat("User updated '{0}'", user);
        }
コード例 #4
0
        public Node CreateNode(Node newNode)
        {
            NodeValidator nodeValidator = new NodeValidator();

            nodeValidator.Validate(newNode);

            using (IdeaStorageEntities context = new IdeaStorageEntities())
            {
                NODE newDbNode = new NODE
                {
                    Created   = newNode.Created,
                    IsDeleted = newNode.IsDeleted,
                    Modified  = newNode.Modified,
                    OwnerId   = newNode.OwnerId,
                    Text      = newNode.Text,
                    Title     = newNode.Title
                };

                TagManager tagManager = new TagManager();
                foreach (Tag tag in newNode.Tags)
                {
                    tag.TagId = tagManager.CreateTag(tag).TagId;
                    context.TAGSETS.Add(new TAGSET {
                        NodeId = newDbNode.NodeId, TagId = tag.TagId
                    });
                }

                context.NODES.Add(newDbNode);
                context.SaveChanges();

                return(newDbNode.ToModel());
            }
        }
コード例 #5
0
        /// <summary>
        /// Soft deletes the user. Change isDeleted flag to true.
        /// </summary>
        /// <param name="id">The identifier for user which should be deleted.</param>
        public void DeleteUser(int id)
        {
            Log.DebugFormat("Begin DeleteUser(id:'{0}')", id);

            using (IdeaStorageEntities context = new IdeaStorageEntities())
            {
                USER user = context.USERS.SingleOrDefault(u => u.UserId == id);

                if (user == null)
                {
                    string message = string.Format("User with id:'{0}' doesn't exist in data base.", id);
                    Log.Debug(message);
                    throw new EntityDoesNotExistException(message);
                }

                user.IsDeleted = true;
                context.SaveChanges();
            }

            Log.DebugFormat("User with ID:'{0}' deleted", id);
        }
コード例 #6
0
        public void DeleteNode(int id)
        {
            Log.DebugFormat("Begin DeleteNode(id:'{0}')", id);

            using (IdeaStorageEntities context = new IdeaStorageEntities())
            {
                NODE node = context.NODES.SingleOrDefault(u => u.NodeId == id);

                if (node == null)
                {
                    string message = string.Format("Node with id:'{0}' doesn't exist in data base.", id);
                    Log.Debug(message);
                    throw new EntityDoesNotExistException(message);
                }

                node.IsDeleted = true;
                context.SaveChanges();
            }

            Log.DebugFormat("Node with ID:'{0}' deleted", id);
        }
コード例 #7
0
ファイル: TagManager.cs プロジェクト: mdementev/IdeaStorage
        public Tag CreateTag(Tag tag)
        {
            Tag foundTag = this.FindTagByName(tag.Name);

            if (foundTag != null)
            {
                return(foundTag);
            }

            using (var context = new IdeaStorageEntities())
            {
                TAG newTag = new TAG
                {
                    Name = tag.Name,
                };

                context.TAGS.Add(newTag);
                context.SaveChanges();

                return(newTag.ToModel());
            }
        }
コード例 #8
0
        public void UpdateNode(Node node)
        {
            NodeValidator nodeValidator = new NodeValidator();

            nodeValidator.Validate(node);

            using (IdeaStorageEntities context = new IdeaStorageEntities())
            {
                NODE dbNode = context.NODES.FirstOrDefault(n => n.NodeId == node.NodeId);

                if (dbNode == null)
                {
                    string message = string.Format("Node with ID:'{0}' doesn't exist in data base.", node.NodeId);
                    Log.Debug(message);
                    throw new EntityDoesNotExistException(message);
                }

                dbNode.Modified = node.Modified;
                dbNode.Text     = node.Text;
                dbNode.Title    = node.Title;

                List <TAGSET> dbDeleteTagsets = context.TAGSETS.Where(ts => ts.NodeId == node.NodeId).ToList();
                context.TAGSETS.RemoveRange(dbDeleteTagsets);

                TagManager tagManager = new TagManager();
                foreach (Tag tag in node.Tags)
                {
                    tag.TagId = tagManager.CreateTag(tag).TagId;
                    context.TAGSETS.Add(new TAGSET {
                        NodeId = dbNode.NodeId, TagId = tag.TagId
                    });
                }

                context.NODES.AddOrUpdate(dbNode);
                context.SaveChanges();
            }
        }