Example #1
0
        public IActionResult GetNewPlatform(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "new-platform")] HttpRequest req,
            [LtiAdvantage] LtiToolPublicKey publicKey)
        {
            if (!ValidatePermission(req))
            {
                return(new UnauthorizedResult());
            }

            string platformId = GeneratePlatformID();

            PlatformDto platformDto = new PlatformDto
            {
                Id        = platformId,
                LoginUrl  = $"{ConnectApiBaseUrl}/oidc-login/{platformId}",
                LaunchUrl = $"{ConnectApiBaseUrl}/lti-advantage-launch/{platformId}",
                PublicKey = publicKey.PemString,

                ToolJwk       = JsonConvert.SerializeObject(publicKey.Jwk),
                ToolJwkSetUrl = $"{ConnectApiBaseUrl}/jwks/{platformId}",
                DomainUrl     = new Uri(ConnectApiBaseUrl).Authority
            };

            return(new OkObjectResult(platformDto));
        }
Example #2
0
        public IActionResult Jwks(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "jwks/{platformId}")] HttpRequest req,
            [LtiAdvantage] LtiToolPublicKey publicKey
            )
        {
            var jwks = new JsonWebKeySet();

            jwks.Keys.Add(publicKey.Jwk);
            return(new OkObjectResult(jwks));
        }
Example #3
0
        public IActionResult GetPlatform(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "platforms/{platformId}")] HttpRequest req,
            [LtiAdvantage] LtiToolPublicKey publicKey,
            [Table(PlatformsTableName, "{platformId}", "{platformId}")] PlatformEntity platformEntity)
        {
            if (!ValidatePermission(req))
            {
                return(new UnauthorizedResult());
            }

            PlatformDto platformDto = _mapper.Map <PlatformDto>(platformEntity);

            platformDto.PublicKey = publicKey.PemString;
            platformDto.ToolJwk   = JsonConvert.SerializeObject(publicKey.Jwk);

            return(new OkObjectResult(platformDto));
        }
Example #4
0
        public async Task <IActionResult> GetAllRegisteredPlatforms(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "platforms")] HttpRequest req,
            [LtiAdvantage] LtiToolPublicKey publicKey,
            [Table(PlatformsTableName)] CloudTable table)
        {
            if (!ValidatePermission(req))
            {
                return(new UnauthorizedResult());
            }

            _logger.LogInformation("Getting all the registered platforms.");

            List <PlatformDto> platforms = new List <PlatformDto>();

            TableQuery <PlatformEntity> emptyQuery        = new TableQuery <PlatformEntity>();
            TableContinuationToken      continuationToken = null;

            do
            {
                TableQuerySegment <PlatformEntity> querySegmentResult = await table.ExecuteQuerySegmentedAsync(emptyQuery, continuationToken);

                continuationToken = querySegmentResult.ContinuationToken;

                IEnumerable <PlatformDto> platformDtos = querySegmentResult
                                                         .Results
                                                         .Select(_mapper.Map <PlatformDto>)
                                                         .Do(dto => {
                    dto.PublicKey = publicKey.PemString;
                    dto.ToolJwk   = JsonConvert.SerializeObject(publicKey.Jwk);
                });

                platforms.AddRange(platformDtos);
            } while (continuationToken != null);

            return(new OkObjectResult(platforms));
        }