예제 #1
0
        protected void RestoreSession()
        {
            string value = "";

            try
            {
                value = this.Request.Cookies[IN_SESSION_COOKIE_NAME];
            }
            catch (KeyNotFoundException)
            {
                value = "";
            }

            CurrentSession          = new SessionModel();
            CurrentSession["valid"] = false;

            if (String.IsNullOrEmpty(value))
            {
                // Сессия не устанвлена, т.е. пользователь не зарегистрирован
                CurrentSession.GUID = ImportFromAtlcomru.GetGUID();
                // Сделать сессии идентификатор.
                return;
            }
            try
            {
                CurrentSession = activeSessions[value];                 // По идее там будет где-то пользователь.
                object ouser = null;
                CurrentSession["valid"] = CurrentSession.TryGetValue("user", out ouser);
                // Сессия валидна, если оттуда можно вытащить пользователя.
                CurrentSession["valid"] = ouser != null;
                CurrentSession["GUID"]  = value;
                return;
            }
            catch (System.Collections.Generic.KeyNotFoundException)
            {
                // Беспонтовая сессия, нам оно не надо
                // Возвращяем невалидную сессию по умолчанию
                CurrentSession.GUID = ImportFromAtlcomru.GetGUID();
                // Пусть будет беспонтовая анонимная новая сессия.
            }
        }
예제 #2
0
        public bool Process()
        {
            MyEntityContext ctx = Application.Context;

            string nick  = request.Form.user;
            string phone = request.Form.phone;

            Console.WriteLine("---> FORM:" + nick);
            IAgent user     = ctx.Agents.Where(x => x.NickName == nick).FirstOrDefault();
            string register = request.Form["register"];

            MessageModel success = null;

            if (register != null && user != null)
            {
                return(UserBad("Пользователь уже зарегистрирован"));
            }
            else if (register == null && user == null)
            {
                return(UserBad("Пользователь не найден"));
            }
            else if (register != null && user == null)
            {
                // FIXME: Проверки правильности данных не сделаны.

                string password = request.Form.password;
                string repeat   = request.Form.repeat;

                if (password != repeat)
                {
                    return(UserBad("Пароли не совпадают"));
                }

                user              = ctx.Agents.Create();
                user.Name         = request.Form.firstname + " " + request.Form.surname + " " + request.Form.lastname;
                user.PasswordHash = BCryptHelper.HashPassword(password, SALT);
                user.Phone        = request.Form.phone;
                user.GUID         = ImportFromAtlcomru.GetGUID();
                if (request.Form.realtor == "checked")
                {
                    user.Role = RoleEnum.Agent;
                }
                else
                {
                    user.Role = RoleEnum.Buyer;
                }
                user.NickName = nick;
                user.Email    = request.Form.email;
                ctx.Add(user);
                ctx.SaveChanges();
                success = info("Теперь вы зарегистрированы в системе. Можно начинать бояться.",
                               msg: "Успешная регистрация");
            }
            else             // register == null && user != null
            {
                string password = request.Form.password;
                if (!BCryptHelper.CheckPassword(password, user.PasswordHash))
                {
                    return(UserBad("Неправильный пароль"));
                }
                success = info("Ну вот вы и вошли в систему.", msg: "Успешная идентикация");
            }
            // К этому моменту пользователь или аутентифицирован
            // или создан.
            // Установить сессию.

            // Сессии бывают двух типов
            // 1. На время одного сеанса
            // 2. Между сеансами.
            // Мы будем делать 2 из 1.
            // Т.е. в сессии типа 1 собирать (обновлять) данные
            //      зарегистрированного пользователя.

            Session          = new SessionModel(); //Создание новой сессии
            Session["valid"] = true;
            Session["user"]  = user;               // Объект пользователя в сессии
            Session.GUID     = user.GUID;          // Идентификатор сессии пользователя.

            Session["message"] = success;

            Console.WriteLine("Linux rulez!");

            // TODO: Еще надо сделать выход из сессии при разлогигивании. Но пока у нас нет такой команды.

            return(true);
        }
예제 #3
0
 public ApplicationView(ApplicationModel context, SessionModel session) : base(context)
 {
     this.session = session;
 }