/// <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); } }
/// <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); }
public SYSAccessToken(long appid) : this() { this.access_token = ALUtils.GetGUIDShort(); this.token_type = "bearer"; this.expires_in = 60 * 60 * 24; this.system_id = appid; }
/// <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); } }
/// <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); } }
/// <summary> /// 在当前位置插入一个片段 /// </summary> /// <param name="fragmentArgument">片段内容</param> /// <returns></returns> public DBBuilder Append(Func <IDBAdapter, string> fragmentArgument) { return(Append(ALUtils.GetGUIDShort(), fragmentArgument)); }