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