public AuthenticatedEventArgs(string identity, string @namespace, bool isAuthenticated, User user = null)
		{
			_identity = identity;
			_namespace = @namespace;
			_isAuthenticated = isAuthenticated;
			_user = user;
		}
		public void CreateUserTest()
		{
			var provider = this.GetUserProvider();

			#region 单一插入

			var user = new User
			{
				Namespace = "Flagwind.CRM",
				Name = "Jason",
				Email = "*****@*****.**",
				Approved = true,
				ApprovedTime = DateTime.Now,
				Suspended = false,
				ChangePasswordOnFirstTime = false,
				CreatedTime = DateTime.Now,
			};

			var result = provider.CreateUser(user, "shenzhen");

			Assert.AreEqual(result, true);

			#endregion

			#region 批量插入

//			IList<User> users = new List<User>();
//
//			users.Add(new User
//			{
//				Namespace = "Flagwind.CRM",
//				Name = "Agnes",
//				Approved = true,
//				ApprovedTime = DateTime.Now,
//				Suspended = false,
//				ChangePasswordOnFirstTime = false,
//				CreatedTime = DateTime.Now,
//			});
//
//			users.Add(new User
//			{
//				Namespace = "Flagwind.CRM",
//				Name = "Lucky",
//				Approved = true,
//				ApprovedTime = DateTime.Now,
//				Suspended = false,
//				ChangePasswordOnFirstTime = false,
//				CreatedTime = DateTime.Now,
//			});
//
//			var result = provider.CreateUsers(users);
//
//			Assert.AreEqual(result, 2);

			#endregion
		}
		public AuthenticationResult(User user, IDictionary<string, object> extendedProperties)
		{
			if(user == null)
				throw new ArgumentNullException("user");

			_user = user;

			if(extendedProperties != null && extendedProperties.Count > 0)
				_extendedProperties = new Dictionary<string, object>(extendedProperties, StringComparer.OrdinalIgnoreCase);
		}
		public Credential Register(User user, string scene, IDictionary<string, object> extendedProperties = null)
		{
			//创建一个新的凭证对象
			var credential = this.CreateCredential(user, scene, extendedProperties);

			if(credential == null)
				throw new InvalidOperationException();

			//注册新建的凭证
			this.Register(credential);

			//返回注册成功的凭证
			return credential;
		}
		public Certification(string certificationId, Membership.User user, string scene, TimeSpan duration, DateTime issuedTime, IDictionary<string, object> extendedProperties = null)
		{
			if(string.IsNullOrWhiteSpace(certificationId))
				throw new ArgumentNullException("certificationId");

			if(user == null)
				throw new ArgumentNullException("user");

			_user = user;
			_certificationId = certificationId.Trim();
			_scene = scene == null ? null : scene.Trim();
			_duration = duration;
			_issuedTime = issuedTime;
			_timestamp = issuedTime;

			if(extendedProperties != null && extendedProperties.Count > 0)
				_extendedProperties = new Dictionary<string, object>(extendedProperties, StringComparer.OrdinalIgnoreCase);
		}
        public Credential(string credentialId, Membership.User user, string scene, TimeSpan duration, DateTime issuedTime, IDictionary <string, object> extendedProperties = null)
        {
            if (string.IsNullOrWhiteSpace(credentialId))
            {
                throw new ArgumentNullException("credentialId");
            }

            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            _user         = user;
            _credentialId = credentialId.Trim();
            _scene        = scene == null ? null : scene.Trim();
            _duration     = duration;
            _issuedTime   = issuedTime;
            _timestamp    = issuedTime;

            if (extendedProperties != null && extendedProperties.Count > 0)
            {
                _extendedProperties = new Dictionary <string, object>(extendedProperties, StringComparer.OrdinalIgnoreCase);
            }
        }
Esempio n. 7
0
		public static bool IsBuiltin(User user)
		{
			if(user == null)
				return false;

			return IsBuiltin(user.Name);
		}
 public Credential(string credentialId, Membership.User user, string scene, TimeSpan duration)
     : this(credentialId, user, scene, duration, DateTime.Now, null)
 {
 }
 public CredentialRegisterEventArgs(Membership.User user, string scene, IDictionary <string, object> extendedProperties = null)
 {
     _user  = user ?? throw new ArgumentNullException(nameof(user));
     _scene = scene;
     _extendedProperties = extendedProperties;
 }
		public AuthenticationResult(User user) : this(user, null)
		{
		}
Esempio n. 11
0
		public bool CreateUser(User user, string password)
		{
			if(user == null)
				throw new ArgumentNullException("user");

			if(string.IsNullOrWhiteSpace(user.Name))
				throw new ArgumentException("The user name is empty.");

			if(user.UserId < 1)
				user.UserId = (int)this.EnsureService<Zongsoft.Common.ISequence>().GetSequenceNumber(MembershipHelper.SEQUENCE_USERID, 1, MembershipHelper.MINIMUM_ID);

			//确保用户名是审核通过的
			this.Censor(user.Name);

			var dataAccess = this.EnsureService<IDataAccess>();

			using(var transaction = new Zongsoft.Transactions.Transaction())
			{
				if(dataAccess.Insert(MembershipHelper.DATA_ENTITY_USER, user) < 1)
					return false;

				if(password != null && password.Length > 0)
				{
					//生成密码随机数
					var passwordSalt = Zongsoft.Common.RandomGenerator.Generate(8);

					dataAccess.Update(MembershipHelper.DATA_ENTITY_USER, new
					{
						Password = PasswordUtility.HashPassword(password, passwordSalt),
						PasswordSalt = passwordSalt,
					}, new Condition("UserId", user.UserId));
				}

				//提交事务
				transaction.Commit();
			}

			return true;
		}
		protected virtual Credential CreateCredential(User user, string scene, IDictionary<string, object> extendedProperties)
		{
			return new Credential(this.GenerateCredentialId(), user, scene, _renewalPeriod, DateTime.Now, extendedProperties);
		}
Esempio n. 13
0
		public bool CreateUser(User user, string password)
		{
			if(user == null)
				throw new ArgumentNullException("user");

			if(string.IsNullOrWhiteSpace(user.Name))
				throw new ArgumentException("The user name is empty.");

			// 确保用户名是审核通过的
			this.Censor(user.Name);

			var dataAccess = this.EnsureService<IDataAccess>();

			dataAccess.BeginTransaction();

			try
			{
				var entity = Mapper.Map<User, UserEntity>(user);
				
				if(dataAccess.Insert(entity) < 1)
					return false;
				
				if(password != null && password.Length > 0)
				{
					//生成密码随机数
					var passwordSalt = Zongsoft.Common.RandomGenerator.Generate(8);
				
					entity.Password = PasswordUtility.HashPassword(password, passwordSalt);
					entity.PasswordSalt = passwordSalt;
				
					// 更新密码
					var oql = OQL.From(entity).Update(entity.Password, entity.PasswordSalt).End();
				
					dataAccess.Execute(oql);
				}

				dataAccess.Commit();
			}
			catch(Exception ex)
			{
				dataAccess.Rollback();

				throw ex;
			}

			return true;
		}
Esempio n. 14
0
		private void EnsureConflict(User user, string scope, bool isUpdate)
		{
			var ns = MembershipHelper.GetNamespaceCondition(user.Namespace);
			var conditions = new ConditionCollection(ConditionCombination.Or);

			if(!string.IsNullOrWhiteSpace(user.Name) && MembershipHelper.InScope<User>(scope, "Name"))
				conditions.Add(ns & Condition.Equal("Name", user.Name));
			if(!string.IsNullOrWhiteSpace(user.Email) && MembershipHelper.InScope<User>(scope, "Email"))
				conditions.Add(ns & Condition.Equal("Email", user.Email));
			if(!string.IsNullOrWhiteSpace(user.PhoneNumber) && MembershipHelper.InScope<User>(scope, "PhoneNumber"))
				conditions.Add(ns & Condition.Equal("PhoneNumber", user.PhoneNumber));

			if(isUpdate && conditions.Count > 0)
				conditions = Condition.NotEqual("UserId", user.UserId) & conditions;

			if(conditions.Count > 0 && this.DataAccess.Exists(MembershipHelper.DATA_ENTITY_USER, conditions))
				throw new DataConflictException(Zongsoft.Resources.ResourceUtility.GetString("Text.UserConflict"));
		}
Esempio n. 15
0
		public bool CreateUser(User user, string password)
		{
			if(user == null)
				throw new ArgumentNullException("user");

			if(string.IsNullOrWhiteSpace(user.Name))
				throw new ArgumentException("The user name is empty.");

			//确保用户名是审核通过的
			this.Censor(user.Name);

			//确认指定用户的用户名、手机号、邮箱地址是否已经存在
			this.EnsureConflict(user, null, false);

			if(user.UserId < 1)
				user.UserId = (int)this.Sequence.GetSequenceNumber(MembershipHelper.SEQUENCE_USERID, 1, MembershipHelper.MINIMUM_ID);

			using(var transaction = new Zongsoft.Transactions.Transaction())
			{
				if(this.DataAccess.Insert(MembershipHelper.DATA_ENTITY_USER, user) < 1)
					return false;

				//有效的密码不能为空或全空格字符串
				if(!string.IsNullOrWhiteSpace(password))
				{
					//生成密码随机数
					var passwordSalt = Zongsoft.Common.RandomGenerator.Generate(8);

					this.DataAccess.Update(MembershipHelper.DATA_ENTITY_USER, new
					{
						Password = PasswordUtility.HashPassword(password, passwordSalt),
						PasswordSalt = passwordSalt,
					}, new Condition("UserId", user.UserId));
				}

				//提交事务
				transaction.Commit();
			}

			return true;
		}