private async Task GetMembership(GetMembershipDto dto) { if (!Request.IsAuthenticatedWithLti()) { dto.StatusCode = StatusCodes.Status401Unauthorized; return; } var ltiRequest = await Request.ParseLtiRequestAsync(); var signature = ltiRequest.GenerateSignature("secret"); if (!ltiRequest.Signature.Equals(signature)) { dto.StatusCode = StatusCodes.Status401Unauthorized; return; } if (dto.Role == Role.Learner) { dto.MembershipContainerPage = GetMembershipPage2(dto); } else { dto.MembershipContainerPage = dto.Page.HasValue ? GetMembershipPage2(dto) : GetMembershipPage1(dto); } dto.StatusCode = StatusCodes.Status200OK; }
private MembershipContainerPage GetMembershipPage1(GetMembershipDto dto) { return(new MembershipContainerPage { Id = new Uri(Request.GetUri(), $"/ims/membership/1422554502{dto.Page}"), NextPage = dto.Page.HasValue ? null : new Uri(Request.GetUri(), "/ims/membership?page=2").AbsoluteUri, Differences = new Uri(Request.GetUri(), "/ims/membership?x=1422554502").AbsoluteUri, MembershipContainer = new MembershipContainer { MembershipSubject = new Context { ContextId = "2923-abc", Membership = new[] { new NetCore.Lis.v2.Membership { Member = new Person { SourcedId = "school.edu:user", UserId = $"0ae836b9-7fc9-4060-006f-27b2066ac545{dto.Page}", Email = "*****@*****.**", FamilyName = "Public", Name = "Jane Q. Public", Image = new Uri("http://imsglobal.org/favicon.ico"), GivenName = "Jane" }, Message = new [] { new { message_type = "basic-lti-launch-request", lis_result_sourcedid = "83873872987329873264783687634", ext = new { user_username = "******" }, custom = new { country = "Canada", user_mobile = "123-456-7890" } } }, Role = new [] { Role.Instructor } } } } } }); }