public ActionResult MesConversions() { int UserId = CookieUtil.GetUserId(this); if (UserId == 0) { return(RedirectToAction("Index", "Home")); } var commandes = new TASK_Service().GetListCommandesViewModel(UserId); return(View("ListCommandes", commandes)); }
private HtmlAgilityPack.HtmlNode FeatureData(string url) { string cookieData = CookieUtil.GetCookies(ConfigManager.GetRootUrl()); string reponseTaskHtml = SpiderUtil.GetHtml(url, cookieData, string.Empty); HADocument hadoc = new HADocument(); hadoc.LoadHtml(reponseTaskHtml); HtmlAgilityPack.HtmlNode htmlNode = hadoc.DocumentNode; return(htmlNode); }
public ActionResult Panier() { int UserId = CookieUtil.GetUserId(this); if (UserId == 0) { return(RedirectToAction("Index", "Home")); } var panier = new TASK_Service().GetPanierViewModel(UserId); return(View("Panier", panier)); }
/// <summary> /// 绑定粉丝 /// </summary> /// <param name="referrerSysNo">推荐编号</param> /// <returns>视图</returns> public ActionResult BindFans(int referrerSysNo) { var customer = CustomerApp.Instance.Get(referrerSysNo); if (customer == null) { return(View("Error", new JResult() { Message = "信息参数不合法" })); } var openId = CookieUtil.Get("OpenId"); var headImgUrl = CookieUtil.Get("HeadImgUrl"); var nickname = CookieUtil.Get("Nickname"); var customerExt = CustomerApp.Instance.GetByOpenId(openId); if (customerExt != null) { return(View("Error", new JResult() { Message = "用户微信账号已注册" })); } var recommend = RecommendApp.Instance.GetByopenId(openId); if (recommend != null) { return(Redirect("/Account/Register")); } var result = RecommendApp.Instance.Insert(new CrRecommend() { Openid = openId, ReferrerSysNo = referrerSysNo, //Nickname = nickname, //HeadImgUrl = headImgUrl }); if (!result.Status) { return(View("Error", new JResult() { Message = "绑定粉丝失败" })); } return(Redirect("/Account/Register")); }
/// <summary> /// OAuthScope.snsapi_userinfo方式回调 /// </summary> /// <param name="code"></param> /// <param name="state"></param> /// <returns>视图</returns> public ActionResult Index(string code, string state) { Log4Helper.WriteInfoLog("账号:" + code, "Oauth2"); if (string.IsNullOrEmpty(code)) { return(Content("您拒绝了授权!")); } if (string.IsNullOrEmpty(state)) { return(Content("验证失败!请从正规途径进入!")); } var result = OAuthApi.GetAccessToken(appKey, appSecret, code); if (result.errcode != ReturnCode.请求成功) { return(Content("错误:" + result.errmsg)); } try { //因为这里还不确定用户是否关注本微信,所以只能试探性地获取一下 var userInfo = OAuthApi.GetUserInfo(result.access_token, result.openid); if (userInfo != null) { //用户信息 var openId = userInfo.openid; var nickname = userInfo.nickname; var headimgurl = userInfo.headimgurl; //保存用户信息 CookieUtil.SetCookie("OpenId", openId); CookieUtil.SetCookie("HeadImgUrl", headimgurl); CookieUtil.SetCookie("Nickname", nickname); Log4Helper.WriteInfoLog(string.Format("OpenId:{0}", userInfo.ToJson2()), "Login"); var url = "http://app.1000n.com/me/vip"; return(Redirect(url)); } else { return(Content("用户已授权,获取UserInfo失败")); } } catch (ErrorJsonResultException ex) { return(Content("用户已授权,授权Token:" + result)); } }
/// <summary> /// 设置当前用户ID /// </summary> /// <param name="userID"></param> public static void SetCurrentUserID(int userID) { if (userID <= 0) { return; } ExceptionUtil.LogException(() => { var encodeString = DESProviderUtil.Encode(userID.ToString(), GetCurrentUserSignKey); CookieUtil.SetCookie(_CurrentUserID_Key, encodeString); string cookieSign = (encodeString + GetCurrentUserCookieSignKey).ToMd5(); CookieUtil.SetCookie(_CurrentUserCookieSign_Key, cookieSign); }, memberName: "PublicUtil-SetCurrentUserID"); }
public ActionResult AddConversion() { int UserId = CookieUtil.GetUserId(this); if (UserId == 0) { CreateTaskViewModel model = new TASK_Service().InitCreateTaskViewModelFromAnonymous(); return(View(model)); } { CreateTaskViewModel model = new TASK_Service().InitCreateTaskViewModel(UserId); return(View(model)); } }
public IActionResult Index(string id, [FromQuery] bool nohead, [FromQuery] bool needback, AircraftDetailModel model) { model.Title = id; model.TableId = id; model.api = "/api/aircraftwithhistory/" + id; model.IsDetail = true; model.NoHead = nohead; model.IsAdmin = CookieUtil.IsAdmin(HttpContext); model.Reg = id; model.NeedBack = needback; model.AV = _context.AircraftView.AsNoTracking().Where(av => av.RegistrationNumber == id).FirstOrDefault(); model.OgImageUrl = (model.AV?.PhotoDirectUrl != null) ? $"https://cdn.jetphotos.com/full{model.AV?.PhotoDirectUrl}" : "https://ja-fleet.noobow.me/images/JA-Fleet_1_og.png"; if (model.AV == null) { //存在しないレジが指定された場合はNotFound return(NotFound()); } if (!nohead) { model.AirlineGroupNmae = _context.AirlineGroup.AsNoTracking().Where(ag => ag.AirlineGroupCode == model.AV.AirlineGroupCode).FirstOrDefault()?.AirlineGroupName; } //非同期でCookieは取得できなくなるので退避 bool isAdmin = CookieUtil.IsAdmin(HttpContext); //ログは非同期で書き込み Task.Run(() => { using (var serviceScope = _services.CreateScope()) { using (var context = serviceScope.ServiceProvider.GetService <jafleetContext>()) { Log log = new Log { LogDate = DateTime.Now, LogType = LogType.DETAIL, LogDetail = id, UserId = isAdmin.ToString(), }; context.Log.Add(log); context.SaveChanges(); } } }); return(View("~/Views/AircraftDetail/index.cshtml", model)); }
private void HandleCookie(CookieCollection cookieCollection) { if (cookieCollection == null) { return; } string userToken = CookieUtil.GetCookieValue(cookieCollection, "_tk", false); string webToken = CookieUtil.GetCookieValue(cookieCollection, "_wtk", false); if (userToken != null) { AddCookie(userToken, webToken); } }
public override void OnActionExecuted(ActionExecutedContext context) { if (context.Filters.Any(item => item is IAllowAnonymousFilter)) { base.OnActionExecuted(context); return; } var action = context.ActionDescriptor as ControllerActionDescriptor; if (!context.HttpContext.IsAjaxRequest() && !action.ActionName.Equals("Index", StringComparison.OrdinalIgnoreCase) && !action.ControllerName.Equals("webapi", StringComparison.OrdinalIgnoreCase)) { CookieUtil.AppendCookie(Constants.LAST_LOGIN_PATH, HttpContext.Request.Path); } base.OnActionExecuted(context); }
private void HandleCookie(string cookieString) { if (cookieString == null) { return; } string userToken = CookieUtil.GetCookieValue(cookieString, "_tk", false); string webToken = CookieUtil.GetCookieValue(cookieString, "_wtk", false); if (userToken != null) { AddCookie(userToken, webToken); } }
public void CookieHeaderToDictionaryDuplicateKeys() { // cookie with duplicate keys and whitespace separator instead of ; // this cookie is not valid according to the standard, but it occurs in Jackett because we are concatenating // cookies in many parts of the code (and we are not doing it well). this is safe because the whitespace // can't be part of the key nor the value. var cookieHeader = "__cfduid=d6237f041586694295; __cf_bm=TlOng/xyqckk-TMen38z+0RFYA7YA= __cf_bm=test"; var expectedCookieDictionary = new Dictionary <string, string> { { "__cfduid", "d6237f041586694295" }, { "__cf_bm", "test" } // we always assume the latest value is the most recent }; CollectionAssert.AreEqual(expectedCookieDictionary, CookieUtil.CookieHeaderToDictionary(cookieHeader)); }
public override void OnAuthorization(AuthorizationContext filterContext) { if (!filterContext.ActionDescriptor.GetCustomAttributes(typeof(AllowAnonymousAttribute), true).Any()) { if (!string.IsNullOrEmpty(CookieUtil.GetCookie(GlobalVar.CookieName))) { var userId = CookieUtil.GetCookie <int>(GlobalVar.CookieName, GlobalVar.UserId); var userName = CookieUtil.GetCookie(GlobalVar.CookieName, GlobalVar.UserName); var level = CookieUtil.GetCookie <int>(GlobalVar.CookieName, GlobalVar.Level); var token = CookieUtil.GetCookie(GlobalVar.CookieName, GlobalVar.AuthToken); if (userId > 0 && !string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(token)) { var userKey = CacheKey.GetUserKey(userId); var cacheClient = DependencyResolver.Current.GetService <ICache>(); var userInfo = cacheClient.Get <UserInfo>(userKey); var expiresAt = DateTime.Now.AddMinutes(cacheMinute); if (userInfo != null && userInfo.UserName == userName && userInfo.Token == token && cacheClient.ExpireAt(userKey, expiresAt)) { var values = filterContext.RouteData.Values; var url = string.Format("/{0}/{1}", values["controller"] as string, values["action"] as string); if (level >= GlobalVar.MaxLevel || pubUrls.Any(a => string.Equals(a, url, StringComparison.CurrentCultureIgnoreCase)) || userInfo.Urls.Any(a => string.Equals(a, url, StringComparison.CurrentCultureIgnoreCase))) { return; } } } } if (filterContext.HttpContext.Request.HttpMethod == "GET") { filterContext.Result = new ContentResult() { Content = string.Format("<script>window.location='{0}';</script>", UrlVar.User_SignIn), ContentType = "text/html; charset=utf-8" }; } else { var mes = GrainManage.Message.CacheMessage.Get <StatusCode>(s => s.IdentityFailed); filterContext.Result = new NewtonsoftJsonResult { Data = new BaseOutput { code = mes.Code, msg = mes.Description, data = UrlVar.User_SignIn } }; } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (CookieUtil.GetCookie("tUserCookie") != "") { txtUser.Text = CookieUtil.GetCookie("tUserCookie"); } CookieUtil.UpdateCookie(loginnameCookie, ""); CookieUtil.UpdateCookie(loginidCookie, ""); CookieUtil.RemoveCookie(loginnameCookie); CookieUtil.RemoveCookie(loginidCookie); } InitLanguage(); }
public IActionResult Index() { if (User.Identity.IsAuthenticated) { string path = HttpContext.Request.Query["from"]; if (string.IsNullOrEmpty(path)) { path = CookieUtil.GetCookie(Constants.LAST_LOGIN_PATH); } if (!string.IsNullOrEmpty(path) && path != "/") { return(Redirect(System.Web.HttpUtility.UrlDecode(path))); } } return(View()); }
public ActionResult goOrder() { GoOrder goOrder = new GoOrder(); JavaScriptSerializer jss = new JavaScriptSerializer(); string car = CookieUtil.GetCookie("ShoppingCartObj"); ShopCarVM carList = jss.Deserialize <ShopCarVM>(car); if (carList != null) { ProductBll bll = new ProductBll(); List <CarProductDetail> list = new List <CarProductDetail>(); foreach (var item in carList.List) { CarProductDetail m; int i = -1; if (int.TryParse(item.Attrs, out i)) { m = bll.GetProDetail(item.ID, i, item.Type); } else { m = bll.GetProDetail(item.ID, -1, item.Type); } if (m != null) { m.Qty = int.Parse(item.Qty); m.lastAttr = item.Attrs; list.Add(m); } } //car list goOrder.carProList = list; //会员等级 string uid = Session["memberID"].ToString(); MemberLevelBLL memLeveBll = new MemberLevelBLL(); DAO.MemberLevel memLevel = memLeveBll.GetLeveByUid(uid); goOrder.userLevel = memLevel; // return(View(goOrder)); } else { return(RedirectToAction("index", "Car")); } }
/// <summary> /// [Cookie]获取产品浏览记录(cookie中获取) /// </summary> /// <param name="count">浏览记录总数</param> /// <returns>浏览记录集合</returns> /// <remarks> /// 2013-03-18 吴文强 创建 /// 2013-08-08 邵 斌 迁移 /// </remarks> public List <string> GetHistoryLook(int count) { //历史产品 var hostory = CookieUtil.Get(COOKIE_HISTORYLOOK); var listHostory = hostory.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); //倒序浏览记录 var newHostory = new List <string>(); for (int i = listHostory.Count - 1; i >= 0; i--) { if (newHostory.Count == count) { break; } newHostory.Add(listHostory[i]); } return(newHostory); }
public ActionResult SignOut() { CookieUtil.DeleteCookie(GlobalVar.CookieName); var repo = GetRepo <User>(); var account = repo.GetFiltered(f => f.Id == UserId, true).First(); account.ModifiedAt = DateTime.Now; repo.UnitOfWork.SaveChanges(); Resolve <ICache>().Remove(CacheKey.GetUserKey(UserId)); if (IsGetRequest) { return(RedirectToAction("SignIn")); } var result = new BaseOutput(); SetResponse(s => s.Success, null, result); return(JsonNet(result)); }
public ActionResult Create(UserViewModel userViewModel) { if (ModelState.IsValid) { var user = new User { Name = userViewModel.Name, LastName = userViewModel.LastName, Email = userViewModel.Email, Password = userViewModel.Password }; var mainContext = new Context() { UserId = user.Id, IsMainContext = true, Name = string.Empty, CountryId = 1, CurrencyTypeId = 1 }; user.AddNewContext(mainContext); _userService.Add(user); // Login into plataform - bacause of the Autorization (attribute) CookieUtil.SetAuthCookie(user.Id, user.Name, user.GetTheMainContextId()); // Context - redirect (for update the main context) var contextViewModel = new ContextViewModel(); contextViewModel.Id = mainContext.Id; contextViewModel.IsMainContext = true; contextViewModel.UserId = user.Id; contextViewModel.CountryId = 1; contextViewModel.CurrencyTypeId = 1; return(RedirectToAction("CreateFirstContext", "Context", contextViewModel)); } else { SendModelStateErrors(); return(View(userViewModel)); } }
/// <summary> /// 获取当前用户ID /// </summary> /// <returns></returns> public static int GetCurrentUserID() { return(ExceptionUtil.LogException(() => { string sign = CookieUtil.GetCookie(_CurrentUserCookieSign_Key); string userStr = CookieUtil.GetCookie(_CurrentUserID_Key); if (sign.IsNullOrEmptyWhiteSpace() || userStr.IsNullOrEmptyWhiteSpace()) { return -99; } var decodeString = DESProviderUtil.Decode(userStr, GetCurrentUserSignKey); string checkSign = (userStr + GetCurrentUserCookieSignKey).ToMd5(); if (sign.Equals(checkSign)) { return decodeString.ToSafeInt32(-99); } return -99; }, memberName: "PublicUtil-GetCurrentUserID")); }
/// <summary> /// 登陆 /// </summary> /// <returns></returns> public ActionResult Login() { if (User.Identity.IsAuthenticated) { //return RedirectToAction("Index", "Home"); } var model = new LogOnModel { UserName = HttpUtility.UrlDecode(CookieUtil.GetCookie(AppConst.LoginUserNameCookieName)), Password = HttpUtility.UrlDecode(CookieUtil.GetCookie(AppConst.LoginUserCookiePwd)), }; if (!string.IsNullOrEmpty(model.Password)) { model.Password = DESHelper.ToDESDecrypt(model.Password, AppConst.EncryptKey); model.RememberMe = true; } return(View(model)); }
public FileContentResult Code(int type) { string code = CodeUtil.GetSingleObj().CreateVerifyCode(CodeUtil.VerifyCodeType.MixVerifyCode, 6); //LogUtil.Info($"生成6位验证码:{code}"); bool isAddLines = false; if (type == 1) { isAddLines = true; } var bitmap = CodeUtil.GetSingleObj().CreateBitmapByImgVerifyCode(code, 100, 40, isAddLines); code = EncryptUtil.EncryptDES(code, AprilConfig.SecurityKey); CookieUtil.AddString("code", code, 5); MemoryStream stream = new MemoryStream(); bitmap.Save(stream, ImageFormat.Gif); return(File(stream.ToArray(), "image/gif")); }
public Hashtable GetCartHash() { //get cart string; //build cart hash; //增加期望订购数量,ProductSysNo1,Quantity1,ExpectQty1;ProductSysNo2,Quantity2,ExpectQty2 Hashtable ht = new Hashtable(5); string cartCookieValue = CookieUtil.GetDESEncryptedCookieValue("cart"); if (cartCookieValue == null) { return(ht); } string[] cartItems = cartCookieValue.Split(';'); try { for (int i = 0; i < cartItems.Length; i++) { string cartItem = cartItems[i]; string[] cartValues = cartItem.Split(','); CartInfo oCart = new CartInfo(); oCart.ProductSysNo = Convert.ToInt32(cartValues[0]); oCart.Quantity = Convert.ToInt32(cartValues[1]); if (cartValues.Length > 2) { oCart.ExpectQty = Convert.ToInt32(cartValues[2]); } else { oCart.ExpectQty = Convert.ToInt32(cartValues[1]); } if (oCart.Quantity > 99) { oCart.Quantity = 99; } ht.Add(oCart.ProductSysNo, oCart); } } catch {} return(ht); }
/// <summary> /// 设置用户的浏览记录 /// </summary> /// <param name="productSysNo"></param> public static void SetCustomerBrowserHistory(int productSysNo) { // 如果product已经存在于cookie中,就不用更新了 // 更新Cookie // 更新Session string cookie = CookieUtil.GetDESEncryptedCookieValue(CookieUtil.Cookie_BrowseHistory); string newCookie = productSysNo.ToString(); if (cookie != null) { string[] productArray = cookie.Split(','); int index = 0; // 新的字符串的个数 for (int i = 0; i < productArray.Length; i++) { if (productArray[i] != productSysNo.ToString()) { newCookie += ","; try { Convert.ToInt32(productArray[i]); } catch { //出错重置为当前product newCookie = productSysNo.ToString(); break; } newCookie += productArray[i]; index++; } if (index == 9) { break; } } } CookieUtil.SetDESEncryptedCookie(CookieUtil.Cookie_BrowseHistory, newCookie, DateTime.MaxValue); }
/// <summary> /// 用户登录 /// 添加人:周 鹏 /// 添加时间:2014-01-03 /// </summary> /// <param name="loginName">登录名</param> /// <param name="passWord">密码</param> /// <param name="remberPwd">保存登录账号密码</param> /// <param name="decodePassWord">是否对密码进行加密</param> /// <param name="createPersistentCookie">是否永久保存</param> /// <returns></returns> public UserLoginStatus UserLogin(string loginName, string passWord, string remberPwd, bool decodePassWord = true, bool createPersistentCookie = false) { var user = new CrmUserBll().GetUserEntity(loginName, "Account"); var loginErrorCount = new ComLoginLogBll().GetLoginErrorCount(loginName); if (loginErrorCount >= 5) { return(UserLoginStatus.TemporaryLocked); } if (user != null && !string.IsNullOrEmpty(user.Id)) { passWord = DESHelper.ToDESEncrypt(passWord, AppConst.EncryptKey); //将密码进行加密 if (!user.Password.Equals(passWord)) { return(UserLoginStatus.PasswordError); } if (!string.IsNullOrEmpty(remberPwd) && remberPwd.Equals("checked")) { //验证通过,设置Cookie信息 CookieUtil.SetCookie(AppConst.LoginUserNameCookieName, createPersistentCookie ? HttpUtility.UrlEncode(user.Account) : "", DateTime.MaxValue); //验证通过,设置Cookie信息 CookieUtil.SetCookie(AppConst.LoginUserCookiePwd, createPersistentCookie ? HttpUtility.UrlEncode(user.Password) : "", DateTime.MaxValue); } else { CookieUtil.Remove(AppConst.LoginUserNameCookieName); CookieUtil.Remove(AppConst.LoginUserCookiePwd); } var ticket = new FormsAuthenticationTicket(1, user.Id, DateTime.Now, DateTime.Now.AddDays(1), false, ""); var strTicket = FormsAuthentication.Encrypt(ticket); var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, strTicket); HttpContext.Current.Response.Cookies.Add(cookie); return(UserLoginStatus.Sucess); } return(UserLoginStatus.NotUser); }
public IActionResult Index() { IndexView model = new IndexView(Context.HttpContext); if (User.Identity.IsAuthenticated) { string accountSource = CookieUtil.GetCookie(AccountSource.LoginSource, User); if (accountSource == AccountSource.Git) { //直接返回cookie中的结果,并建立session model.User = _signService.GetGitUser(); model.IsLogin = true; } } else { model.IsLogin = false; } return(View(model)); }
public static HttpWebRequest GetWebRequest(Uri transferUri, IWebEnvironment env) { var request = (HttpWebRequest)WebRequest.Create(transferUri); if (env != null) { request.Credentials = env.Credentials; request.PreAuthenticate = true; request.Proxy = env.WebProxy; } request.CookieContainer = CookieUtil.GetCokieContainer(transferUri); request.KeepAlive = (request.Proxy != WebRequest.DefaultWebProxy); request.ProtocolVersion = HttpVersion.Version10; var currentPoint = request.ServicePoint; currentPoint.ConnectionLimit = 100; return(request); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { var values = filterContext.RouteData.Values; var url = string.Format("/{0}/{1}", values["controller"] as string, values["action"] as string); if (urlList.Any(s => string.Equals(s, url, StringComparison.CurrentCultureIgnoreCase))) { var headers = filterContext.HttpContext.Request.Headers; ActionLog model = new ActionLog(); model.Path = HttpUtility.UrlDecode(filterContext.HttpContext.Request.Url.AbsolutePath, Encoding.UTF8); model.ClientIP = HttpUtil.RequestHostAddress; model.UserName = CookieUtil.GetCookie(GlobalVar.CookieName, GlobalVar.UserName); model.Method = filterContext.HttpContext.Request.HttpMethod; model.Para = HttpUtil.GetInputPara(); model.Level = CookieUtil.GetCookie <int>(GlobalVar.CookieName, GlobalVar.Level); model.StartTime = DateTime.Now; model.Id = LogService.AddActionLog(model); headers.Set(name, string.Format("{0},{1}", model.Id.ToString(), model.StartTime.ToString("yyyy-MM-dd HH:mm:ss"))); } }
public ActionResult Index(LoginViewModel loginViewModel) { if (ModelState.IsValid) { var userDatabase = new UserService().GetByEmailAndPassword(loginViewModel.Email, loginViewModel.Password); if (userDatabase == null) { SendModelStateErrors("Email or Password is invalid"); return(View(loginViewModel)); } CookieUtil.SetAuthCookie(userDatabase.Id, userDatabase.Name, userDatabase.GetTheMainContextId(), loginViewModel.RememberMe); return(RedirectToAction("Index", "Dashboard")); } else { SendModelStateErrors(); return(View(loginViewModel)); } }
/// <summary> /// [Cookie]设置产品浏览记录(写入Cookie) /// </summary> /// <param name="productSysNo">产品Id</param> /// <param name="productName">产品名称</param> /// <param name="count">浏览记录总数</param> /// <returns></returns> /// <remarks> /// 2013-03-18 吴文强 创建 /// 2013-08-08 邵 斌 迁移,添加商品图片路径到cooki /// </remarks> public void SetHistoryLook(int productSysNo, string productName, int count, string productImage = null) { //清除名字中包含的@和; productName = productName.Replace("@", " ").Replace(";", " "); //新加入的产品(产品Id@产品名称) var value = string.Format("{0}@{1}@{2}", productSysNo, productName.Trim(), productImage); //历史产品 var hostory = CookieUtil.Get(COOKIE_HISTORYLOOK); //新构造的产品集合(产品Id@产品名称),新添加的记录写入最后 var listHostory = hostory.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); listHostory = listHostory.Where( s => s.Split(new[] { "@" }, StringSplitOptions.RemoveEmptyEntries)[0] != productSysNo.ToString()).ToList(); if (listHostory.Count >= count) { listHostory.RemoveAt(0); } listHostory.Add(value); CookieUtil.SetCookie(COOKIE_HISTORYLOOK, string.Join(";", listHostory), DateTime.Now.AddYears(1)); }