Ejemplo n.º 1
0
        public ActionResult Forgot(string email)
        {
            ForgotPassViewData forgot = new ForgotPassViewData();

            email = email.Trim();
            if (!CovCakeMailer.IsValidEmail(email))
            {
                ModelState.AddModelError("email", "L'adresse email est incorecte.");
            }

            IUserProfile userProfile = Data.UserDataAccess.GetUser(email);

            if (userProfile == null)
            {
                ModelState.AddModelError("email", "Aucun utilisateur avec cette adresse n'a été trouvé.");
            }

            if (ModelState.IsValid)
            {
                string infoMsgTitle = "Mot de passe réinitialisé";
                string infoMsg      = string.Format("Un email a été envoyé à {0} avec un nouveau mot de passe.", email);
                //si pas encore activé envoi de activation
                //TODO: ajouter le user dans la table UserProfile des linscription et pas ke dans le membership

                /*
                 * if (!userProfile.GetMembershipUser().IsApproved && userProfile.ActivationKey.HasValue)
                 * {
                 *   this.CovCakeMailer.SendSignupMail(userProfile, userProfile.Email, "** votre mot de passe ***");
                 *   infoMsg = string.Format("L'email d'activation de compte viens d'être réenvoyé à {0}.", email);
                 * }
                 */
                string newPass = CovCakeServices.GenerateAlphaNumPass(int.Parse(CovCakeConfiguration.DefaultPasswordLenght));
                newPass = newPass.ToLower();
                MembershipUser membershipUser = userProfile.GetMembershipUser();
                membershipUser.ChangePassword(membershipUser.ResetPassword(), newPass);
                //   IUserProfile userProfile = Data.UserDataAccess.GetUser(email);
                this.CovCakeMailer.SendForgotPasswordMail(userProfile, email, newPass);
                forgot.Email   = email;
                forgot.Succeed = true;

                return(Info(infoMsgTitle, infoMsg)); //should redirect

                //return View(forgot);
            }
            else
            {
                // forgot.Succeed = false;
                return(View(forgot));
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ak">clé d'activation shrinké</param>
        /// <param name="nm"></param>
        /// <returns></returns>
        public ActionResult SetNewMail(string ak, string nm)
        {
            string errMsg = "Impossible d'activer votre nouvelle adresse email.";

            if (ak.IsNullOrEmpty() || nm.IsNullOrEmpty())
            {
                // ViewData["ErrorMsg"] = errMsg; //"Impossible d'activer votre nouvelle adresse email";
                return(Error(errMsg));
            }

            Guid actKey = ak.ToGuid();

            nm = nm.UnShrinkForUrl();

            if (!Mailer.IsValidEmail(nm) || actKey == Guid.Empty)
            {
                return(Error(errMsg));
            }

            try
            {
                //this.ForceUserLogOut();
                nm = nm.ToLower();

                IUserProfile user = Data.UserDataAccess.GetUserByActKey(actKey);
                if (user == null)
                {
                    return(Error(errMsg));
                }

                //Test si l'email est déjà utilisé
                IUserProfile testMailUser = Data.UserDataAccess.GetUserByMail(nm);
                if (testMailUser != null && testMailUser.UserId != user.UserId)
                {
                    string errMsg2 = nm + ", Cette adresse email est déjà utilisée.";
                    return(Error(errMsg2));
                }
                testMailUser = null;

                MembershipUser membershipUser = user.GetMembershipUser();
                membershipUser.Email = nm;
                Membership.UpdateUser(membershipUser);

                //user.Email = nm;
                user.UserName      = nm;   //modifie aussi le userName dans membership
                user.ActivationKey = null; //on efface le ActivationKey
                //Data.UserDataAccess.Save();// save du username


                Data.CovCakeDataContext.SubmitChanges(ConflictMode.ContinueOnConflict);


                //   if (this.CurrentUserId == user.UserId)

                this.CovCakeMailer.SendChangeEmailConfirmation(user, nm);
                this.ForceUserLogIn(user.UserId); //log l'utilisateur de force
            }
            catch (ChangeConflictException e)
            {
                var db = Data.CovCakeDataContext;

                CovCake.Log.Info(e.Message);
                foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                {
                    //No database values are merged into current.
                    occ.Resolve(RefreshMode.KeepCurrentValues);
                }

                /*
                 *
                 * CovCake.Log.Info("Optimistic concurrency error.");
                 * CovCake.Log.Info(e.Message);
                 *
                 * foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                 * {
                 *  MetaTable metatable = db.Mapping.GetTable(occ.Object.GetType());
                 *  //cov_UserProfile entityInConflict = (Customer)occ.Object;
                 *  CovCake.Log.Info(String.Format("Table name: {0}", metatable.TableName));
                 * CovCake.Log.Info( String.Format("Customer ID: "));
                 * // Console.WriteLine(entityInConflict.CustomerID);
                 *  foreach (MemberChangeConflict mcc in occ.MemberConflicts)
                 *  {
                 *      object currVal = mcc.CurrentValue;
                 *      object origVal = mcc.OriginalValue;
                 *      object databaseVal = mcc.DatabaseValue;
                 *      MemberInfo mi = mcc.Member;
                 *      CovCake.Log.Info( String.Format("Member: {0}", mi.Name));
                 *     CovCake.Log.Info(  String.Format("current value: {0}", currVal));
                 *     CovCake.Log.Info( String.Format("original value: {0}", origVal));
                 *     CovCake.Log.Info( String.Format("database value: {0}", databaseVal));
                 *  }
                 * }*/
            }
            catch (Exception ex)
            {
                CovCake.Log.Error(ex.Message, ex);
                return(Error(errMsg));
            }



            this.ValidStateMessages.Add("Votre Adresse email a bien été changée!");
            TempData["ViewInfos"] = this.ValidStateMessages;
            return(RedirectToRoute(CovCake.Routes.MONCOMPTE));// RedirectToAction("MonCompte", "User");//MonCompte(null, null, null, null);
        }