Пример #1
0
        public ActionResult CreateUser(String mailAccount1, String password1, Boolean isMainAccount1,
                                       String mailAccount2, String password2, Boolean isMainAccount2,
                                       String mailAccount3, String password3, Boolean isMainAccount3,
                                       String username, String userPassword, String userConfirmationPassword,
                                       String firstname, String lastname)
        {
            IList <MailAccount> mailAccounts;
            String       exceptionMessage = "";
            ISession     session          = NHibernateManager.OpenSession();
            ITransaction tran             = session.BeginTransaction();

            try
            {
                #region Initialize UserView
                MailAccountViewModel        mailAccountView1 = new MailAccountViewModel();
                MailAccountViewModel        mailAccountView2 = new MailAccountViewModel();
                MailAccountViewModel        mailAccountView3 = new MailAccountViewModel();
                List <MailAccountViewModel> mailAccountsView = new List <MailAccountViewModel>();
                UserViewModel userView = new UserViewModel();

                mailAccountView1.Address       = mailAccount1;
                mailAccountView1.Password      = password1;
                mailAccountView1.IsMainAccount = isMainAccount1;

                mailAccountView2.Address       = mailAccount2;
                mailAccountView2.Password      = password2;
                mailAccountView2.IsMainAccount = isMainAccount2;

                mailAccountView3.Address       = mailAccount3;
                mailAccountView3.Password      = password3;
                mailAccountView3.IsMainAccount = isMainAccount3;

                mailAccountsView.Add(mailAccountView1);
                mailAccountsView.Add(mailAccountView2);
                mailAccountsView.Add(mailAccountView3);

                userView.Username             = username;
                userView.Password             = userPassword;
                userView.ConfirmationPassword = userConfirmationPassword;
                userView.Firstname            = firstname;
                userView.Lastname             = lastname;
                userView.ListMailAccounts     = mailAccountsView;
                userView.FilterInvalidAccounts();
                #endregion

                this.UpdateModel(userView);                                            //corre todos los regex
                this.ValidateUserGenericFields(userView, session);                     //usuarioGlimpse y contraseñas de usuario
                mailAccounts = this.ValidateUserMailAccounts(userView, null, session); //direcciones de correo y contraseñas

                String cipherPassword = CryptoHelper.EncryptDefaultKey(userView);

                User newUser = new User(userView.Username, cipherPassword, userView.Firstname, userView.Lastname);
                newUser.SaveOrUpdate(session);

                foreach (MailAccount mailAccount in mailAccounts)
                {
                    mailAccount.SetUser(newUser);
                    mailAccount.SetOldestMailDate();
                    mailAccount.Activate(session); //saveOrUpdate adentro
                    mailAccount.UpdateLabels(session);
                    newUser.AddAccount(mailAccount);
                }

                tran.Commit();
                Session[AccountController.USER_NAME] = newUser;
                new CookieHelper().AddUsernameCookie(newUser.Entity.Username);
                FormsAuthentication.SetAuthCookie(newUser.Entity.Username, true);

                try
                {
                    Sender.SendGreetingsPassword(newUser, newUser.mailAccounts.Single(x => x.Entity.IsMainAccount).Entity.Address);
                }
                catch (Exception exc) { Log.LogException(exc); } //que no corte la ejecucion

                return(Json(new { success = true, url = Url.Action("Index", "Home") }, JsonRequestBehavior.AllowGet));
            }
            catch (InvalidOperationException exc) //model state invalido
            {
                tran.Rollback();
                foreach (ModelState wrongState in this.ModelState.Values.Where(x => x.Errors.Count > 0))
                {
                    foreach (ModelError error in wrongState.Errors)
                    {
                        exceptionMessage += error.ErrorMessage;
                    }
                }
                if (String.IsNullOrEmpty(exceptionMessage))
                {
                    exceptionMessage = exc.Message;
                }
                return(Json(new { success = false, message = exceptionMessage }, JsonRequestBehavior.AllowGet));
            }
            catch (GlimpseException exc)
            {
                tran.Rollback();
                return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception exc)
            {
                tran.Rollback();
                Log.LogException(exc);
                return(Json(new { success = false, message = "Error creando usuario." }, JsonRequestBehavior.AllowGet));
            }
            finally
            {
                session.Close();
            }
        }
Пример #2
0
        public ActionResult EditUserAccounts(String mailAccount1, String password1, Boolean isMainAccount1,
                                             String mailAccount2, String password2, Boolean isMainAccount2,
                                             String mailAccount3, String password3, Boolean isMainAccount3)
        {
            ISession     session = NHibernateManager.OpenSession();
            ITransaction tran    = session.BeginTransaction();

            try
            {
                User sessionUser = (User)Session[AccountController.USER_NAME];
                if (sessionUser == null)
                {
                    throw new GlimpseException("No se encontró el usuario.");
                }

                #region Initialize UserView
                MailAccountViewModel        mailAccountView1 = new MailAccountViewModel();
                MailAccountViewModel        mailAccountView2 = new MailAccountViewModel();
                MailAccountViewModel        mailAccountView3 = new MailAccountViewModel();
                UserViewModel               userView         = new UserViewModel();
                List <MailAccountViewModel> mailAccountsView = new List <MailAccountViewModel>();

                mailAccountView1.Address       = mailAccount1;
                mailAccountView1.Password      = password1;
                mailAccountView1.IsMainAccount = isMainAccount1;

                mailAccountView2.Address       = mailAccount2;
                mailAccountView2.Password      = password2;
                mailAccountView2.IsMainAccount = isMainAccount2;

                mailAccountView3.Address       = mailAccount3;
                mailAccountView3.Password      = password3;
                mailAccountView3.IsMainAccount = isMainAccount3;

                mailAccountsView.Add(mailAccountView1);
                mailAccountsView.Add(mailAccountView2);
                mailAccountsView.Add(mailAccountView3);

                userView.Username         = sessionUser.Entity.Username;
                userView.ListMailAccounts = mailAccountsView;
                userView.FilterInvalidAccounts();
                #endregion

                this.ValidateUserMailAccounts(userView, sessionUser, session); //direcciones de correo y contraseñas

                List <MailAccount> removedMailAccounts = new List <MailAccount>();
                foreach (MailAccount removedMailAccount in sessionUser.mailAccounts
                         .Where(x => !userView.ListMailAccounts.Any(c => c.Address == x.Entity.Address)))
                {
                    removedMailAccount.Disconnect();
                    removedMailAccount.Deactivate(session); //saveOrUpdate adentro
                    removedMailAccounts.Add(removedMailAccount);
                }

                foreach (MailAccount removedMailAccount in removedMailAccounts)
                {
                    sessionUser.mailAccounts.Remove(removedMailAccount);
                }

                foreach (MailAccountViewModel mailAccountView in userView.ListMailAccounts)
                {
                    if (sessionUser.mailAccounts.Any(x => x.Entity.Address == mailAccountView.Address)) //si la cuenta ya existia
                    {
                        MailAccount editedMailAccount = sessionUser.mailAccounts.Single(x => x.Entity.Address == mailAccountView.Address);
                        if (!String.IsNullOrEmpty(mailAccountView.Password))
                        {
                            editedMailAccount.Entity.Password = CryptoHelper.EncryptDefaultKey(mailAccountView);
                        }
                        editedMailAccount.SetUser(sessionUser);
                        editedMailAccount.ConnectLight();
                        if (mailAccountView.IsMainAccount)
                        {
                            editedMailAccount.SetAsMainAccount(true);
                        }
                        else
                        {
                            editedMailAccount.SetAsMainAccount(false);
                        }
                        editedMailAccount.Activate(session); //saveOrUpdate adentro
                    }
                    else //si la cuenta es nueva
                    {
                        MailAccount newMailAccount = new MailAccount(mailAccountView.Address, CryptoHelper.EncryptDefaultKey(mailAccountView.Password));
                        newMailAccount.SetUser(sessionUser);
                        if (mailAccountView.IsMainAccount)
                        {
                            newMailAccount.SetAsMainAccount(true);
                        }
                        else
                        {
                            newMailAccount.SetAsMainAccount(false);
                        }
                        newMailAccount.SetOldestMailDate();
                        newMailAccount.Activate(session); //saveOrUpdate adentro
                        newMailAccount.ConnectFull(session);
                        sessionUser.AddAccount(newMailAccount);
                    }
                }

                tran.Commit();
                Session[AccountController.USER_NAME] = sessionUser;

                return(Json(new { success = true, url = Url.Action("Index", "Home") }, JsonRequestBehavior.AllowGet));
            }
            catch (GlimpseException exc)
            {
                tran.Rollback();
                return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception exc)
            {
                tran.Rollback();
                Log.LogException(exc, "Parametros: viewAccountName1:(" + mailAccount1 + "), viewAccountPass1( " + password1 +
                                 "), viewAccountCheck1(" + isMainAccount1 + "), viewAccountName2(" + mailAccount2 +
                                 "), viewAccountPass1(" + password1 + "), viewAccountCheck2(" + isMainAccount2 +
                                 "),  viewAccountName3:(" + mailAccount3 + "), viewAccountPass3( " + password3 +
                                 "), viewAccountCheck3(" + isMainAccount3 + ").");
                return(Json(new { success = false, message = "Error modificando usuario." }, JsonRequestBehavior.AllowGet));
            }
            finally
            {
                session.Close();
            }
        }
Пример #3
0
 public static String EncryptDefaultKey(MailAccountViewModel mailAccount)
 {
     return(EncryptStringAES(mailAccount.Password, "PasswordDefault1234"));
 }