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(); // Пусть будет беспонтовая анонимная новая сессия. } }
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); }
public ApplicationView(ApplicationModel context, SessionModel session) : base(context) { this.session = session; }