Пример #1
0
        public Activity GetAuthResponse()
        {
            ProviderTokenResponse providerTokenResponse = new ProviderTokenResponse();

            providerTokenResponse.TokenResponse = new TokenResponse(token: "test");
            return(new Activity(ActivityTypes.Event, name: "tokens/response", value: providerTokenResponse));
        }
Пример #2
0
        /// <summary>
        /// Login with email model to provider
        /// </summary>
        /// <param name="context">Context</param>
        /// <param name="model">UserProviderEmailLogin model</param>
        /// <returns></returns>
        public async Task <ProviderTokenResponse> ProviderLoginEmail(HttpContext context, UserProviderEmailLogin model)
        {
            var user = await _appUserManager.FindByEmailAsync(model.Email);

            if (user == null || !(await _appUserManager.CheckPasswordAsync(user, model.Password)))
            {
                throw new LoginFailedException(model.Email);
            }

            var provider = await _providerRepository.GetFirst(x => x.Id == model.ProviderId && x.State == MREntityState.Active);

            if (provider == null)
            {
                throw new EntityNotFoundException(model.ProviderId, typeof(Provider));
            }

            if (!provider.IsLoginEnabled)
            {
                throw new ProviderUnavaliableException(provider.Name);
            }

            var response = new ProviderTokenResponse
            {
                Token = _createShortLiveToken(user, provider)
            };

            response.RedirectUrl = _createRedirectUrl(provider, response.Token);

            return(response);
        }
Пример #3
0
        /// <summary>
        /// Instant login to provider
        /// </summary>
        /// <param name="context">Context</param>
        /// <param name="providerId">Provider id</param>
        /// <returns></returns>
        public async Task <ProviderTokenResponse> ProviderLoginInstant(HttpContext context, string providerId)
        {
            var user = await GetCurrentUser();

            if (user == null)
            {
                throw new AccessDeniedException(string.Empty, typeof(AppUser), "Authorization required");
            }

            var provider = await _providerRepository.GetFirst(x => x.Id == providerId && x.State == MREntityState.Active);

            if (provider == null)
            {
                throw new MRSystemException("Provider not found");
            }

            if (!provider.IsLoginEnabled)
            {
                throw new ProviderUnavaliableException(provider.Name);
            }

            var response = new ProviderTokenResponse
            {
                Token = _createShortLiveToken(user, provider)
            };

            response.RedirectUrl = _createRedirectUrl(provider, response.Token);

            return(response);
        }
        /// <summary>
        /// Process token
        /// </summary>
        /// <param name="response">Provider token response</param>
        /// <param name="securityToken">Provider token deta</param>
        /// <returns></returns>
        private string ProcessToken(ProviderTokenResponse response, JwtSecurityToken securityToken)
        {
            var email = securityToken.Claims.FirstOrDefault(c => c.Type == "email").Value ?? "";
            var refreshTokenResponse = this.refreshTokenRespository.GetRefreshTokenByEmailAndProvider(email, securityToken.Issuer);

            if (string.IsNullOrWhiteSpace(response.RefreshToken))
            {
                return(refreshTokenResponse?.RefreshToken ?? "");
            }
            else
            {
                var entity = new TokenRefreshEntity
                {
                    RefreshToken = response.RefreshToken,
                    Provider     = securityToken.Issuer,
                    Email        = email,
                    DateUpdated  = DateTime.Now
                };
                if (refreshTokenResponse == null)
                {
                    refreshTokenResponse = this.refreshTokenRespository.InsertRefreshToken(entity);
                    return(entity.RefreshToken);
                }
                else
                {
                    entity.Id            = refreshTokenResponse.Id;
                    refreshTokenResponse = this.refreshTokenRespository.UpdateRefreshToken(entity);
                    return(entity.RefreshToken);
                }
            }
        }
Пример #5
0
 public Activity GetAuthResponse()
 {
     ProviderTokenResponse providerTokenResponse = new ProviderTokenResponse
     {
         TokenResponse = new TokenResponse(token: "test"),
         AuthenticationProvider = OAuthProvider.AzureAD
     };
     return new Activity(ActivityTypes.Event, name: "tokens/response", value: providerTokenResponse);
 }