public async Task <MobileConnectSiAuthorizeResult> SiAuthorize(MobileConnectSiAuthorizeSettings settings)
        {
            var processor =
                _processorsFactory
                .CreateProcessor <MobileConnectSiAuthorizeProcessor>(_client, settings);

            var result = await processor.ProcessAndGetResult() as MobileConnectSiAuthorizeResult;

            return(result);
        }
Beispiel #2
0
        public async Task <ActionResult> Authorize(MobileConnectAuthorizeModel model)
        {
            if (string.IsNullOrEmpty(model.PhoneNumber) ||
                string.IsNullOrEmpty(model.RedirectUrl) ||
                string.IsNullOrEmpty(model.NotificationUri) ||
                string.IsNullOrEmpty(model.DiscoveryUrl) ||
                string.IsNullOrEmpty(model.DiscoveryClientId) ||
                string.IsNullOrEmpty(model.DiscoveryPassword) ||
                string.IsNullOrEmpty(model.PrivateRsaKeyPath))
            {
                return(Content("Fill all fields"));
            }

            var authorizeSettings = new MobileConnectSiAuthorizeSettings
            {
                PhoneNumber       = model.PhoneNumber,
                RedirectUrl       = model.RedirectUrl,
                NotificationUri   = model.NotificationUri,
                DiscoveryUrl      = model.DiscoveryUrl,
                DiscoveryClientId = model.DiscoveryClientId,
                DiscoveryPassword = model.DiscoveryPassword,
                PrivateRsaKeyPath = model.PrivateRsaKeyPath
            };

            var authorizeResult = await _mobileConnectService.SiAuthorize(authorizeSettings);

            if (!authorizeResult.IsSucceeded)
            {
                MobileConnectAuthorizeLogger.Warn(
                    $"Authorize [authReqId: {authorizeResult.AuthReqId}, correlationId: {authorizeResult.CorrelationId}]. authorizeResult is not succeeded");
                MobileConnectAuthorizeLogger.Warn(authorizeResult.ToString());
            }

            var mobileConnectRequest = new MobileConnectAuthorizeRequest
            {
                PhoneNumber             = model.PhoneNumber,
                ClientNotificationToken = authorizeResult.ClientNotificationToken,
                AuthReqId            = authorizeResult.AuthReqId,
                CorrelationId        = authorizeResult.CorrelationId,
                Nonce                = authorizeResult.Nonce,
                IsResponseSucceeded  = authorizeResult.IsSucceeded,
                ResponseErrorMessage = authorizeResult.ErrorMessage,
                RequestedDateTime    = DateTime.Now
            };

            _repository.CreateMobileConnectAuthorizeRequest(mobileConnectRequest);

            return(PartialView("_MobileConnectAuthorizePartial", authorizeResult));
        }