示例#1
0
        public async Task <IActionResult> RegisterAsync([FromForm] CreateUserViewModel userViewModel)
        {
            if (ModelState.IsValid)
            {
                var dbUser = await _userManager.FindByEmailAsync(userViewModel.Email);

                if (dbUser != null)
                {
                    return(Error("Имейлът е зает"));
                }

                var user = await _membersService.BuildUser(userViewModel);

                IdentityResult result = await _userManager.CreateAsync(user, userViewModel.Password);

                if (result.Succeeded)
                {
                    if (!await _roleManager.RoleExistsAsync(userViewModel.Role.ToString()))
                    {
                        await _roleManager.CreateAsync(new IdentityRole(userViewModel.Role.ToString()));
                    }

                    await _userManager.AddToRoleAsync(user, userViewModel.Role.ToString());

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    return(new JsonResult(await GetLoginCredentials(user)));
                }

                return(Errors(result));
            }

            var errors  = ModelState.Values.Where(v => v.Errors.Any()).SelectMany(v => v.Errors.Select(e => e.ErrorMessage));
            var message = string.Join(Environment.NewLine, errors);

            return(Error(message));
        }