Exemplo n.º 1
0
        public async Task <ActionResult> ResetPassword([Bind(Include = "SinginId,Email")] RequestMailViewModel model)
        {
            if (string.IsNullOrEmpty(model.SinginId) && string.IsNullOrEmpty(model.Email))
            {
                ModelState.AddModelError("", AuthResources.RequestMailNoParam);
                return(View(model));
            }

            UserModel user = null;

            if (!string.IsNullOrEmpty(model.SinginId))
            {
                user = await UserManager.FindByNameAsync(model.SinginId);
            }
            else if (!string.IsNullOrEmpty(model.Email))
            {
                user = await UserManager.FindByEmailAsync(model.Email);
            }

            if (user == null || !UserManager.IsEmailConfirmed(user.Id))
            {
                ModelState.AddModelError("", AuthResources.ResetPasswordNoUserOrNoConfirm);
                return(View(model));
            }

            string code        = UserManager.GeneratePasswordResetToken(user.Id);
            string callbackUrl = Url.Action("Reset", "Account", new { key = user.Id, code = code }, protocol: Request.Url.Scheme);
            string linktext    = AuthResources.MailResetPasswordBody + callbackUrl;

            UserManager.SendEmail(user.Id, AuthResources.MailResetPasswordSubject, linktext);
            return(View("MailSendComplete"));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                if (!UserManager.IsEmailConfirmed(UserManager.FindByName(model.Email).Id))
                {
                    AuthenticationManager.SignOut();
                    return(View("DisplayEmail"));
                }
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
Exemplo n.º 3
0
 public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
 {
     if (ModelState.IsValid)
     {
         ApplicationUser user = UserManager.Find(model.UserName, model.Password);
         if (user != null)
         {
             if (!UserManager.IsEmailConfirmed(user.Id))
             {
                 ModelState.AddModelError("", "Bạn cần phải xác thực Email");
                 return(View(model));
             }
             IAuthenticationManager authenticationManager = HttpContext.GetOwinContext().Authentication;
             authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
             ClaimsIdentity           identity = _userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
             AuthenticationProperties props    = new AuthenticationProperties();
             props.IsPersistent = model.RememberMe;
             authenticationManager.SignIn(props, identity);
             if (Url.IsLocalUrl(returnUrl))
             {
                 return(Redirect(returnUrl));
             }
             else
             {
                 return(RedirectToAction("Index", "Home"));
             }
         }
         else
         {
             ModelState.AddModelError("", "Tên đăng nhập hoặc mật khẩu không đúng.");
         }
     }
     return(View(model));
 }
Exemplo n.º 4
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");

                    if (!UserManager.IsEmailConfirmed(user.Id))
                    {
                        return(View("EmailNotConfirmed"));
                    }
                    else
                    {
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);
                    }
                    ViewBag.Link = callbackUrl;
                    return(View("DisplayEmail"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Exemplo n.º 5
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(PartialView(model));
                }

                // This doen't count login failures towards lockout only two factor authentication
                // To enable password failures to trigger lockout, change to shouldLockout: true

                //Restricts login unless email confirmation
                var userid = UserManager.FindByEmail(model.Email).Id;
                if (!UserManager.IsEmailConfirmed(userid))
                {
                    return(PartialView("EmailNotConfirmed"));
                }
                var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

                var user = await UserManager.FindByIdAsync(userid);

                // var roles = await UserManager.GetRolesAsync(userid);
                var roles = await UserManager.GetRolesAsync(user.Id);

                switch (result)
                {
                case SignInStatus.Success:

                    if (roles[0] == "Staff")
                    {
                        return(RedirectToAction("Index", "SalesEntry"));
                    }
                    return(RedirectToLocal(returnUrl));

                case SignInStatus.LockedOut:
                    return(View("Lockout"));

                case SignInStatus.RequiresVerification:
                    return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return(PartialView(model));
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", "Invalid login attempt.");
                return(PartialView(model));
            }
        }
Exemplo n.º 6
0
        public ActionResult Index()
        {
            var userId = User.Identity.GetUserId();
            var user   = Database.Users.Find(userId);

            if (user == null)
            {
                return(LogOff());
            }
            ViewBag.IsConfirmed = UserManager.IsEmailConfirmed(userId);
            return(View(user));
        }
Exemplo n.º 7
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            else
            {
                var userid = UserManager.FindByEmail(model.Email);
                if (userid == null)
                {
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return(View(model));
                }
                if (!UserManager.IsEmailConfirmed(userid.Id))
                {
                    return(View("DisplayEmail"));
                }
                else
                {
                    if (userid.isReset == true)
                    {
                        var code = await UserManager.GeneratePasswordResetTokenAsync(userid.Id);

                        return(RedirectToAction("ResetPassword", new { code = code }));
                    }
                    else
                    {
                        // This doesn't count login failures towards lockout only two factor authentication
                        // To enable password failures to trigger lockout, change to shouldLockout: true
                        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

                        switch (result)
                        {
                        case SignInStatus.Success:
                            return(RedirectToLocal(returnUrl));

                        case SignInStatus.LockedOut:
                            return(View("Lockout"));

                        case SignInStatus.RequiresVerification:
                            return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

                        case SignInStatus.Failure:
                        default:
                            ModelState.AddModelError("", "Invalid login attempt.");
                            return(View(model));
                        }
                    }
                }
            }
        }
Exemplo n.º 8
0
        public void CanGetEmailConfirmed()
        {
            var user = IdentityUserMother.BasicUser();

            UserManager.Create(user);

            var token  = UserManager.GenerateEmailConfirmationToken(user.Id);
            var result = UserManager.ConfirmEmail(user.Id, token);

            result.Succeeded.ShouldBe(true);

            UserManager.IsEmailConfirmed(user.Id).ShouldBe(true);
        }
        public void FindByEmail()
        {
            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(this._session));

            userManager.Create(new ApplicationUser()
            {
                UserName = "******", Email = "*****@*****.**", EmailConfirmed = true
            }, "Welcome");
            var x = userManager.FindByEmail("*****@*****.**");

            Assert.IsNotNull(x);
            Assert.IsTrue(userManager.IsEmailConfirmed(x.Id));
        }
        bool ValidLogin(Login login)
        {
            UserStore <IdentityUser>   userStore   = new UserStore <IdentityUser>();
            UserManager <IdentityUser> userManager = new UserManager <IdentityUser>(userStore)
            {
                UserLockoutEnabledByDefault          = true,
                DefaultAccountLockoutTimeSpan        = new TimeSpan(0, 10, 0),
                MaxFailedAccessAttemptsBeforeLockout = 5
            };
            var user = userManager.FindByName(login.UserName);

            if (user == null)
            {
                UserNoFound = true;
                return(false);
            }


            // User is locked out.
            if (userManager.SupportsUserLockout && userManager.IsLockedOut(user.Id))
            {
                Locked = true;
                return(false);
            }


            // Validated user was locked out but now can be reset.
            if (userManager.CheckPassword(user, login.Password) && userManager.IsEmailConfirmed(user.Id))

            {
                if (userManager.SupportsUserLockout &&
                    userManager.GetAccessFailedCount(user.Id) > 0)
                {
                    userManager.ResetAccessFailedCount(user.Id);
                }
            }
            // Login is invalid so increment failed attempts.
            else
            {
                bool lockoutEnabled = userManager.GetLockoutEnabled(user.Id);
                PasswordIncorrent = true;
                if (userManager.SupportsUserLockout && userManager.GetLockoutEnabled(user.Id))
                {
                    userManager.AccessFailed(user.Id);
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 11
0
        public async Task <ActionResult> Login([ModelBinder(typeof(LoginViewModelBinder))] LoginViewModel model, string returnUrl)
        {
            //if (!ModelState.IsValid)
            //{
            //    return View(model);
            //}

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                var userid = UserManager.FindByName(model.Username).Id;
                if (!UserManager.IsEmailConfirmed(userid))
                {
                    var code = await UserManager.GenerateEmailConfirmationTokenAsync(userid);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = userid, code = code }, protocol: Request.Url.Scheme);
                    await UserManager.SendEmailAsync(userid, "Xác nhận tài khoản", "Hãy xác nhận tài khoản của bạn bằng cách nhấn vào đường dẫn sau: <a href=\"" + callbackUrl + "\">link</a>");

                    AuthenticationManager.SignOut();
                    ViewBag.Message = "Bạn chưa xác nhận tài khoản.";
                    return(View(model));
                }
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

            case SignInStatus.Failure:
                ModelState.AddModelError("", "Invalid login attempt.");
                ViewBag.Message = "Tên đăng nhập hoặc mật khẩu không đúng.";
                return(View(model));

            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                ViewBag.Message = "Tên đăng nhập hoặc mật khẩu không đúng.";
                return(View(model));
            }
        }
Exemplo n.º 12
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                var userid = UserManager.FindByEmail(model.Email).Id;
                AspNetUserExtendedModel _extUser = AspNetUserExtendedModel.LoadModel(userid);


                if (!UserManager.IsEmailConfirmed(userid))
                {
                    var code = await UserManager.GenerateEmailConfirmationTokenAsync(userid);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = userid, code = code }, protocol: Request.Url.Scheme);
                    await UserManager.SendEmailAsync(userid, "INOCRM WebAdmin Yönetim Paneli", "Lütfen hesabınızı doğrulamak için bağlantıya tıklayınız <a href=\"" + callbackUrl + "\">Hesap Doğrulama Bağlantısı</a>");

                    // Show message
                    return(RedirectToAction("DisplayEmail"));
                }

                Session["CurrentUserExtended"] = _extUser;
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
Exemplo n.º 13
0
        public IHttpActionResult ForgotPassword(ForgotPasswordModel model)
        {
            if (ModelState.IsValid)
            {
                var user = UserManager.FindByEmail(model.Email);
                if (user == null || !(UserManager.IsEmailConfirmed(user.Id)))
                {
                    return(BadRequest("User does not exist in the system or this email is not confirmed"));
                }

                var code        = UserManager.GeneratePasswordResetToken(user.Id);
                var callBackUrl = new Uri(Url.Link("ResetPasswordViewRoute", new { Email = user.Email, code = code }));
                UserManager.SendEmail(user.Id, "Reset Password", "Please reset your password by clicking here: <a href=\"" + callBackUrl + "\">link</a>");
                return(Ok("Success"));
            }
            else
            {
                return(BadRequest());
            }
        }
Exemplo n.º 14
0
        public override Task TokenEndpoint(OAuthTokenEndpointContext context)
        {
            foreach (KeyValuePair <string, string> property in context.Properties.Dictionary)
            {
                context.AdditionalResponseParameters.Add(property.Key, property.Value);
            }
            context.AdditionalResponseParameters.Add("userId", context.Identity.GetUserId());
            context.AdditionalResponseParameters.Add("isAuthenticated", context.Identity.IsAuthenticated);

            ApplicationDbContext userscontext = new ApplicationDbContext();
            var userStore   = new UserStore <UserAccount>(userscontext);
            var userManager = new UserManager <UserAccount>(userStore);

            context.AdditionalResponseParameters.Add("isStudent", userManager.IsInRole(context.Identity.GetUserId(), "Student"));
            context.AdditionalResponseParameters.Add("isTeacher", userManager.IsInRole(context.Identity.GetUserId(), "Teacher"));
            context.AdditionalResponseParameters.Add("isCompany", userManager.IsInRole(context.Identity.GetUserId(), "Company"));
            context.AdditionalResponseParameters.Add("isCoordinator", userManager.IsInRole(context.Identity.GetUserId(), "Coordinator"));
            context.AdditionalResponseParameters.Add("emailConfirmed", userManager.IsEmailConfirmed(context.Identity.GetUserId()));

            return(Task.FromResult <object>(null));
        }
Exemplo n.º 15
0
        public ActionResult ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = UserManager.FindByName(model.Email);
                if (user == null || !UserManager.IsEmailConfirmed(user.Id))
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    return(View(nameof(ForgotPasswordConfirmation)));
                }

                // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                // Send an email with this link
                // string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
                // var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                // await UserManager.SendEmailAsync(user.Id, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>");
                // return RedirectToAction("ForgotPasswordConfirmation", "Account");
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = UserManager.FindByEmail(model.Email);

            if (user != null && !UserManager.IsEmailConfirmed(user.Id))
            {
                ModelState.AddModelError("", "Please confirm your account by following the instructions in the confirmation email.");
                return(View(model));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
        bool ValidLogin(Login login)
        {
            UserStore<IdentityUser> userStore = new UserStore<IdentityUser>();
            UserManager<IdentityUser> userManager = new UserManager<IdentityUser>(userStore)
            {
                UserLockoutEnabledByDefault = true,
                DefaultAccountLockoutTimeSpan = new TimeSpan(0, 10, 0),
                MaxFailedAccessAttemptsBeforeLockout = 3
            };
            var user = userManager.FindByName(login.UserName);

            if (user == null)
                return false;

            // User is locked out. 
            if (userManager.SupportsUserLockout && userManager.IsLockedOut(user.Id))
                return false;

            // Validated user was locked out but now can be reset. 
            if (userManager.CheckPassword(user, login.Password)
                    && userManager.IsEmailConfirmed(user.Id))
            {
                if (userManager.SupportsUserLockout
                 && userManager.GetAccessFailedCount(user.Id) > 0)
                {
                    userManager.ResetAccessFailedCount(user.Id);
                }
            }
            // Login is invalid so increment failed attempts. 
            else {
                bool lockoutEnabled = userManager.GetLockoutEnabled(user.Id);
                if (userManager.SupportsUserLockout && userManager.GetLockoutEnabled(user.Id))
                {
                    userManager.AccessFailed(user.Id);
                    return false;
                }
            }
            return true;
        }
 public void FindByEmail()
 {
     var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(this._session));
     userManager.Create(new ApplicationUser() { UserName = "******", Email = "*****@*****.**", EmailConfirmed = true }, "Welcome");
     var x = userManager.FindByEmail("*****@*****.**");
     Assert.IsNotNull(x);
     Assert.IsTrue(userManager.IsEmailConfirmed(x.Id));
 }
Exemplo n.º 19
0
        public virtual async Task <ActionResult> Login(LoginModel model)
        {
            var currentLanguage = WorkContext.CurrentLanguage;

            model.CurrentLanguage        = currentLanguage;
            model.ExternalLoginProviders = _externalLoginProviderManager.GetAvailableLoginProvidersInfo();

            if (CurrentSettings.UseGoogleRecaptchaForLogin && CurrentSettings.ShowRecaptchaAfterNFailedAttempt - 1 <= FailedAttempts)
            {
                ViewBag.publicKey = CurrentSettings.GoogleRecaptchaSiteKey;


                if (CurrentSettings.ShowRecaptchaAfterNFailedAttempt <= FailedAttempts)
                {
                    if (!ReCaptcha.Validate(CurrentSettings.GoogleRecaptchaSecretKey))
                    {
                        IncreaseFailedAttempts();
                        ViewBag.RecaptchaLastErrors = ReCaptcha.GetLastErrors(HttpContext);
                        return(View(model));
                    }
                }
            }

            if (!ModelState.IsValid)
            {
                IncreaseFailedAttempts();
                return(View(model));
            }

            var user = UserManager.FindByEmail(model.Email);

            if (CurrentSettings.ConfirmUserEmailAddress)
            {
                if (user != null && !UserManager.IsEmailConfirmed(user.Id))
                {
                    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "User", new { userId = user.Id, code = code },
                                                 Request.Url.Scheme);
                    await _emailService.SendEmailFromTemplateAsync("ConfirmEmail", _localizationService.GetResource("ConfirmAccount"),
                                                                   model.Email, new
                    {
                        Url          = callbackUrl,
                        UserFullName = user.FirstName + " " + user.LastName
                    });

                    return(View("DisplayEmailConfirm"));
                }
            }

            var signIn = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe,
                                                                 CurrentSettings.UserLockoutEnabled);

            switch (signIn)
            {
            case SignInStatus.Success:
                EventPublisher.Publish(new UserLoggedinEvent(user));
                return(RedirectToLocal(model.ReturnUrl));

            case SignInStatus.LockedOut:
                IncreaseFailedAttempts();
                return(View("Lockout"));

            default:
                IncreaseFailedAttempts();
                ModelState.AddModelError("", _localizationService.GetResource("InvalidLogin"));
                return(View(model));
            }
        }
Exemplo n.º 20
0
        public async Task <HttpResponseMessage> PostSetPassword(SetPasswordModel model)
        {
            var result = await UserManager.ResetPasswordAsync(model.UserId, model.ResetCode, model.Password);

            if (result.Succeeded)
            {
                var lockedOut = await UserManager.IsLockedOutAsync(model.UserId);

                if (lockedOut)
                {
                    Logger.Info <AuthenticationController>(
                        "User {0} is currently locked out, unlocking and resetting AccessFailedCount",
                        () => model.UserId);

                    //var user = await UserManager.FindByIdAsync(model.UserId);
                    var unlockResult = await UserManager.SetLockoutEndDateAsync(model.UserId, DateTimeOffset.Now);

                    if (unlockResult.Succeeded == false)
                    {
                        Logger.Warn <AuthenticationController>("Could not unlock for user {0} - error {1}",
                                                               () => model.UserId, () => unlockResult.Errors.First());
                    }

                    var resetAccessFailedCountResult = await UserManager.ResetAccessFailedCountAsync(model.UserId);

                    if (resetAccessFailedCountResult.Succeeded == false)
                    {
                        Logger.Warn <AuthenticationController>("Could not reset access failed count {0} - error {1}",
                                                               () => model.UserId, () => unlockResult.Errors.First());
                    }
                }

                //They've successfully set their password, we can now update their user account to be confirmed
                //if user was only invited, then they have not been approved
                //but a successful forgot password flow (e.g. if their token had expired and they did a forgot password instead of request new invite)
                //means we have verified their email
                if (!UserManager.IsEmailConfirmed(model.UserId))
                {
                    await UserManager.ConfirmEmailAsync(model.UserId, model.ResetCode);
                }

                //if the user is invited, enable their account on forgot password
                var identityUser = await UserManager.FindByIdAsync(model.UserId);

                //invited is not approved, never logged in, invited date present

                /*
                 * if (LastLoginDate == default && IsApproved == false && InvitedDate != null)
                 *  return UserState.Invited;
                 */
                if (identityUser != null && !identityUser.IsApproved)
                {
                    var user = Services.UserService.GetByUsername(identityUser.UserName);
                    //also check InvitedDate and never logged in, otherwise this would allow a disabled user to reactivate their account with a forgot password
                    if (user.LastLoginDate == default && user.InvitedDate != null)
                    {
                        user.IsApproved  = true;
                        user.InvitedDate = null;
                        Services.UserService.Save(user);
                    }
                }

                UserManager.RaiseForgotPasswordChangedSuccessEvent(model.UserId);
                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            return(Request.CreateValidationErrorResponse(
                       result.Errors.Any() ? result.Errors.First() : "Set password failed"));
        }
Exemplo n.º 21
0
 public bool IsEmailConfirmed(string userId)
 {
     return(_userManager.IsEmailConfirmed(userId));
 }
Exemplo n.º 22
0
        public async Task <IHttpActionResult> LoginUser(string UserName, string Email, string PasswordHash, bool Empresa, bool Freelance)
        {
            //string UserName = "******";
            //string Email = "*****@*****.**";
            //string  PasswordHash = "j7948810";
            //bool Empresa = true;
            //bool Freelance = false;

            var user = new ApplicationUser()
            {
                UserName = UserName, Email = Email, Empresa = Empresa, Freelance = Freelance
            };


            AspNetUsers aspuser = new AspNetUsers();

            try
            {
                ZonaFl.Business.SubSystems.SUser usern = new Business.SubSystems.SUser();
                ApplicationUser useru = null;
                if (user.UserName.Contains("@"))
                {
                    useru = UserManager.FindByEmail(user.UserName);
                }
                else
                {
                    useru = UserManager.FindByName(user.UserName);
                }

                if (useru != null)
                {
                    if (UserManager.IsEmailConfirmed(useru.Id))
                    {
                        bool validuser = false;
                        if (useru != null)
                        {
                            validuser = UserManager.CheckPassword(useru, PasswordHash);
                            if (validuser)
                            {
                                var identity = new System.Security.Principal.GenericIdentity(useru.UserName);
                                SetPrincipal(new System.Security.Principal.GenericPrincipal(identity, null));
                            }
                            else
                            {
                                return(Json(new { success = false, issue = user, errors = "Contraseña o usuario incorrecto, favor volver a ingresar los datos", tipo = user, UserEmail = aspuser.Email }));
                            }

                            var useri = HttpContext.Current.User;
                            HttpContext.Current.User = useri;

                            //RegisterBindingModel regbm = new RegisterBindingModel();
                            //regbm.InjectFrom(useru);
                            //HttpSessionStateBase session = new HttpSessionStateWrapper(HttpContext.Current.Session);
                            //SessionBag.Current.User = regbm;
                        }

                        if (useru.Freelance)
                        {
                            return(Json(new { success = validuser, issue = useru, errors = "", tipo = useru, UserEmail = useru.Email, Url = Url.Content("/Offer/Index/" + useru.Id).ToString() }));
                        }
                        else if (useru.Empresa)
                        {
                            return(Json(new { success = validuser, issue = useru, errors = "", tipo = useru, UserEmail = useru.Email, Url = Url.Content("/Projects/Index/" + useru.Id).ToString() }));
                        }
                        else
                        {
                            return(Json(new { success = validuser, issue = useru, errors = "", tipo = useru, UserEmail = useru.Email, Url = Url.Content("/Administration/Users/Index?email=" + useru.Email).ToString() }));
                        }
                    }
                    else
                    {
                        return(Json(new { success = false, issue = user, errors = "Usuario con correo electrónico no confirmado, favor revisar su correo electronico para confirmar la creación de la cuenta", tipo = user, UserEmail = aspuser.Email }));
                    }
                }
                else
                {
                    return(Json(new { success = false, issue = user, errors = "Usuario o password incorecto, favor digitar correctamente sus credenciales", tipo = user, UserEmail = aspuser.Email }));
                }
            }

            catch (Exception ex)
            {
                return(Json(new { success = false, issue = user, errors = ex.Message, tipo = user, UserEmail = aspuser.Email, Trace = ex.StackTrace }));
            }


            return(Json(new { success = true, issue = "Registro de usuario", errors = "", tipo = "Registro de usuario", UserEmail = user.Email, Url = Url.Content("/Freelance/Logout").ToString() }));
        }