//private string FormatId(string userName)
        //{
        //    if (string.IsNullOrEmpty(userName))
        //    {
        //        throw new ArgumentNullException("userName");
        //    }
        //    return "SrirachaUser_" + userName.Replace('\\', '_');
        //}

        public SrirachaUser CreateUser(SrirachaUser user)
        {
            if(user == null)
            {
                throw new ArgumentNullException("user");
            }
            if(string.IsNullOrEmpty(user.UserName))
            {
                throw new ArgumentNullException("user.UserName");
            }
            if(UserNameExists(user.UserName))
            {
                throw new ArgumentException("UserName already exists: " + user.UserName);
            }
            var dbItem = SqlSrirachaUser.FromDto(user);
            dbItem.Id = Guid.NewGuid().ToString();
            if(user.UserGuid == Guid.Empty)
            {
                dbItem.UserGuid = Guid.NewGuid();
            }
            dbItem.SetCreatedFields(this._userIdentity.UserName);
            //dbItem.Id = FormatId(user.UserName);
            using(var db = _sqlConnectionInfo.GetDB())
            {
                db.Insert("SrirachaUser", "ID", false, dbItem);
            }
            return this.GetUser(dbItem.Id);
        }
 public static SqlSrirachaUser FromDto(SrirachaUser user)
 {
     var dbItem = AutoMapper.Mapper.Map(user, new SqlSrirachaUser());
     if (user.ProjectNotificationItemList != null)
     {
         dbItem.ProjectNotificationItemListJson = user.ProjectNotificationItemList.ToJson();
     }
     return dbItem;
 }
Ejemplo n.º 3
0
 public SrirachaUser CreateUser(string userName, string emailAddress, string password)
 {
     var user = new SrirachaUser
     {
         UserName = userName,
         EmailAddress = emailAddress,
         LastActivityDateTimeUtc = DateTime.UtcNow
     };
     if(!string.IsNullOrEmpty(password))
     {
         user.EncryptedPassword = this.GetEncryptedPassword(userName, password);
     }
     return _membershipRepository.CreateUser(user);
 }
		private MembershipUser CreateMembershipUser(SrirachaUser user)
		{
			return new MembershipUser(providerName: SrirachaMembershipProvider.ProviderName,
										name: user.UserName,
										providerUserKey: user.UserGuid,
										email: user.EmailAddress,
										passwordQuestion: user.PasswordQuestion,
										creationDate: user.CreatedDateTimeUtc,
										isLockedOut: user.LockedIndicator,
										comment: null,
										isApproved: true,
										lastActivityDate: user.LastLoginDateDateTimeUtc.GetValueOrDefault(),
										lastLockoutDate: user.LastLockoutDateTimeUtc.GetValueOrDefault(),
										lastLoginDate: user.LastLoginDateDateTimeUtc.GetValueOrDefault(),
										lastPasswordChangedDate: user.LastPasswordChangedDateTimeUtc.GetValueOrDefault());
		}
		public SrirachaUser UpdateUser(SrirachaUser user)
		{
            if(user == null)
            {
                throw new ArgumentNullException("user");
            }
            if(string.IsNullOrEmpty(user.UserName))
            {
                throw new ArgumentNullException("user.UserName");
            }
            var sourceUser = _documentSession.LoadEnsureNoCache<SrirachaUser>(FormatId(user.UserName));
			var targetUser = AutoMapper.Mapper.Map(user, sourceUser);
            targetUser.CreatedDateTimeUtc = sourceUser.CreatedDateTimeUtc;
            targetUser.CreatedByUserName = sourceUser.CreatedByUserName;
            targetUser.UpdatedByUserName = _userIdentity.UserName;
            targetUser.UpdatedDateTimeUtc = DateTime.UtcNow;
            return _documentSession.StoreSaveEvict(targetUser);
		}
		public SrirachaUser CreateUser(SrirachaUser user)
		{
            if(user == null)
            {
                throw new ArgumentNullException("user");
            }
            if(string.IsNullOrEmpty(user.UserName))
            {
                throw new ArgumentNullException("user.UserName");
            }
			var dbUser = AutoMapper.Mapper.Map(user, new SrirachaUser());
            if(dbUser.UserGuid == Guid.Empty)
            {
                dbUser.UserGuid = Guid.NewGuid();
            }
			var existingItem = TryGetUserByUserName(user.UserName);
			if(existingItem != null)
			{
				throw new ArgumentException(string.Format("User with username {0} already exists", user.UserName));
			}
            dbUser.SetCreatedFields(_userIdentity.UserName);
			dbUser.Id = FormatId(dbUser.UserName);
            return _documentSession.StoreSaveEvict(dbUser);
		}
		public override MembershipUser CreateUser(string userName, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
		{
			var repository = this.GetRepository();
			MembershipUser returnValue = null;
			if(string.IsNullOrWhiteSpace(userName))
			{
				status = MembershipCreateStatus.InvalidUserName;
			}
			else if (string.IsNullOrWhiteSpace(password))
			{
				status = MembershipCreateStatus.InvalidPassword;
			}
			else if (string.IsNullOrWhiteSpace(email))
			{
				status = MembershipCreateStatus.InvalidEmail;
			}
			else if (repository.UserNameExists(userName))
			{
				status = MembershipCreateStatus.DuplicateUserName;
			}
			else if (repository.EmailAddressExists(email))
			{
				status = MembershipCreateStatus.DuplicateEmail;
			}
			else 
			{
				var user = new SrirachaUser
				{
					UserName = userName,
					EmailAddress = email,
					PasswordQuestion = passwordQuestion,
					PasswordAnswer = passwordAnswer,
					UserGuid = (Guid)(providerUserKey ?? Guid.NewGuid()),
					LastLockoutDateTimeUtc = null,
					LastLoginDateDateTimeUtc = null,
					LastPasswordChangedDateTimeUtc = DateTime.UtcNow,
					LockedIndicator = false,
					MustChangePasswordIndicator = true,
					EncryptedPassword = GetEncryptedPassword(userName, password)
				};
				user = repository.CreateUser(user);

				returnValue = CreateMembershipUser(user);

				status = MembershipCreateStatus.Success;
				this.LogInfo("Created user {0}", userName);
			}
			return returnValue;			
		}
 public SrirachaUser UpdateUser(SrirachaUser user)
 {
     if(user == null)
     {
         throw new ArgumentNullException("user");
     }
     if(string.IsNullOrEmpty(user.UserName))
     {
         throw new ArgumentNullException("user.UserName");
     }
     var existingUser = GetUser(user.Id);
     var dbItem = SqlSrirachaUser.FromDto(user);
     dbItem.CreatedByUserName = existingUser.CreatedByUserName;
     dbItem.CreatedDateTimeUtc = existingUser.CreatedDateTimeUtc;
     dbItem.SetUpdatedFields(this._userIdentity.UserName);
     using(var db = _sqlConnectionInfo.GetDB())
     {
         db.Update("SrirachaUser", "ID", dbItem, dbItem.Id);
     }
     return this.GetUser(dbItem.Id);
 }
		public AccountSettings UpdateCurrentUserSettings(string emailAddress, List<ProjectNotificationItem> projectNotificationItemList)
		{
			UpdateNotificationList(_userIdentity.UserName, projectNotificationItemList);
			var user = _membershipRepository.TryGetUserByUserName(_userIdentity.UserName);
			if(user == null)
			{
				user = new SrirachaUser
				{
					UserGuid = Guid.NewGuid(),
					UserName = _userIdentity.UserName,
					EmailAddress = emailAddress,
					ProjectNotificationItemList = projectNotificationItemList
				};
				user = _membershipRepository.CreateUser(user);
			}
			else 
			{
				user.EmailAddress = emailAddress;
				user.ProjectNotificationItemList = projectNotificationItemList;
				user = _membershipRepository.UpdateUser(user);
			}
			return new AccountSettings
			{
				UserName = user.UserName,
				EmailAddress = user.EmailAddress,
				ProjectNotificationItemList = projectNotificationItemList
			};
		}
		public void EnsureUserAccount(string userName)
		{
			var user = _membershipRepository.TryGetUserByUserName(userName);
			if(user == null)
			{
				user = new SrirachaUser
				{
					UserName = userName
				};
				_membershipRepository.CreateUser(user);
			}
		}
			public void ShouldReturnUserList()
			{
				var testData = UserTestData.Setup(false);
				var userList = new SrirachaUser[] 
				{
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
				};
				var pagedList = new PagedSortedList<SrirachaUser>(new PagedList.StaticPagedList<SrirachaUser>(userList,  1, int.MaxValue, userList.Count()), string.Empty, true);
                testData.Repository.Setup(i => i.GetUserList(It.Is<ListOptions>(j => j.PageNumber == 1 && j.PageSize == 10), null, null)).Returns(pagedList);

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				int totalRecords;
				var collection = provider.GetAllUsers(0, 10, out totalRecords);

				Assert.AreEqual(5, totalRecords);
				Assert.IsNotNull(collection);
				Assert.AreEqual(5, collection.Count);
				Assert.IsNotNull(collection["test1"]);
				Assert.IsNotNull(collection["test2"]);
				Assert.IsNotNull(collection["test3"]);
				Assert.IsNotNull(collection["test4"]);
				Assert.IsNotNull(collection["test5"]);
			}
			public void ShouldReturnUsersByUserNameMatch()
			{
				var testData = UserTestData.Setup(false);
				var userList = new SrirachaUser[] 
				{
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
					new SrirachaUser { UserName="******", EmailAddress = "*****@*****.**" },
				};
				string userNameToMatch = "test1";
				var matchedList = userList.Where(i=>i.EmailAddress.Contains(userNameToMatch));
				var pagedList = new PagedSortedList<SrirachaUser>(new PagedList.StaticPagedList<SrirachaUser>(matchedList,  1, int.MaxValue, matchedList.Count()), string.Empty, true);
                testData.Repository.Setup(i => i.GetUserList(It.IsAny<ListOptions>(), It.IsAny<List<string>>(), null)).Returns(pagedList);

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				int totalRecords;
				var collection = provider.FindUsersByName(userNameToMatch, 0, 10, out totalRecords);

				Assert.AreEqual(1, totalRecords);
				Assert.IsNotNull(collection);
				Assert.AreEqual(1, collection.Count);
				Assert.IsNotNull(collection["test1"]);
			}