コード例 #1
0
        public async Task <GetChallengeLinkResponse> ExecuteAsync(GenerateContextRequest request)
        {
            var challengeContext = _identitiesProvider.GenerateContext();
            var nonce            = _identitiesProvider.GenerateNonce();

            // classic flow is not supported
            request.IsPartial = true;

            string   did     = null;
            string   payload = null;
            FlowType flowType;

            switch (request.Type)
            {
            case ChallengeType.Register:
            case ChallengeType.Login:
                flowType = !request.IsPartial ? FlowType.Authorize : FlowType.PartialAuthorize;
                break;

            case ChallengeType.Link:
                var state = await GetLinkState(request.Payload?.ToString());

                if (state.ConnectedDevicesCount >= _configuration.MaximumNumberOfConnectedDevices)
                {
                    return(new GetChallengeLinkResponse(default, _urlProvider.GetWebAppConnectionsUrl().ToString(),
                                                        default, default, _magicLinkEnabled));
                }

                did      = state.DID;
                flowType = request.IsQr ? FlowType.LinkWithPin : FlowType.Link;
                break;