コード例 #1
0
        public async Task <IActionResult> Register([FromBody] AccountRegistrationDto model)
        {
            if (!ModelState.IsValid)
            {
                var badResult = new OperationResult();
                badResult.Message = string.Join("; ", ModelState.Values
                                                .SelectMany(x => x.Errors)
                                                .Select(x => x.ErrorMessage));
                return(new OkObjectResult(badResult));
            }

            var result = await _accountService.Register(model);

            return(new OkObjectResult(result));
        }
コード例 #2
0
        public async Task <OperationResult> Register(AccountRegistrationDto model)
        {
            var result = new OperationResult();

            var account = await _userManager.FindByEmailAsync(model.Email);

            if (account == null)
            {
                account = new ApplicationUser()
                {
                    UserName    = model.Email,
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    Email       = model.Email,
                    PhoneNumber = model.PhoneNumber,
                    Sex         = model.Sex,
                    Birthday    = model.Birthday,
                    Status      = UserStatus.Active
                };

                var accountResult = await _userManager.CreateAsync(account, model.Password);

                if (accountResult.Succeeded)
                {
                    var user = await _userManager.FindByEmailAsync(account.Email);

                    var rolesResult = await _userManager.AddToRoleAsync(user, "User");
                }

                result.IsSuccessful = accountResult.Succeeded;
                result.Message      = accountResult.Errors.Select(x => x.Description).Join(";");
            }
            else
            {
                result.Message = "User with such email is already exists";
            }

            return(result);
        }