Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #4
0
        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));
        }