Exemplo n.º 1
0
        /// <summary>
        /// 注册通行证
        /// </summary>
        /// <param name="passport"></param>
        /// <returns></returns>
        /// <exception cref="BIStudio.Framework.DefinedException"></exception>
        public SYSPassport PassportRegist(SYSPassportRegistDTO passport)
        {
            if (string.IsNullOrEmpty(passport.LoginName) || !ALValidator.IsLengthStr(passport.LoginName, 4, 50) || !ALValidator.IsNormalChar(passport.LoginName))
            {
                throw CFException.Create(SYSPassportRegistResult.LoginNameInvalid);
            }
            if (string.IsNullOrEmpty(passport.Password) || !ALValidator.IsLengthStr(passport.Password, 6, 16))
            {
                throw CFException.Create(SYSPassportRegistResult.PasswordTooWeak);
            }
            if (string.IsNullOrEmpty(passport.RePassword) || passport.Password != passport.RePassword)
            {
                throw CFException.Create(SYSPassportRegistResult.RePasswordIncorrect);
            }
            if (string.IsNullOrEmpty(passport.Email) || !ALValidator.IsEmail(passport.Email))
            {
                throw CFException.Create(SYSPassportRegistResult.EmailInvalid);
            }

            try
            {
                if (_passportRepository.Get(item => item.LoginName == passport.LoginName).ID != null)
                {
                    throw CFException.Create(SYSPassportRegistResult.LoginNameAlreadyExists);
                }

                if (_passportRepository.Get(item => item.Email == passport.Email).ID != null)
                {
                    throw CFException.Create(SYSPassportRegistResult.EmailAlreadyExists);
                }

                var now    = DateTime.Now;
                var entity = new SYSPassport
                {
                    LoginName      = passport.LoginName,
                    Email          = passport.Email,
                    Remarks        = passport.Remarks,
                    LastLoginTime  = now,
                    LastLoginError = 0,
                    IsValid        = true,
                    IsLocked       = false,
                    Inputer        = CFContext.User.UserName,
                    InputerID      = CFContext.User.ID,
                    InputTime      = now
                };
                entity.Password = entity.ComputePassword(passport.LoginName, passport.Password);
                _passportRepository.Add(entity);
                return(entity);
            }
            catch (Exception ex)
            {
                throw CFException.Create(SYSPassportRegistResult.Fail, ex.Message, ex);
            }
        }