Exemplo n.º 1
0
        public bool SetNewCookie(HttpContextBase httpContext, string newCookieValue)
        {
            if (!_userUniqueId.IsValid(newCookieValue))
            {
                return(false);
            }

            string ip     = RemoteClientHelper.GetClientIpAddress(httpContext.Request);
            long   userId = _usersQuery.GetByHash(newCookieValue, ip);

            if (IdValidator.IsInvalid(userId))
            {
                return(false);
            }

            HttpCookie cookie = httpContext.Response.Cookies[COOKIE_NAME];

            if (cookie == null)
            {
                return(false);
            }

            cookie.Value = newCookieValue;
            httpContext.Response.Cookies[COOKIE_NAME].Value = newCookieValue;

            return(true);
        }
Exemplo n.º 2
0
        public long GetUserId(HttpContextBase httpContext)
        {
            string userUniqueId      = GetUserUniqueIdFromCookie(httpContext);
            bool   needCreateNewUser = string.IsNullOrEmpty(userUniqueId) && _needCreate;

            if (needCreateNewUser)
            {
                userUniqueId = GenerateNewUserUnique(httpContext);
            }

            if (string.IsNullOrEmpty(userUniqueId))
            {
                return(IdValidator.INVALID_ID);
            }

            string ip     = RemoteClientHelper.GetClientIpAddress(httpContext.Request);
            long   userId = needCreateNewUser
                              ? _usersQuery.CreateByHash(userUniqueId, ip)
                              : _usersQuery.GetByHash(userUniqueId, ip);

            if (IdValidator.IsInvalid(userId) && !needCreateNewUser)
            {
                //нужно было получить по идентификатору, но не получили - создать аккаунт
                userId = _usersQuery.CreateByHash(userUniqueId, ip);
            }

            return(userId);
        }
Exemplo n.º 3
0
        public EmptyResult NewVisitor(long id)
        {
            long languageId       = WebSettingsConfig.Instance.GetLanguageFromId();
            var  ratingByIpsQuery = new RatingByIpsQuery(languageId);

            ratingByIpsQuery.AddNewVisitor(RemoteClientHelper.GetClientIpAddress(Request), id, RatingPageType);
            return(new EmptyResult());
        }
Exemplo n.º 4
0
        /// <summary>
        /// Банит пользователя
        /// </summary>
        /// <example>localhost/StudyLanguages/Service/BanUser?userId=59&browser=Firefox&userIp=::1&sectionId=UserTasks&banType=Today</example>
        /// <returns></returns>
        public EmptyResult BanUser()
        {
            string dirtyUserId    = Request.Params["userId"];
            string dirtySectionId = Request.Params["sectionId"];
            string dirtyBanType   = Request.Params["banType"];
            string userIp         = Request.Params["userIp"];
            string browser        = Request.Params["browser"];

            string remoteClientIp = RemoteClientHelper.GetClientIpAddress(Request);

            if (string.IsNullOrEmpty(remoteClientIp) || !remoteClientIp.Equals("176.214.39.34"))
            {
                LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                    "ServiceController.BanUser кто-то попытался забанить пользователя!!! Настройки: userId={0}, sectionId={1}, banType={2}, userIp={3}, browser={4}",
                    dirtyUserId, dirtySectionId, dirtyBanType, userIp, browser);
                return(new EmptyResult());
            }

            RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory();
            BanRepository     banRepository     = repositoryFactory.GetBanRepository();

            SectionId sectionId;
            BanType   banType;
            long      userId;

            if (!Enum.TryParse(dirtySectionId, true, out sectionId) || EnumValidator.IsInvalid(sectionId) ||
                !Enum.TryParse(dirtyBanType, true, out banType) || EnumValidator.IsInvalid(banType) ||
                !long.TryParse(dirtyUserId, out userId) || string.IsNullOrEmpty(userIp) ||
                string.IsNullOrEmpty(browser))
            {
                LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                    "ServiceController.BanUser НЕ УДАЛОСЬ распрасить данные!!! Настройки: userId={0}, sectionId={1}, banType={2}, userIp={3}, browser={4}",
                    dirtyUserId, dirtySectionId, dirtyBanType, userIp, browser);
                return(new EmptyResult());
            }

            if (!banRepository.AddBan(sectionId, banType, userId, userIp, browser))
            {
                LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                    "ServiceController.BanUser НЕ УДАЛОСЬ забанить пользователя!!! Настройки: userId={0}, sectionId={1}, banType={2}, userIp={3}, browser={4}",
                    userId, sectionId, banType, userIp, browser);
            }

            return(new EmptyResult());
        }
Exemplo n.º 5
0
        public JsonResult FeedbackMessage(string message, string email)
        {
            //TODO: антиспам систему
            if (string.IsNullOrWhiteSpace(message))
            {
                return(JsonResultHelper.Error());
            }

            string text = string.Format("Домен: {0}\r\n" +
                                        "IP-адрес: {1}\r\n\r\n" +
                                        "Адрес для ответа: {2}\r\n" +
                                        "Сообщение:\r\n{3}",
                                        WebSettingsConfig.Instance.Domain,
                                        RemoteClientHelper.GetClientIpAddress(Request),
                                        OurHtmlHelper.HtmlEncode(email, true),
                                        OurHtmlHelper.HtmlEncode(message, true));

            var  mailer    = new Mailer();
            bool isSuccess = mailer.SendMail(MailAddresses.FEEDBACK, MailAddresses.FEEDBACK, "Обратная связь", text);

            return(JsonResultHelper.Success(isSuccess));
        }