public void ProcessUserRequest(User user, HttpContextBase context)
		{
			if (context.Response.IsRequestBeingRedirected)
				return;
			int? userID = null;
			if (user != null)
				userID = user.UserID;
			if (context.Request.Cookies[_sessionIDCookieName] == null)
			{
				StartNewSession(context, userID);
				if (user != null)
					_userRepository.UpdateLastActivityDate(user, DateTime.UtcNow);
			}
			else
			{
				var sessionID = Convert.ToInt32(context.Request.Cookies[_sessionIDCookieName].Value);
				if (user != null)
					_userRepository.UpdateLastActivityDate(user, DateTime.UtcNow);
				var updateSuccess = _userSessionRepository.UpdateSession(sessionID, DateTime.UtcNow);
				if (!updateSuccess)
					StartNewSession(context, userID);
				else
				{
					var isAnon = _userSessionRepository.IsSessionAnonymous(sessionID);
					if (userID.HasValue && isAnon || !userID.HasValue && !isAnon)
					{
						EndAndDeleteSession(new ExpiredUserSession { UserID = null, SessionID = sessionID, LastTime = DateTime.UtcNow });
						StartNewSession(context, userID);
					}
				}
			}
		}
		public PrivateMessage Create(string subject, string fullText, User user, List<User> toUsers)
		{
			if (String.IsNullOrWhiteSpace(subject))
				throw new ArgumentNullException("subject");
			if (String.IsNullOrWhiteSpace(fullText))
				throw new ArgumentNullException("fullText");
			if (user == null)
				throw new ArgumentNullException("user");
			if (toUsers == null || toUsers.Count == 0)
				throw new ArgumentException("toUsers must include at least one user.", "toUsers");
			var names = user.Name;
			foreach (var toUser in toUsers)
				names += ", " + toUser.Name;
			var now = DateTime.UtcNow;
			var pm = new PrivateMessage
			         	{
			         		Subject = TextParsingService.EscapeHtmlAndCensor(subject),
							UserNames = names,
							LastPostTime = now
			         	};
			pm.PMID = PrivateMessageRepository.CreatePrivateMessage(pm);
			PrivateMessageRepository.AddUsers(pm.PMID, new List<int> {user.UserID}, now, true);
			PrivateMessageRepository.AddUsers(pm.PMID, toUsers.Select(u => u.UserID).ToList(), now.AddSeconds(-1), false);
			var post = new PrivateMessagePost
			           	{
			           		FullText = TextParsingService.ForumCodeToHtml(fullText),
							Name = user.Name,
							PMID = pm.PMID,
							PostTime = now,
							UserID = user.UserID
			           	};
			PrivateMessageRepository.AddPost(post);
			return pm;
		}
		public void MarkAllForumReadSetsReadTimes()
		{
			var service = GetService();
			var user = new User(456, DateTime.MinValue);
			service.MarkAllForumsRead(user);
			_lastReadRepo.Verify(l => l.SetAllForumsRead(user.UserID, It.IsAny<DateTime>()), Times.Exactly(1));
		}
Example #4
0
		public void SetPassword(User targetUser, string password, string ip, User user)
		{
			var salt = Guid.NewGuid();
			var hashedPassword = password.GetMD5Hash(salt);
			_userRepository.SetHashedPassword(targetUser, hashedPassword, salt);
			_securityLogService.CreateLogEntry(user, targetUser, ip, String.Empty, SecurityLogType.PasswordChange);
		}
		public void TryRemoveSubTopicNullTopic()
		{
			var service = GetService();
			var user = new User(123, DateTime.MaxValue);
			service.TryRemoveSubscribedTopic(user, null);
			_mockSubRepo.Verify(s => s.RemoveSubscribedTopic(It.IsAny<int>(), It.IsAny<int>()), Times.Never());
		}
Example #6
0
		public UserEdit(User user, Profile profile)
		{
			UserID = user.UserID;
			Name = user.Name;
			Email = user.Email;
			IsApproved = user.IsApproved;
			IsSubscribed = profile.IsSubscribed;
			Signature = profile.Signature;
			ShowDetails = profile.ShowDetails;
			Location = profile.Location;
			IsPlainText = profile.IsPlainText;
			Dob = profile.Dob;
			Web = profile.Web;
			Aim = profile.Aim;
			Icq = profile.Icq;
			YahooMessenger = profile.YahooMessenger;
			Facebook = profile.Facebook;
			Twitter = profile.Twitter;
			TimeZone = profile.TimeZone;
			IsDaylightSaving = profile.IsDaylightSaving;
			HideVanity = profile.HideVanity;
			Roles = user.Roles.ToArray();
			AvatarID = profile.AvatarID;
			ImageID = profile.ImageID;
		}
		public void UserWithAnonCookieStartsLoggedInSession()
		{
			var user = new User(123, DateTime.MinValue);
			var service = GetService();
			const int sessionID = 5467;
			var requestCookies = new HttpCookieCollection { new HttpCookie("pf_sessionID", sessionID.ToString()) };
			_contextHelper.MockRequest.Setup(r => r.Cookies).Returns(requestCookies);
			_mockUserSessionRepo.Setup(u => u.UpdateSession(sessionID, It.IsAny<DateTime>())).Returns(true);
			_mockUserSessionRepo.Setup(u => u.IsSessionAnonymous(sessionID)).Returns(true);
			var responseCookies = new HttpCookieCollection();
			_contextHelper.MockResponse.Setup(r => r.Cookies).Returns(responseCookies);

			service.ProcessUserRequest(user, _contextHelper.MockContext.Object);

			_mockUserSessionRepo.Verify(u => u.UpdateSession(sessionID, It.IsAny<DateTime>()), Times.Once());
			_mockUserRepo.Verify(u => u.UpdateLastActivityDate(user, It.IsAny<DateTime>()), Times.Once());
			_mockUserSessionRepo.Verify(u => u.DeleteSessions(null, sessionID), Times.Once());
			_mockSecurityLogService.Verify(s => s.CreateLogEntry(null, null, String.Empty, sessionID.ToString(), SecurityLogType.UserSessionEnd, It.IsAny<DateTime>()), Times.Once());
			Assert.AreEqual(1, responseCookies.Count);
			var cookie = responseCookies[0];
			int newSessionID;
			Assert.True(int.TryParse(cookie.Value, out newSessionID));
			Assert.AreEqual("pf_sessionID", cookie.Name);
			_mockUserSessionRepo.Verify(u => u.CreateSession(It.IsAny<int>(), user.UserID, It.IsAny<DateTime>()), Times.Once());
			_mockSecurityLogService.Verify(s => s.CreateLogEntry(null, user.UserID, It.IsAny<string>(), It.IsAny<string>(), SecurityLogType.UserSessionStart), Times.Once());
		}
Example #8
0
		public void MarkAllForumsRead(User user)
		{
			if (user == null)
				throw new ArgumentNullException("user");
			_lastReadRepository.SetAllForumsRead(user.UserID, DateTime.UtcNow);
			_lastReadRepository.DeleteAllTopicReads(user.UserID);
		}
		public void Reply(PrivateMessage pm, string fullText, User user)
		{
			if (pm == null || pm.PMID == 0)
				throw new ArgumentException("Can't reply to a PM that hasn't been persisted.", "pm");
			if (String.IsNullOrWhiteSpace(fullText))
				throw new ArgumentNullException("fullText");
			if (user == null)
				throw new ArgumentNullException("user");
			if (!IsUserInPM(user, pm))
				throw new Exception("Can't add a PM reply for a user not part of the PM.");
			var post = new PrivateMessagePost
			           	{
			           		FullText = TextParsingService.ForumCodeToHtml(fullText),
			           		Name = user.Name,
			           		PMID = pm.PMID,
			           		PostTime = DateTime.UtcNow,
			           		UserID = user.UserID
			           	};
			PrivateMessageRepository.AddPost(post);
			var users = PrivateMessageRepository.GetUsers(pm.PMID);
			foreach (var u in users)
				PrivateMessageRepository.SetArchive(pm.PMID, u.UserID, false);
			var now = DateTime.UtcNow;
			PrivateMessageRepository.UpdateLastPostTime(pm.PMID, now);
			PrivateMessageRepository.SetLastViewTime(pm.PMID, user.UserID, now);
		}
		public void EnqueueDoesWhatItSaysItShould()
		{
			var calc = GetCalc();
			var user = new User(1, DateTime.MinValue);
			var eventDef = new EventDefinition {EventDefinitionID = "blah"};
			calc.QueueCalculation(user, eventDef);
			_awardCalcRepo.Verify(x => x.Enqueue(eventDef.EventDefinitionID, user.UserID), Times.Once());
		}
		public void TryRemoveSubTopic()
		{
			var service = GetService();
			var user = new User(123, DateTime.MaxValue);
			var topic = new Topic(456);
			service.TryRemoveSubscribedTopic(user, topic);
			_mockSubRepo.Verify(s => s.RemoveSubscribedTopic(user.UserID, topic.TopicID), Times.Once());
		}
Example #12
0
		public DateTime? GetForumReadStatus(User user, Forum forum)
		{
			if (user != null)
			{
				return _lastReadRepository.GetLastReadTimesForForum(user.UserID, forum.ForumID);
			}
			return null;
		}
Example #13
0
		public DateTime? GetTopicReadStatus(User user, Topic topic)
		{
			if (user != null)
			{
				return _lastReadRepository.GetLastReadTimeForTopic(user.UserID, topic.TopicID);
			}
			return null;
		}
Example #14
0
		public void MarkTopicRead(User user, Topic topic)
		{
			if (user == null)
				throw new ArgumentNullException("user");
			if (topic == null)
				throw new ArgumentNullException("topic");
			_lastReadRepository.SetTopicRead(user.UserID, topic.TopicID, DateTime.UtcNow);
		}
		public void IssueMapsFieldsToRepoCall()
		{
			var user = new User(123, DateTime.MinValue);
			var awardDef = new AwardDefinition {AwardDefinitionID = "blah", Description = "desc", Title = "title", IsSingleTimeAward = true};
			var service = GetService();
			service.IssueAward(user, awardDef);
			_userAwardRepo.Verify(x => x.IssueAward(user.UserID, awardDef.AwardDefinitionID, awardDef.Title, awardDef.Description, It.IsAny<DateTime>()), Times.Once());
		}
		public void SetAndGetUserValue()
		{
			var user = new User(123, DateTime.MinValue) {Name = "Name", Email = "Email", IsApproved = true, LastActivityDate = DateTime.MaxValue, LastLoginDate = DateTime.MaxValue, AuthorizationKey = Guid.NewGuid()};
			var viewData = new ViewDataDictionary();
			viewData.SetUserInViewData(user);
			var retrievedUser = viewData[ViewDataDictionaries.ViewDataUserKey];
			Assert.AreSame(user, retrievedUser);
		}
Example #17
0
		public void PublishToFeed(User user, string message, int points, DateTime timeStamp)
		{
			if (user == null)
				return;
			_feedRepository.PublishEvent(user.UserID, message, points, timeStamp);
			var cutOff = _feedRepository.GetOldestTime(user.UserID, MaxFeedCount);
			_feedRepository.DeleteOlderThan(user.UserID, cutOff);
		}
		public void MarkForumReadDeletesOldTopicReadTimes()
		{
			var service = GetService();
			var forum = new Forum(123);
			var user = new User(456, DateTime.MinValue);
			service.MarkForumRead(user, forum);
			_lastReadRepo.Verify(l => l.DeleteTopicReadsInForum(user.UserID, forum.ForumID), Times.Exactly(1));
		}
		public void RemoveFaveTopic()
		{
			var service = GetService();
			var user = new User(123, DateTime.MaxValue);
			var topic = new Topic(456);
			service.RemoveFavoriteTopic(user, topic);
			_mockFaveRepo.Verify(s => s.RemoveFavoriteTopic(user.UserID, topic.TopicID), Times.Once());
		}
		public void MarkForumReadSetsReadTime()
		{
			var service = GetService();
			var forum = new Forum(123);
			var user = new User(456, DateTime.MinValue);
			service.MarkForumRead(user, forum);
			_lastReadRepo.Verify(l => l.SetForumRead(user.UserID, forum.ForumID, It.IsAny<DateTime>()), Times.Exactly(1));
		}
Example #21
0
		public void ProcessManualEvent(string feedMessage, User user, int pointValue)
		{
			var timeStamp = DateTime.UtcNow;
			var eventDefinition = new EventDefinition { EventDefinitionID = "Manual", PointValue = pointValue };
			var ledgerEntry = new PointLedgerEntry { UserID = user.UserID, EventDefinitionID = eventDefinition.EventDefinitionID, Points = eventDefinition.PointValue, TimeStamp = timeStamp };
			_pointLedgerRepository.RecordEntry(ledgerEntry);
			_profileService.UpdatePointTotal(user);
			_feedService.PublishToFeed(user, feedMessage, eventDefinition.PointValue, timeStamp);
		}
Example #22
0
		public void MarkForumRead(User user, Forum forum)
		{
			if (user == null)
				throw new ArgumentNullException("user");
			if (forum == null)
				throw new ArgumentNullException("forum");
			_lastReadRepository.SetForumRead(user.UserID, forum.ForumID, DateTime.UtcNow);
			_lastReadRepository.DeleteTopicReadsInForum(user.UserID, forum.ForumID);
		}
Example #23
0
		public void SetHashedPassword(User user, string hashedPassword, Guid salt)
		{
			_sqlObjectFactory.GetConnection().Using(connection => 
				connection.Command("UPDATE pf_PopForumsUser SET Password = @Password, Salt = @Salt WHERE UserID = @UserID")
					.AddParameter("@Password", hashedPassword)
					.AddParameter("@Salt", salt)
					.AddParameter("@UserID", user.UserID)
					.ExecuteNonQuery());
		}
		public List<PrivateMessage> GetPrivateMessages(User user, PrivateMessageBoxType boxType, int pageIndex, out PagerContext pagerContext)
		{
			var total = PrivateMessageRepository.GetBoxCount(user.UserID, boxType);
			var pageSize = SettingsManager.Current.TopicsPerPage;
			var startRow = ((pageIndex - 1) * pageSize) + 1;
			var totalPages = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(total) / Convert.ToDouble(pageSize)));
			pagerContext = new PagerContext { PageCount = totalPages, PageIndex = pageIndex, PageSize = pageSize };
			return PrivateMessageRepository.GetPrivateMessages(user.UserID, boxType, startRow, pageSize);
		}
		public void SetAuthCookie(HttpContextBase context, User user, bool createPersistentCookie)
		{
			var ticket = new FormsAuthenticationTicket(9, user.Name, DateTime.Now, DateTime.Now.AddDays(30), createPersistentCookie, "");
			var encryptedTicket = FormsAuthentication.Encrypt(ticket);
			var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
			if (createPersistentCookie)
				cookie.Expires = DateTime.Now.AddDays(30);
			context.Response.Cookies.Add(cookie);
		}
		public void GetAwardsMapsUserIDAndReturnsList()
		{
			var user = new User(123, DateTime.MinValue);
			var list = new List<UserAward>();
			var service = GetService();
			_userAwardRepo.Setup(x => x.GetAwards(user.UserID)).Returns(list);
			var result = service.GetAwards(user);
			Assert.AreSame(list, result);
		}
		public void IsAwardedMapsAndReturnsRightValue()
		{
			var user = new User(123, DateTime.MinValue);
			var awardDef = new AwardDefinition { AwardDefinitionID = "blah" };
			var service = GetService();
			_userAwardRepo.Setup(x => x.IsAwarded(user.UserID, awardDef.AwardDefinitionID)).Returns(true);
			var result = service.IsAwarded(user, awardDef);
			Assert.IsTrue(result);
		}
Example #28
0
		public void GetFeedGets50ItemsMaxFromRepo()
		{
			var service = GetService();
			var user = new User(123, DateTime.MinValue);
			var list = new List<FeedEvent>();
			_feedRepo.Setup(x => x.GetFeed(user.UserID, 50)).Returns(list);
			var result = service.GetFeed(user);
			Assert.AreSame(result, list);
		}
		public void AddUnapprovedFriendWontCallRepoIfSelfAddingFriend()
		{
			var service = GetService();
			var fromUser = new User(123, DateTime.MinValue);

			service.AddUnapprovedFriend(fromUser, fromUser);

			_friendRepo.Verify(x => x.AddUnapprovedFriend(fromUser.UserID, fromUser.UserID), Times.Never());
		}
Example #30
0
		public void PublishSavesToRepo()
		{
			var service = GetService();
			var user = new User(123, DateTime.MinValue);
			const string msg = "oiehgfoih";
			const int points = 5352;
			var timeStamp = new DateTime(2000, 1, 1);
			service.PublishToFeed(user, msg, points, timeStamp);
			_feedRepo.Verify(x => x.PublishEvent(user.UserID, msg, points, timeStamp), Times.Once());
		}