public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    // Create a profile, password, and link the local login before signing in the user
                    User user = new User(model.UserName);
                    if (await IdentityStore.CreateLocalUser(user, model.Password))
                    {
                        await AuthenticationManager.SignIn(HttpContext, user.Id, isPersistent : false);

                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Failed to register user name: " + model.UserName);
                    }
                }
                catch (IdentityException e)
                {
                    ModelState.AddModelError("", e.Message);
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Exemplo n.º 2
0
        public async Task <IHttpActionResult> Register(RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (await IdentityStore.GetUserIdForLocalLogin(model.UserName) != null)
            {
                return(BadRequest("A user with the name '{0}' already exists.", model.UserName));
            }

            // Create a profile, password, and link the local login before signing in the user
            User user = new User(model.UserName);

            try
            {
                if (!await IdentityStore.CreateLocalUser(user, model.Password))
                {
                    return(BadRequest("Failed to create login for '{0}'.", model.UserName));
                }
            }
            catch (IdentityException e)
            {
                return(BadRequest(e.Message));
            }

            InitiateDatabaseForNewUser(user.Id);
            ClaimsIdentity identity = await GetIdentityAsync(user.Id);

            string token = CreateAccessToken(identity);

            return(OAuthAccessToken(token, "bearer", user.UserName));
        }