Esempio n. 1
0
        public async Task<ActionResult> Create(RegisterViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = vm.Email, Email = vm.Email };
                var adminresult = await userManager.CreateAsync(user, vm.Password);

                //Add User to the selected Claims 
                if (adminresult.Succeeded)
                {
                    if (vm.selectedClaims != null)
                    {
                        foreach (var item in vm.selectedClaims)
                        {
                            var claim = new Claim(item, true.ToString());
                            var result = await userManager.AddClaimAsync(user.Id, claim); if (!result.Succeeded)
                            {
                                ModelState.AddModelError("", result.Errors.First());
                                return View(vm);
                            }
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("", adminresult.Errors.First());
                    return View(vm);

                }
                return RedirectToAction("Index");
            }
            return View(vm);
        }
Esempio n. 2
0
        private async Task SignInAsync(ApplicationUser user, bool isPersistent)
        {
            //Comentado devido ao uso do SignalR
            //var sessionKey = ApplicationSignInManager.getSessionKey(user,Request);
            //await userManager.AddSessionAsync(user, sessionKey);

            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.TwoFactorCookie);
            AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, await user.GenerateUserIdentityAsync(userManager));
        }
Esempio n. 3
0
        /// <summary>
        /// Authenticar o usuario e registra a sessao do mesmo
        /// </summary>
        /// <param name="user">O usuario a ser logado.</param>
        /// <param name="isPersistent"></param>
        /// <returns></returns>
        private async Task SignInAsync(ApplicationUser user, bool isPersistent)
        {
            //Comentado devido ao uso do SignalR
            //var sessionKey = ApplicationSignInManager.getSessionKey(user, Request);
            //await userManager.AddSessionAsync(user, sessionKey);

            // Zerando contador de logins errados.
            await userManager.ResetAccessFailedCountAsync(user.Id);

            // Coletando Claims externos (se houver)
            ClaimsIdentity ext = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);

            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.TwoFactorCookie, DefaultAuthenticationTypes.ApplicationCookie);
            AuthenticationManager.SignIn(
                    new AuthenticationProperties { IsPersistent = isPersistent },
                // Criação da instancia do Identity e atribuição dos Claims
                    await user.GenerateUserIdentityAsync(userManager, ext)
                );
        }
 /// <summary>
 /// Valida se o securityStamp cadastrado no banco e igual ao do usuario atual.
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="user"></param>
 /// <param name="context"></param>
 /// <returns>true: se for igual. false: caso seja diferente.</returns>
 private static async Task<bool> VerifySecurityStampAsync(ApplicationUserManager manager, ApplicationUser user, CookieValidateIdentityContext context)
 {
     string stamp = context.Identity.FindFirstValue("AspNet.Identity.SecurityStamp");
     return (stamp == await manager.GetSecurityStampAsync(context.Identity.GetUserId()));
 }
Esempio n. 5
0
        public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return RedirectToAction("Index", "Manage");
            }

            if (ModelState.IsValid)
            {
                // Pegar a informação do login externo.
                var info = await authenticationManager.GetExternalLoginInfoAsync();
                if (info == null)
                {
                    return View("ExternalLoginFailure");
                }
                var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
                var result = await userManager.CreateAsync(user);
                if (result.Succeeded)
                {
                    result = await userManager.AddLoginAsync(user.Id, info.Login);
                    if (result.Succeeded)
                    {
                        await signInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                        var userext = userManager.FindByEmailAsync(model.Email);
                        await SignInAsync(userext.Result, false);
                        return RedirectToLocal(returnUrl);
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }