Example #1
0
        public async Task <IActionResult> Register([FromBody] SystemUserVM userVM)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var role = _userRepo.GetRoleByName(userVM.RoleName);
                    if (role == null)
                    {
                        return(BadRequest(new { message = $"Invalid role {userVM.RoleName}" }));
                    }
                    var userManager = _serviceProvider.GetRequiredService <UserManager <SystemUser> >();
                    var result      = await userManager.CreateAsync(new SystemUser { Email = userVM.Email, UserName = userVM.Email }, userVM.Password);

                    if (result.Succeeded)
                    {
                        var user = await userManager.FindByEmailAsync(userVM.Email);

                        result = await userManager.AddToRoleAsync(user, role.Name);

                        if (result.Succeeded)
                        {
                            return(Ok());
                        }
                    }
                    if (result.Errors != null && result.Errors.Count() > 0)
                    {
                        return(BadRequest(new { message = result.Errors.First().Description }));
                    }
                }
                catch (Exception e)
                {
                    return(StatusCode(500, new { message = e.Message }));
                }
            }
            return(BadRequest());
        }