Example #1
0
        /// <summary>
        /// 请求用户授权Token
        /// </summary>
        /// <param name="authorize"></param>
        /// <returns></returns>
        /// <exception cref="BIStudio.Framework.DefinedException"></exception>
        public SYSAuthorize Authorize(SYSAuthorizeDTO authorize)
        {
            //检查请求参数
            if (string.IsNullOrEmpty(authorize.response_type))
            {
                throw CFException.Create(STDAuthorizeResult.ResponseTypeInvalid);
            }
            if (string.IsNullOrEmpty(authorize.client_id))
            {
                throw CFException.Create(STDAuthorizeResult.ClientIDInvalid);
            }

            try
            {
                //检查应用代码
                var certificate = _certificateRepository.Get(item => item.ApiKey == authorize.client_id);
                if (certificate.ID == null)
                {
                    throw CFException.Create(STDAuthorizeResult.ClientIDInvalid);
                }
                //创建授权码
                string code = ALUtils.GetGUIDShort();
                CacheService.Default.GetOrAdd("STDAuthorizeDTO_" + code, authorize, 10);
                //HttpRuntime.Cache.Add("STDAuthorizeDTO_" + code, authorize, null, DateTime.Now.AddMinutes(10), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null);
                return(new SYSAuthorize(code, authorize.state));
            }
            catch (Exception ex)
            {
                throw CFException.Create(STDAuthorizeResult.Fail, ex.Message, ex);
            }
        }
Example #2
0
        /// <summary>
        /// 生成accesstocken之后操作存储
        /// </summary>
        /// <param name="accessToken">访问令牌</param>
        /// <returns></returns>
        private SYSToken SaveToken(SYSAccessToken accessToken)
        {
            //获得应用账号
            SYSAccount account = _accountRepository.Get(item => item.SystemID == accessToken.system_id && item.PassportID == accessToken.uid);
            //获得应用令牌
            SYSToken token = _tokenRepository.Get(new TokenSpecification(accessToken.system_id, accessToken.uid));

            if (enableConcurrentSessions || token.ID == null)
            {
                token.PassportID   = accessToken.uid;
                token.SystemID     = accessToken.system_id;
                token.AccountID    = account.ID;
                token.UID          = account.UID;
                token.AccessToken  = accessToken.access_token;
                token.RefreshToken = ALUtils.GetGUIDShort();
                token.RequestTime  = DateTime.Now;
                token.RequestIP    = CFContext.User.IP;
                token.Scope        = accessToken.scope;
                token.ExpiresIn    = DateTime.Now.AddSeconds(accessToken.expires_in);
                _tokenRepository.Add(token);
            }
            else
            {
                token.AccessToken = accessToken.access_token;
                token.Scope       = accessToken.scope;
                token.ExpiresIn   = DateTime.Now.AddSeconds(accessToken.expires_in);
                _tokenRepository.Modify(token);
            }
            return(token);
        }
Example #3
0
 public SYSAccessToken(long appid)
     : this()
 {
     this.access_token = ALUtils.GetGUIDShort();
     this.token_type   = "bearer";
     this.expires_in   = 60 * 60 * 24;
     this.system_id    = appid;
 }
Example #4
0
        /// <summary>
        /// 忘记密码
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        /// <exception cref="BIStudio.Framework.DefinedException"></exception>
        public SYSPassworkForgetDTO PassportForgot(string email)
        {
            try
            {
                if (string.IsNullOrEmpty(email))
                {
                    throw CFException.Create(STDPassworkForgetResult.EmailIncorrect);
                }
                var passport = _passportRepository.Get(item => item.Email == email);

                if (passport == null)
                {
                    throw CFException.Create(STDPassworkForgetResult.EmailIncorrect);
                }
                passport.VerificationCode = ALUtils.GetGUIDShort();
                _passportRepository.Modify(passport);
                return(new SYSPassworkForgetDTO(email, passport.LoginName, passport.VerificationCode));
            }
            catch (Exception ex)
            {
                throw CFException.Create(STDPassworkForgetResult.Fail, ex.Message, ex);
            }
        }
Example #5
0
        /// <summary>
        /// 为指定系统颁发新证书
        /// </summary>
        /// <param name="dto"></param>
        /// <exception cref="BIStudio.Framework.DefinedException"></exception>
        public SYSSystemCertificate CertificateIssue(SYSSystemCertificateIssueDTO dto)
        {
            if (string.IsNullOrEmpty(dto.SystemCode) || string.IsNullOrEmpty(dto.ApiKey) || string.IsNullOrEmpty(dto.CertificateName))
            {
                throw CFException.Create(STDCertificateIssueResult.NameOrCodeNotFound);
            }

            try
            {
                SYSSystem system = _systemRepository.Get(item => item.SystemCode == dto.SystemCode);
                if (system.ID == null)
                {
                    throw CFException.Create(STDCertificateIssueResult.SystemCodeInvalid);
                }

                SYSSystemCertificate entity = dto.Map <SYSSystemCertificateIssueDTO, SYSSystemCertificate>();
                var prevCertificate         = _certificateRepository.Get(item => item.ApiKey == dto.ApiKey);
                if (prevCertificate.ID.HasValue)
                {
                    throw CFException.Create(STDCertificateIssueResult.CodeAlreadyExists);
                }

                entity.SystemID  = system.ID;
                entity.ApiKey    = entity.ApiKey;
                entity.Secret    = ALUtils.GetGUIDShort();
                entity.IsValid   = true;
                entity.InputTime = DateTime.Now;
                entity.Inputer   = CFContext.User.UserName;
                entity.InputerID = CFContext.User.ID;
                _certificateRepository.Add(entity);
                return(entity);
            }
            catch (Exception ex)
            {
                throw CFException.Create(STDCertificateIssueResult.Fail, ex.Message, ex);
            }
        }
Example #6
0
 /// <summary>
 /// 在当前位置插入一个片段
 /// </summary>
 /// <param name="fragmentArgument">片段内容</param>
 /// <returns></returns>
 public DBBuilder Append(Func <IDBAdapter, string> fragmentArgument)
 {
     return(Append(ALUtils.GetGUIDShort(), fragmentArgument));
 }