public async Task <Model.User> SignUp(UserInsertRequest request) { if (request.Password != request.PasswordConfirmation) { throw new Exception("Passwords do not match!"); } var entity = _mapper.Map <Database.User>(request); entity.PasswordSalt = HashHelper.GenerateSalt(); entity.PasswordHash = HashHelper.GenerateHash(entity.PasswordSalt, request.Password); await _context.Users.AddAsync(entity); await _context.SaveChangesAsync(); var role = await _context.Roles .Where(i => i.Name == "User") .SingleAsync(); var userRole = new Database.UserRole() { UserID = entity.ID, RoleID = role.ID }; await _context.UserRoles.AddAsync(userRole); await _context.SaveChangesAsync(); return(_mapper.Map <Model.User>(entity)); }
public override async Task <Model.User> Insert(UserInsertRequest request) { if (request.Password != request.PasswordConfirmation) { throw new Exception("Passwords do not match!"); } if (!await IsEmailUnique(request.Email)) { throw new UserException("Email is taken!"); } if (!await IsUsernameUnique(request.Username)) { throw new UserException("Username is taken"); } var entity = _mapper.Map <Database.User>(request); entity.PasswordSalt = HashHelper.GenerateSalt(); entity.PasswordHash = HashHelper.GenerateHash(entity.PasswordSalt, request.Password); await _context.Users.AddAsync(entity); await _context.SaveChangesAsync(); foreach (var roleID in request.Roles) { var role = new Database.UserRole() { UserID = entity.ID, RoleID = roleID }; await _context.UserRoles.AddAsync(role); } await _context.SaveChangesAsync(); return(_mapper.Map <Model.User>(entity)); }
public MAccount Insert(AccountInsertRequest request) { //first check if username is existant var list = _context.Account.ToList(); if (list.Select(i => i.Username).Contains(request.Username)) { throw new UserException("Username is taken!"); } var entity = _mapper.Map <Account>(request); _context.Add(entity); if (request.Password != request.PasswordConfirm) { throw new Exception("Passwords must match!"); } entity.PassHsalt = GenerateSalt(); entity.PassHash = GenerateHash(entity.PassHsalt, request.Password); _context.SaveChanges(); foreach (var role in request.Roles) { Database.UserRole userRoles = new Database.UserRole(); userRoles.UserId = entity.UserId; userRoles.RoleId = role; userRoles.DateCreated = DateTime.Now; _context.UserRole.Add(userRoles); } _context.SaveChanges(); return(_mapper.Map <MAccount>(entity)); }
public override async Task <Model.User> Update(int id, UserUpdateRequest request) { var entity = _context.Users.Find(id); if (entity.Email != request.Email && await IsEmailUnique(request.Email) == false) { throw new UserException("Email is taken!"); } if (entity.Username != request.Username && await IsUsernameUnique(request.Username) == false) { throw new UserException("Username is taken"); } _context.Users.Attach(entity); _context.Users.Update(entity); if (!string.IsNullOrWhiteSpace(request.Password)) { if (request.Password != request.PasswordConfirmation) { throw new Exception("Passwords do not match!"); } entity.PasswordSalt = HashHelper.GenerateSalt(); entity.PasswordHash = HashHelper.GenerateHash(entity.PasswordSalt, request.Password); } foreach (var RoleID in request.Roles) { var userRole = await _context.UserRoles .Where(i => i.RoleID == RoleID && i.UserID == id) .SingleOrDefaultAsync(); if (userRole == null) { var newRole = new Database.UserRole() { UserID = id, RoleID = RoleID }; await _context.Set <Database.UserRole>().AddAsync(newRole); } } foreach (var RoleID in request.RolesToDelete) { var userRole = await _context.UserRoles .Where(i => i.RoleID == RoleID && i.UserID == id) .SingleOrDefaultAsync(); if (userRole != null) { _context.Set <Database.UserRole>().Remove(userRole); } } _mapper.Map(request, entity); await _context.SaveChangesAsync(); return(_mapper.Map <Model.User>(entity)); }