Esempio n. 1
0
        public ActionResult RemoveExternalLogins()
        {
            ICollection <OAuthAccount> accounts       = OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name);
            List <ExternalLogin>       externalLogins = new List <ExternalLogin>();

            foreach (OAuthAccount account in accounts)
            {
                AuthenticationClientData clientData = OAuthWebSecurity.GetOAuthClientData(account.Provider);

                externalLogins.Add(new ExternalLogin
                {
                    Provider            = account.Provider,
                    ProviderDisplayName = clientData.DisplayName,
                    ProviderUserId      = account.ProviderUserId,
                });
            }

            ViewBag.ShowRemoveButton = externalLogins.Count > 1 || OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
            return(PartialView("_RemoveExternalLoginsPartial", externalLogins));
        }
        public ActionResult ForgotPassword(string email)
        {
            int UserId = 0;

            try
            {
                // validate email
                //  UserId = WebSecurity.GetUserId(email);


                if (!WebSecurity.UserExists(email))
                {
                    @ViewBag.Message = "<div class=\"alert alert-danger\">Votre compte n'est pas valide</div>";
                    return(View());
                }

                UserId = WebSecurity.GetUserId(email);
                if (!OAuthWebSecurity.HasLocalAccount(UserId))
                {
                    @ViewBag.Message = "<div class=\"alert alert-danger\">Votre compte est un compte externe. Vous ne pouvez pas changer votre password sur notre site.</div>";
                    return(View());
                }

                // generate token
                string token = WebSecurity.GeneratePasswordResetToken(email, 1440);

                //send email
                _welcomeMailer.PasswordReset(email, token).Send();
            }
            catch (InvalidOperationException exp)
            {
                throw exp;
            }
            catch (Exception exp) {
                @ViewBag.Message = "<div class=\"alert alert-danger\">Une erreur a été pendant la réinitialisation de votre mot de passe.</div>";
                return(View());
            }

            @ViewBag.Message = "<div class=\"alert alert-danger\">La réinitialisation de votre mot de passe a bien été prise en compte.Nous avons envoyé par courrier électronique des instructions pour configurer votre mot de passe à l'adresse e-mail que vous avez soumis. Vous devriez le recevoir sous peu.</div>";
            return(View());
        }
Esempio n. 3
0
        //
        // GET: /Account/Manage
        public ActionResult Manage(ManageMessageId?message)
        {
            string[] rolesArray;
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess
          ? "Dein Passwort wurde aktualisiert."
          : message == ManageMessageId.SetPasswordSuccess
              ? "Dein Passwort wurde gesetzt."
              : message == ManageMessageId.RemoveLoginSuccess
                  ? "The external login was removed."
                  : "";
            ViewBag.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));

            RolePrincipal r = (RolePrincipal)User;

            rolesArray    = r.GetRoles();
            ViewBag.Roles = rolesArray;

            ViewBag.ReturnUrl = Url.Action("Manage");
            return(View());
        }
Esempio n. 4
0
        //
        // GET: /Account/Manage

        public ActionResult Manage(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
             : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
             : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
             : "";
            var  userId          = WebSecurity.GetUserId(User.Identity.Name);
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(userId);

            ViewBag.HasLocalPassword = hasLocalAccount;
            ViewBag.ReturnUrl        = Url.Action("Manage");
            var model = new ManageModel();

            if (hasLocalAccount)
            {
                var user = this.m_Db.UserProfiles.Find(userId);
                model.LoadOnScroll = user.UserData.LoadOnScroll ?? true;
            }
            return(View(model));
        }
Esempio n. 5
0
        //
        // GET: /Account/Manage

        public ActionResult Manage(ManageMessageId?message)
        {
            ReaderBusinessModel currentReader = this._readerManager.GetReaderByUserId(WebSecurity.CurrentUserId);

            if (currentReader == null)
            {
                ViewBag.CurrentReaderId = 0;
            }
            else
            {
                ViewBag.CurrentReaderId = currentReader.ReaderId;
            }

            ViewBag.StatusMessage = message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
                : "";
            ViewBag.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
            ViewBag.ReturnUrl        = Url.Action("Manage");
            return(View());
        }
Esempio n. 6
0
        public ActionResult Manage(LocalPasswordModel model)
        {
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));

            ViewBag.HasLocalPassword = hasLocalAccount;
            ViewBag.ReturnUrl        = Url.Action("Manage");
            if (hasLocalAccount)
            {
                if (ModelState.IsValid)
                {
                    // ChangePassword will throw an exception rather than return false in certain failure scenarios.
                    bool changePasswordSucceeded;
                    try
                    {
                        changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword);
                        DB  db   = new DB();
                        var user = db.UserProfiles.Find(WebSecurity.CurrentUserId);
                        db.SaveChanges();
                    }
                    catch (Exception)
                    {
                        changePasswordSucceeded = false;
                    }

                    if (changePasswordSucceeded)
                    {
                        ModelState.AddModelError("", "انجام شد !");
                    }
                    else
                    {
                        ModelState.AddModelError("", "پسورد فعلی یا پسورد جدید نا معتبر است !");
                    }
                }
            }


            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 7
0
        public ExternalAccounts ExternalAccounts()
        {
            ICollection <OAuthAccount> accounts       = OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name);
            List <ExternalLogin>       externalLogins = new List <ExternalLogin>();

            foreach (OAuthAccount account in accounts)
            {
                AuthenticationClientData clientData = OAuthWebSecurity.GetOAuthClientData(account.Provider);

                externalLogins.Add(new ExternalLogin
                {
                    Provider            = account.Provider,
                    ProviderDisplayName = clientData.DisplayName,
                    ProviderUserId      = account.ProviderUserId,
                });
            }
            ExternalAccounts externalLoginList = new ExternalAccounts();

            externalLoginList.ExternalLogins   = externalLogins;
            externalLoginList.ShowRemoveButton = externalLogins.Count > 1 || OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
            return(externalLoginList);
        }
Esempio n. 8
0
        public static LinkAccountModel ForUser(IDataContext context, IIdentity identity)
        {
            var user = context.GetUser(identity);

            var allProviders = OAuthWebSecurity.RegisteredClientData.Select(c => c.DisplayName).ToArray();

            //  Match each linked provider to the member of allProviders as allProviders has proper casing (Google, not google)
            var linkedProviders = OAuthWebSecurity.GetAccountsFromUserName(user.MembershipUserIdentifier)
                                  .Select(lp => allProviders.Single(ap => ap.ToLower() == lp.Provider.ToLower()))
                                  .ToArray();

            var loginMethodCount = linkedProviders.Count() + (OAuthWebSecurity.HasLocalAccount(user.UserId) ? 1 : 0);

            var model = new LinkAccountModel()
            {
                OpenIDProvidersLinked    = linkedProviders,
                OpenIDProvidersAvailable = allProviders.Where(p => !linkedProviders.Contains(p)),
                AllowRemovingLogin       = loginMethodCount > 1
            };

            return(model);
        }
        public ActionResult Disassociate(string provider, string providerUserId)
        {
            string          ownerAccount = OAuthWebSecurity.GetUserName(provider, providerUserId);
            ManageMessageId?message      = null;

            if (ownerAccount == User.Identity.Name)
            {
                using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                    IsolationLevel = IsolationLevel.Serializable
                }))
                {
                    bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
                    if (hasLocalAccount || OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name).Count > 1)
                    {
                        OAuthWebSecurity.DeleteAccount(provider, providerUserId);
                        scope.Complete();
                        message = ManageMessageId.RemoveLoginSuccess;
                    }
                }
            }
            return(RedirectToAction("Manage", new { Message = message }));
        }
Esempio n. 10
0
        public ActionResult RemoveExternalLogins()
        {
            var accounts       = OAuthWebSecurity.GetAccountsFromUserName(this.User.Identity.Name);
            var externalLogins = new List <ExternalLogin>();

            foreach (var account in accounts)
            {
                var clientData = OAuthWebSecurity.GetOAuthClientData(account.Provider);

                externalLogins.Add(new ExternalLogin
                {
                    Provider            = account.Provider,
                    ProviderDisplayName = clientData.DisplayName,
                    ProviderUserId      = account.ProviderUserId,
                });
            }

            this.ViewBag.ShowRemoveButton = externalLogins.Count > 1 ||
                                            OAuthWebSecurity.HasLocalAccount(
                WebSecurity.GetUserId(this.User.Identity.Name));
            return(this.PartialView("_RemoveExternalLoginsPartial", externalLogins));
        }
Esempio n. 11
0
        public ActionResult Disassociate(string provider, string providerUserId)
        {
            string ownerAccount = OAuthWebSecurity.GetUserName(provider, providerUserId);
            ManageMessageId? message = null;

            // Удалять связь учетной записи, только если текущий пользователь — ее владелец
            if (ownerAccount == User.Identity.Name)
            {
                // Транзакция используется, чтобы помешать пользователю удалить учетные данные последнего входа
                using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.Serializable }))
                {
                    bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
                    if (hasLocalAccount || OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name).Count > 1)
                    {
                        OAuthWebSecurity.DeleteAccount(provider, providerUserId);
                        scope.Complete();
                        message = ManageMessageId.RemoveLoginSuccess;
                    }
                }
            }

            return RedirectToAction("Manage", new { Message = message });
        }
        public ActionResult Disassociate(string provider, string providerUserId)
        {
            string ownerAccount = OAuthWebSecurity.GetUserName(provider, providerUserId);
            ManageMessageId? message = null;

            // Only disassociate the account if the currently logged in user is the owner
            if (ownerAccount == User.Identity.Name)
            {
                // Use a transaction to prevent the user from deleting their last login credential
                using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.Serializable }))
                {
                    bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
                    if (hasLocalAccount || OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name).Count > 1)
                    {
                        OAuthWebSecurity.DeleteAccount(provider, providerUserId);
                        scope.Complete();
                        message = ManageMessageId.RemoveLoginSuccess;
                    }
                }
            }

            return RedirectToAction("Manage", new { Message = message });
        }
Esempio n. 13
0
        public ActionResult ManageEmail(LocalEmailModel model)
        {
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));

            ViewBag.HasLocalPassword = hasLocalAccount;

            bool changeEmailSucceeded = true;

            if (hasLocalAccount)
            {
                if (ModelState.IsValid)
                {
                    // ChangePassword will throw an exception rather than return false in certain failure scenarios.
                    try
                    {
                        //changeEmailSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword);
                        UpdateEmail(model.NewEmail, WebSecurity.GetUserId(User.Identity.Name));
                    }
                    catch (Exception)
                    {
                        changeEmailSucceeded = false;
                    }

                    if (changeEmailSucceeded)
                    {
                        return(RedirectToAction("ManageEmail", new { Message = ManageMessageId.ChangeEmailSuccess }));
                    }
                    else
                    {
                        ModelState.AddModelError("", "The current email is incorrect or the new email is invalid.");
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 14
0
        public bool Disassociate(string provider, string providerUserId)
        {
            bool   success      = false;
            string ownerAccount = OAuthWebSecurity.GetUserName(provider, providerUserId);

            // Only disassociate the account if the currently logged in user is the owner
            if (ownerAccount == CurrentUser.Identity.Name)
            {
                // Use a transaction to prevent the user from deleting their last login credential
                using (var scope = new System.Transactions.TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                    IsolationLevel = IsolationLevel.Serializable
                }))
                {
                    bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(CurrentUser.Identity.Name));
                    if (hasLocalAccount || OAuthWebSecurity.GetAccountsFromUserName(CurrentUser.Identity.Name).Count > 1)
                    {
                        OAuthWebSecurity.DeleteAccount(provider, providerUserId);
                        scope.Complete();
                        success = true;
                    }
                }
            }
            return(success);
        }
Esempio n. 15
0
        public HttpResponseMessage Disassociate(DissasociateModel model)
        {
            string ownerAccount = OAuthWebSecurity.GetUserName(model.Provider, model.ProviderUserId);

            // Dissasociate account if authenticated user is the owner
            if (ownerAccount == User.Identity.Name)
            {
                // Using transaction to avoid dissasociation of the last linked account
                using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                    IsolationLevel = IsolationLevel.Serializable
                }))
                {
                    bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
                    if (hasLocalAccount || OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name).Count > 1)
                    {
                        OAuthWebSecurity.DeleteAccount(model.Provider, model.ProviderUserId);
                        scope.Complete();
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.OK, "Account succesfully dissasociated"));
            }

            throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "You are not the account owner"));
        }
Esempio n. 16
0
        //
        // GET: /Account/Manage

        public ActionResult Manage(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                                : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
                                : message == ManageMessageId.RequestOneExternalLogin ? "You must one external login or local account."
                                : "";
            ViewBag.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(MySqlWebSecurity.GetUserId(User.Identity.Name));
            ViewBag.ReturnUrl        = Url.Action("Manage");
            var model = new ChangePropertyModel
            {
                LocalPasswordModel = new LocalPasswordModel(),
                PropertyModel      = new PropertyModel(),
            };

            using (var db = SimpleMembershipTestDbContext.CreateContext())
            {
                var userProperties = db.UserProperties.SingleOrDefault(x => x.UserName == User.Identity.Name);

                if (userProperties != null)
                {
                    model.PropertyModel = new PropertyModel
                    {
                        Age       = userProperties.Age,
                        Email     = userProperties.Email,
                        Facebook  = userProperties.Facebook,
                        FirstName = userProperties.FirstName,
                        LastName  = userProperties.LastName,
                        Rate      = userProperties.Rate,
                    };
                }
            }

            return(View(model));
        }
 public bool HasLocalAccount(int userId)
 {
     return(OAuthWebSecurity.HasLocalAccount(userId));
 }
Esempio n. 18
0
        //
        // GET: /Account/Manage

        public ActionResult Manage(ManageMessageId?message)
        {
            ViewBag.StatusMessage = message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed." : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set." : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed." : ""; ViewBag.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name)); ViewBag.ReturnUrl = Url.Action("Manage"); return(View());
        }
Esempio n. 19
0
        public ActionResult ChangePassword(LocalPasswordModel model)
        {
            var hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(this.User.Identity.Name));

            this.ViewBag.HasLocalPassword = hasLocalAccount;
            this.ViewBag.ReturnUrl        = this.Url.Action("ChangePassword",
                                                            new { @in = Dev.Comm.Web.DevRequest.GetInt("in", 0) });
            if (hasLocalAccount)
            {
                if (this.ModelState.IsValid)
                {
                    // 在某些失败方案中,ChangePassword 将引发异常,而不是返回 false。
                    bool changePasswordSucceeded;
                    try
                    {
                        changePasswordSucceeded = WebSecurity.ChangePassword(this.User.Identity.Name, model.OldPassword,
                                                                             model.NewPassword);
                    }
                    catch (Exception)
                    {
                        changePasswordSucceeded = false;
                    }

                    if (changePasswordSucceeded)
                    {
                        return(this.RedirectToAction("ChangePassword",
                                                     new
                        {
                            Message = ManageMessageId.ChangePasswordSuccess,
                            @in = Dev.Comm.Web.DevRequest.GetInt("in", 0)
                        }));
                    }
                    else
                    {
                        this.ModelState.AddModelError("", "当前密码不正确或新密码无效。");
                    }
                }
            }
            else
            {
                // 用户没有本地密码,因此将删除由于缺少
                // OldPassword 字段而导致的所有验证错误
                var state = this.ModelState["OldPassword"];
                if (state != null)
                {
                    state.Errors.Clear();
                }

                if (this.ModelState.IsValid)
                {
                    try
                    {
                        WebSecurity.CreateAccount(this.User.Identity.Name, model.NewPassword);
                        return(this.RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess }));
                    }
                    catch (Exception e)
                    {
                        this.ModelState.AddModelError("", e);
                    }
                }
            }

            // 如果我们进行到这一步时某个地方出错,则重新显示表单
            return(View(model));
        }
Esempio n. 20
0
        //[ValidateAntiForgeryToken]
        public ActionResult Manage(ChangePropertyModel model)
        {
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(MySqlWebSecurity.GetUserId(User.Identity.Name));

            ViewBag.HasLocalPassword = hasLocalAccount;
            ViewBag.ReturnUrl        = Url.Action("Manage");
            if (hasLocalAccount)
            {
                if (ModelState.IsValid)
                {
                    // ChangePassword will throw an exception rather than return false in certain failure scenarios.
                    bool changePasswordSucceeded = false;

                    if (string.IsNullOrEmpty(model.LocalPasswordModel.ConfirmPassword) == true)
                    {
                        using (var db = SimpleMembershipTestDbContext.CreateContext())
                        {
                            var userProperty = db.UserProperties.SingleOrDefault(x => x.UserName == User.Identity.Name);

                            if (userProperty == null)
                            {
                                var userId = MySqlWebSecurity.GetUserId(User.Identity.Name);

                                userProperty = new UserProperty
                                {
                                    UserId   = userId,
                                    UserName = User.Identity.Name,
                                };
                                db.UserProperties.Add(userProperty);
                            }

                            userProperty.Age       = model.PropertyModel.Age;
                            userProperty.Email     = model.PropertyModel.Email;
                            userProperty.Facebook  = model.PropertyModel.Facebook;
                            userProperty.FirstName = model.PropertyModel.FirstName;
                            userProperty.LastName  = model.PropertyModel.LastName;
                            userProperty.Rate      = model.PropertyModel.Rate;

                            changePasswordSucceeded = db.SaveChanges() > 0;
                        }
                    }
                    else
                    {
                        try
                        {
                            changePasswordSucceeded = MySqlWebSecurity.ChangePassword(User.Identity.Name, model.LocalPasswordModel.OldPassword, model.LocalPasswordModel.NewPassword);
                        }
                        catch (Exception)
                        {
                            changePasswordSucceeded = false;
                        }
                    }

                    if (changePasswordSucceeded == true)
                    {
                        return(RedirectToAction("Manage", new
                        {
                            Message = ManageMessageId.ChangePasswordSuccess
                        }));
                    }
                    else
                    {
                        ModelState.AddModelError("", "The current password is incorrect or the new password is invalid.");
                    }
                }
            }
            else
            {
                // User does not have a local password so remove any validation errors caused by a missing
                // OldPassword field
                ModelState state = ModelState["OldPassword"];
                if (state != null)
                {
                    state.Errors.Clear();
                }

                if (ModelState.IsValid)
                {
                    try
                    {
                        MySqlWebSecurity.CreateAccount(User.Identity.Name, model.LocalPasswordModel.NewPassword);
                        return(RedirectToAction("Manage", new
                        {
                            Message = ManageMessageId.SetPasswordSuccess
                        }));
                    }
                    catch (Exception e)
                    {
                        ModelState.AddModelError("", e);
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 21
0
 public ActionResult ChangePwd()
 {
     ViewBag.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
     ViewBag.ReturnUrl        = Url.Action("Option");
     return(View());
 }
Esempio n. 22
0
        public ActionResult Index(ChangePasswordViewModel model)
        {
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));

            //ViewBag.HasLocalPassword = hasLocalAccount;
            //ViewBag.ReturnUrl = Url.Action("Index");
            if (hasLocalAccount)
            {
                if (ModelState.IsValid)
                {
                    int         userID = WebSecurity.CurrentUserId;
                    UserProfile user   = repository.Users.FirstOrDefault(u => u.UserId == userID);
                    if (user != null && user.CreatedByUser != null)
                    {
                        throw new HttpException(401, "Unauthorised");
                    }

                    // ChangePassword will throw an exception rather than return false in certain failure scenarios.
                    bool changePasswordSucceeded;
                    try
                    {
                        changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword);
                    }
                    catch (Exception)
                    {
                        changePasswordSucceeded = false;
                    }

                    if (changePasswordSucceeded)
                    {
                        logger.Info("User " + WebSecurity.GetUserId(User.Identity.Name) +
                                    " \"" + User.Identity.Name + "\" successfully change password");
                        TempData["SuccessMessage"] = "Пароль успешно изменен";
                        return(Index());
                    }
                    else
                    {
                        logger.Info("Password changing for user " + WebSecurity.GetUserId(User.Identity.Name) +
                                    " \"" + User.Identity.Name + "\" failed with error: \"" + "Текущий пароль неверен или новый пароль некорректен." + "\"");
                        ModelState.AddModelError("", "Текущий пароль неверен или новый пароль некорректен");
                    }
                }
            }
            //else
            //{
            //    // User does not have a local password so remove any validation errors caused by a missing
            //    // OldPassword field
            //    ModelState state = ModelState["OldPassword"];
            //    if (state != null)
            //    {
            //        state.Errors.Clear();
            //    }

            //    if (ModelState.IsValid)
            //    {
            //        try
            //        {
            //            WebSecurity.CreateAccount(User.Identity.Name, model.NewPassword);
            //            //return RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess });
            //        }
            //        catch (Exception e)
            //        {
            //            ModelState.AddModelError("", e);
            //        }
            //    }
            //}

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 23
0
        public ActionResult Manage(LocalPasswordModel model)
        {
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));

            ViewBag.HasLocalPassword = hasLocalAccount;
            ViewBag.ReturnUrl        = Url.Action("Manage");
            if (hasLocalAccount)
            {
                if (ModelState.IsValid)
                {
                    // ChangePassword will throw an exception rather than return false in certain failure scenarios.
                    bool changePasswordSucceeded;
                    try
                    {
                        using (var context = new UsersContext())
                        {
                            var args = new System.Data.Common.DbParameter[] { new System.Data.SqlClient.SqlParameter {
                                                                                  ParameterName = "pwd", Value = model.NewPassword
                                                                              },
                                                                              new System.Data.SqlClient.SqlParameter {
                                                                                  ParameterName = "uid", Value = User.Identity.Name
                                                                              } };
                            context.Database.ExecuteSqlCommand("Update MEMB_INFO SET memb__pwd = @pwd where memb___id=@uid", args);
                        }
                        changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword);
                    }
                    catch (Exception)
                    {
                        changePasswordSucceeded = false;
                    }

                    if (changePasswordSucceeded)
                    {
                        return(RedirectToAction("Manage", new { Message = ManageMessageId.ChangePasswordSuccess }));
                    }
                    else
                    {
                        ModelState.AddModelError("", "The current password is incorrect or the new password is invalid.");
                    }
                }
            }
            else
            {
                // User does not have a local password so remove any validation errors caused by a missing
                // OldPassword field
                ModelState state = ModelState["OldPassword"];
                if (state != null)
                {
                    state.Errors.Clear();
                }

                if (ModelState.IsValid)
                {
                    try
                    {
                        WebSecurity.CreateAccount(User.Identity.Name, model.NewPassword);
                        return(RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess }));
                    }
                    catch (Exception)
                    {
                        ModelState.AddModelError("", String.Format("Unable to create local account. An account with the name \"{0}\" may already exist.", User.Identity.Name));
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 24
0
        public virtual ActionResult Manage(LocalPasswordModel model)
        {
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));

            ViewBag.HasLocalPassword = hasLocalAccount;
            ViewBag.ReturnUrl        = Url.Action("Manage");
            if (hasLocalAccount)
            {
                if (ModelState.IsValid)
                {
                    // ChangePassword will throw an exception rather than return false in certain failure scenarios.
                    bool changePasswordSucceeded;
                    try
                    {
                        changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword,
                                                                             model.NewPassword);
                    }
                    catch (Exception)
                    {
                        changePasswordSucceeded = false;
                    }

                    if (changePasswordSucceeded)
                    {
                        return(RedirectToAction("Manage", new { Message = ManageMessageId.ChangePasswordSuccess }));
                    }
                    else
                    {
                        ModelState.AddModelError("", "The current password is incorrect or the new password is invalid.");
                    }
                }
            }
            else
            {
                // User does not have a local password so remove any validation errors caused by a missing
                // OldPassword field
                ModelState state = ModelState["OldPassword"];
                if (state != null)
                {
                    state.Errors.Clear();
                }

                if (ModelState.IsValid)
                {
                    try
                    {
                        WebSecurity.CreateAccount(User.Identity.Name, model.NewPassword);
                        return(RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess }));
                    }
                    catch (Exception)
                    {
                        ModelState.AddModelError("",
                                                 String.Format(
                                                     "Unable to create local account. An account with the name \"{0}\" may already exist.",
                                                     User.Identity.Name));
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 25
0
 /// <summary>
 /// Construct viewmodel
 /// </summary>
 /// <param name="user">User that this viewmodel represents</param>
 public UserViewModel(Model.User user) : this()
 {
     this.UserId          = user.UserId;
     this.Email           = user.Email;
     this.HasLocalAccount = OAuthWebSecurity.HasLocalAccount(user.UserId);
 }
Esempio n. 26
0
 /// <summary>
 /// Determines whether [the specified user identifier] [has local account].
 /// </summary>
 /// <param name="userId">The user identifier.</param>
 /// <returns><c>true</c> if [the specified user identifier] [has local account]; otherwise, <c>false</c>.</returns>
 public bool HasLocalAccount(string userId)
 {
     return(OAuthWebSecurity.HasLocalAccount(Int32.Parse(userId)));
 }
Esempio n. 27
0
 public bool HasLocalAccount()
 {
     return(OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name)));
 }
Esempio n. 28
0
        public ActionResult Manage(LocalPasswordModel model)
        {
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));

            ViewBag.HasLocalPassword = hasLocalAccount;
            ViewBag.ReturnUrl        = Url.Action("Manage");
            if (hasLocalAccount)
            {
                if (ModelState.IsValid)
                {
                    // ChangePassword va lever une exception plutôt que de renvoyer la valeur False dans certains scénarios de défaillance.
                    bool changePasswordSucceeded;
                    try
                    {
                        changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword);
                    }
                    catch (Exception)
                    {
                        changePasswordSucceeded = false;
                    }

                    if (changePasswordSucceeded)
                    {
                        return(RedirectToAction("Manage", new { Message = ManageMessageId.ChangePasswordSuccess }));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Le mot de passe actuel est incorrect ou le nouveau mot de passe n'est pas valide.");
                    }
                }
            }
            else
            {
                // L’utilisateur n’a pas de mot de passe local. Veuillez donc supprimer les erreurs de validation provoquées par un
                // champ OldPassword manquant
                ModelState state = ModelState["OldPassword"];
                if (state != null)
                {
                    state.Errors.Clear();
                }

                if (ModelState.IsValid)
                {
                    try
                    {
                        WebSecurity.CreateAccount(User.Identity.Name, model.NewPassword);
                        return(RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess }));
                    }
                    catch (Exception e)
                    {
                        ModelState.AddModelError("", e);
                    }
                }
            }

            // Si nous sommes arrivés là, quelque chose a échoué, réafficher le formulaire
            if (!Request.IsAjaxRequest())
            {
                return(View(model));
            }
            else
            {
                return(PartialView("_Manage", model));
            }
        }
Esempio n. 29
0
        public ActionResult Manage(LocalPasswordModel model)
        {
            bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));

            ViewBag.HasLocalPassword = hasLocalAccount;
            ViewBag.ReturnUrl        = Url.Action("Manage");
            if (hasLocalAccount)
            {
                if (ModelState.IsValid)
                {
                    // ChangePassword iniciará una excepción en lugar de devolver false en determinados escenarios de error.
                    bool changePasswordSucceeded;
                    try
                    {
                        changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword);
                        UsuarioCEN u   = new UsuarioCEN();
                        UsuarioEN  uEN = u.UsuarioPorEmail(User.Identity.Name)[0];
                        u.Modify(uEN.Id, uEN.Email, uEN.Nombre, model.NewPassword, uEN.Fecha_nac, uEN.Telefono, uEN.FechaRegistro);
                    }
                    catch (Exception)
                    {
                        changePasswordSucceeded = false;
                    }

                    if (changePasswordSucceeded)
                    {
                        return(RedirectToAction("Perfil", "Account"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "La contraseña actual es incorrecta o la nueva contraseña no es válida.");
                    }
                }
            }
            else
            {
                // El usuario no dispone de contraseña local, por lo que debe quitar todos los errores de validación generados por un
                // campo OldPassword
                ModelState state = ModelState["OldPassword"];
                if (state != null)
                {
                    state.Errors.Clear();
                }

                if (ModelState.IsValid)
                {
                    try
                    {
                        WebSecurity.CreateAccount(User.Identity.Name, model.NewPassword);
                        return(RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess }));
                    }
                    catch (Exception)
                    {
                        ModelState.AddModelError("", String.Format("No se puede crear una cuenta local. Es posible que ya exista una cuenta con el nombre \"{0}\".", User.Identity.Name));
                    }
                }
            }

            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            return(View(model));
        }