示例#1
0
        public async Task <IActionResult> LoginProvider([FromBody] UserProviderEmailLogin model)
        {
            if (!ModelState.IsValid)
            {
                return(BadModelResponse(ModelState));
            }

            return(Ok(await _loginManager.ProviderLoginEmail(HttpContext, model)));
        }
示例#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);
        }