Ejemplo n.º 1
0
        public async Task <IActionResult> RegisterUser(RegisterUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                // create user + claims
                var user = new User
                {
                    Username = model.Username,
                    Password = model.Password,
                    IsActive = true
                };
                user.Claims.Add(new UserClaim("country", model.Country));
                user.Claims.Add(new UserClaim("address", model.Address));
                user.Claims.Add(new UserClaim("given_name", model.FirstName));
                user.Claims.Add(new UserClaim("family_name", model.LastName));
                user.Claims.Add(new UserClaim("email", model.Email));
                user.Claims.Add(new UserClaim("subscriptionlevel", "FreeUser"));

                _idpUserRepository.AddUser(user);

                if (!_idpUserRepository.Save())
                {
                    throw new Exception("Creating user failed.");
                }

                // log in user
                // issue authentication cookie with subject ID and username
                await HttpContext.SignInAsync(user.SubjectId, user.Username);

                // continue with flow
                if (_interactionService.IsValidReturnUrl(model.ReturnUrl) ||
                    Url.IsLocalUrl(model.ReturnUrl))
                {
                    return(Redirect(model.ReturnUrl));
                }

                return(Redirect("~"));
            }

            return(View(model));
        }