コード例 #1
0
        public async Task <IActionResult> UpdateUser([FromRoute] long id, [FromBody] UserModel.UserForCreate user)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != user.Id)
            {
                return(BadRequest());
            }

            var originUser = _context.User.SingleOrDefault(u => u.Id == id);

            if (originUser == null)
            {
                return(NotFound());
            }

            originUser.UserName           = user.Username;
            originUser.NormalizedEmail    = user.EmailAddress.ToUpper();
            originUser.Name               = user.Name;
            originUser.IsActive           = user.IsActive;
            originUser.Surname            = user.Surname;
            originUser.NormalizedUserName = user.Username.ToUpper();
            originUser.Email              = user.EmailAddress;
            originUser.EmailConfirmed     = user.SendActivationEmail;

            if (!string.IsNullOrEmpty(user.Password))
            {
                var passwd = _userManager.PasswordHasher.HashPassword(originUser, user.Password);
                originUser.PasswordHash = passwd;
            }

            try
            {
                await _context.SaveChangesAsync();

                var currentUserRoles = _context.UserRoles.Where(r => r.UserId == user.Id);

                _context.UserRoles.RemoveRange(currentUserRoles);

                foreach (var roleName in user.AssignedRoleNames)
                {
                    var role = _context.Role.SingleOrDefault(r => r.RoleName == roleName);
                    if (role != null)
                    {
                        await _context.UserRoles.AddAsync(new UserRole(originUser.Id, role.Id));
                    }
                }
                await _context.SaveChangesAsync();

                return(CreatedAtAction("GetUser", new { id = originUser.Id }, originUser));
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
コード例 #2
0
        public async Task <IActionResult> AddUser([FromBody] UserModel.UserForCreate user)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (_context.User.Any(e => e.UserName == user.Username))
            {
                return(Ok(false));
            }

            var newUser = new User()
            {
                UserName           = user.Username,
                NormalizedEmail    = user.EmailAddress.ToUpper(),
                Name               = user.Name,
                IsActive           = user.IsActive,
                Surname            = user.Surname,
                NormalizedUserName = user.Username.ToUpper(),
                Email              = user.EmailAddress,
                EmailConfirmed     = user.SendActivationEmail
            };
            var passwd = _userManager.PasswordHasher.HashPassword(newUser, user.Password);

            newUser.PasswordHash = passwd;

            try
            {
                await _context.User.AddAsync(newUser);

                foreach (var roleName in user.AssignedRoleNames)
                {
                    var role = _context.Role.SingleOrDefault(r => r.RoleName == roleName);
                    if (role != null)
                    {
                        await _context.UserRoles.AddAsync(new UserRole(newUser.Id, role.Id));
                    }
                }
                await _context.SaveChangesAsync();

                return(CreatedAtAction("GetUser", new { id = newUser.Id }, newUser));
            }
            catch (Exception)
            {
                return(BadRequest());
            }

            //_context.User.Add(user);
            //await _context.SaveChangesAsync();

            //return CreatedAtAction("GetUser", new { id = user.Id }, user);
        }