From a1ec262c042cb706c75a2c62748cccb32a00f9ba Mon Sep 17 00:00:00 2001 From: ManojNathIC Date: Tue, 5 Mar 2024 13:04:56 +0530 Subject: [PATCH] Task #215071 frontend cookie session issue --- .../common-lib/src/services/RestClient.ts | 13 +- .../nulp_elite/src/configs/urlConfig.json | 392 ++++++++++++++++++ packages/nulp_elite/src/pages/Contents.js | 74 +--- 3 files changed, 413 insertions(+), 66 deletions(-) create mode 100644 packages/nulp_elite/src/configs/urlConfig.json diff --git a/packages/common-lib/src/services/RestClient.ts b/packages/common-lib/src/services/RestClient.ts index c25547d5..e1b14b77 100644 --- a/packages/common-lib/src/services/RestClient.ts +++ b/packages/common-lib/src/services/RestClient.ts @@ -2,26 +2,29 @@ import axios from 'axios' export async function get(url: string, headers: any = {}) { return await axios.get(url, { - headers + headers, + withCredentials: true // Include cookies in requests }) } export async function post(url: string, body: any, headers: any = {}) { return await axios.post(url, body, { - headers + headers, + withCredentials: true // Include cookies in requests }) } export async function update(url: string, body: any, headers: any = {}) { return await axios.put(url, body, { - headers + headers, + withCredentials: true // Include cookies in requests }) } export async function distory(url: string, body: any, headers: any = {}) { return await axios.delete(url, { - ...headers, - headers: { ...headers?.headers, 'Access-Control-Allow-Origin': '*' }, + headers, + withCredentials: true, // Include cookies in requests data: body }) } diff --git a/packages/nulp_elite/src/configs/urlConfig.json b/packages/nulp_elite/src/configs/urlConfig.json new file mode 100644 index 00000000..af111d04 --- /dev/null +++ b/packages/nulp_elite/src/configs/urlConfig.json @@ -0,0 +1,392 @@ +{ + "params": { + "userReadParam": { + "fields": "organisations,roles,locations,declarations,externalIds" + }, + "LibrarySearchField": [ + "name", + "appIcon", + "mimeType", + "gradeLevel", + "medium", + "board", + "subject", + "resourceType", + "contentType", + "organisation" + ], + "CourseSearchField": [ + "name", + "appIcon", + "medium", + "subject", + "resourceType", + "contentType", + "organisation", + "topic", + "mimeType", + "trackable", + "gradeLevel", + "se_boards", + "se_subjects", + "se_mediums", + "se_gradeLevels" + ], + "programSearch": { + "fields": "rootOrgId,rootOrgName" + }, + "contentGet": "transcripts,ageGroup,appIcon,artifactUrl,attributions,attributions,audience,author,badgeAssertions,board,body,channel,code,concepts,contentCredits,contentType,contributors,copyright,copyrightYear,createdBy,createdOn,creator,creators,description,displayScore,domain,editorState,flagReasons,flaggedBy,flags,framework,gradeLevel,identifier,itemSetPreviewUrl,keywords,language,languageCode,lastUpdatedOn,license,mediaType,medium,mimeType,name,originData,osId,owner,pkgVersion,publisher,questions,resourceType,scoreDisplayConfig,status,streamingUrl,subject,template,templateId,totalQuestions,totalScore,versionKey,visibility,year,primaryCategory,additionalCategories,interceptionPoints,interceptionType", + "questionSetRead": "instructions", + "enrolledCourses": { + "fields": "contentType,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,primaryCategory,organisation", + "batchDetails": "name,endDate,startDate,status,enrollmentType,createdBy,certificates" + }, + "objectCategory": { + "fields": "objectMetadata,forms,name" + } + }, + "URLS": { + "LEARNER_PREFIX": "/learner/", + "DISCUSSIONS_FORUM_PREFIX": "/discussion/", + "DEVICE_PREFIX": "/device/", + "CERT_REG_PREFIX": "/certreg/", + "CONTENT_PREFIX": "/content/", + "REPORT_PREFIX": "/report", + "ELECTRON_DIALOG_PREFIX": "/dialog/", + "PUBLIC_PREFIX": "/api/", + "ACTION_PREFIX": "/action/", + "EXT_PLUGIN_PREFIX": "/plugin/", + "ANNOUNCEMENT_PREFIX": "/announcement/v1", + "TENANT_PREFIX": "/v1/tenant", + "RESOURCEBUNDLES_PREFIX": "resourcebundles/v1", + "DEVICE_REGISTER": "v3/device/register/", + "PAGE_PREFIX": "data/v1/page/assemble", + "DIAL_ASSEMBLE_PREFIX": "data/v1/dial/assemble", + "GET_GENERALISED_RESOURCE": "getGeneralisedResourcesBundles", + "OBSERVATION_PREFIX": "/assessment/", + "KENDRA_PREFIX": "/kendra/", + "DHITI_PREFIX": "/dhiti/", + "CLOUD_PREFIX": "/cloudUpload/", + "REPORT": { + "READ": "/get", + "LIST": "/list", + "DATASET_LIST": "/request/list", + "DATASET_SUBMIT_REQUEST": "/request/submit", + "DATASET_REQUEST_READ": "/request/read", + "COLLECTION": "/collection", + "UPDATE": "/update", + "PUBLISH": "/publish", + "RETIRE": "/retire", + "SUMMARY": { + "PREFIX": "/summary", + "CREATE": "/summary/create" + } + }, + "DATASET": { + "READ": "/dataset/get" + }, + "RESOURCEBUNDLES": { + "ENG": "/read" + }, + "REVIEW_COMMENT": { + "READ": "review/comment/v1/read/comment", + "DELETE": "review/comment/v1/delete/comment", + "CREATE": "review/comment/v1/create/comment" + }, + "USER": { + "SIGNUP": "user/v1/create", + "TNC_ACCEPT": "user/v1/tnc/accept", + "UPDATE_USER_PROFILE": "user/v3/update", + "GET_PROFILE": "user/v5/read/", + "GET_PROFILE_V5": "user/v5/read/", + "TENANT_LOGO": "get/tenant/logo", + "SKILLS": "data/v1/skills", + "ENDORSE_SKILLS": "user/v1/skill/endorse/add", + "UPDATE_SKILLS": "user/v1/skill/update", + "USER_SKILLS": "user/v1/skill/read", + "UPDATE_PROF_VIS_FIELDS": "user/v1/profile/visibility", + "GET_USER_BY_KEY": "user/v1/get", + "CHECK_USER_EXISTS": "user/v1/exists", + "CREATE_V2": "user/v2/create", + "SIGN_UP_V1": "user/v2/signup", + "LOCATION_SEARCH": "data/v1/location/search", + "TYPE": "user/v1/type/list", + "VALIDATE_CERTIFICATE": "certreg/v1/certs/validate", + "DOWNLOAD_CERTIFICATE": "certreg/v1/certs/download", + "GET_USER_FEED": "user/v1/feed", + "USER_MIGRATE": "user/v1/migrate", + "TNC_ACCEPT_LOGIN": "user/v2/accept/tnc", + "SIGN_UP_V4": "user/v4/create", + "SIGN_UP_MANAGED_USER": "user/v1/managed/create", + "SWITCH_USER": "user/v1/switch", + "END_SESSION": "endSession", + "GET_MANAGED_USER": "user/v1/managed", + "USER_EXISTS_GET_USER_BY_KEY": "isUserExists/user/v1/get", + "USER_DECLARATION": "user/v1/declarations", + "GET_SESSION": "get/user/sessionId" + }, + "CERTIFICATE": { + "FETCH_CERTIFICATES": "v1/certs/search", + "FETCH_USER": "v1/user/search", + "REISSUE_CERTIFICATE": "v1/cert/reissue", + "ADD_CERTIFICATE": "v1/add/template", + "ATTACH_CERTIFICATE": "v1/template/add", + "CREATE_CERT_TEMPLATE": "asset/v1/create", + "UPLOAD_CERT_TEMPLATE": "asset/v1/upload" + }, + "COMPOSITE": { + "SEARCH": "composite/v1/search", + "SEARCH_IMAGES": "composite/v3/search" + }, + "SYSTEM_SETTING": { + "CUSTODIAN_ORG": "data/v1/system/settings/get/custodianOrgId", + "COMMING_SOON_MESSAGE": "data/v1/system/settings/get/contentComingSoonMsg", + "TNC_CONFIG": "data/v1/system/settings/get/tncConfig", + "SSO_COURSE_SECTION": "data/v1/system/settings/get/ssoCourseSection", + "TENANT_CONFIG": "data/v1/system/settings/get", + "GOOGLE_RECAPTCHA": "data/v1/system/settings/get/googleReCaptcha", + "FAQ_URL": "data/v1/system/settings/get/portalFaqURL", + "TNC_LIST": "data/v1/system/settings/list", + "ORG_ADMIN_URL": "data/v1/system/settings/get/orgAdminTnc", + "GROUPS_TNC": "data/v1/system/settings/get/groupsTnc", + "REPORT_VIEWER_TNC": "data/v1/system/settings/get/reportViewerTnc" + }, + "COURSE_FRAMEWORK": { + "COURSE_FRAMEWORKID": "data/v1/system/settings/get/courseFrameworkId" + }, + "COURSE": { + "SEARCH": "course/v1/search", + "HIERARCHY": "course/v1/hierarchy", + "USER_CONTENT_STATE_READ": "course/v1/content/state/read", + "USER_CONTENT_STATE_UPDATE": "course/v1/content/state/update", + "GET_ENROLLED_COURSES": "course/v1/user/enrollment/list", + "ENROLL_USER_COURSE": "course/v1/enrol", + "RECOMMENDED_COURSE": "recommended/courses", + "UNENROLL_USER_COURSE": "course/v1/unenrol", + "GET_QR_CODE_FILE": "course/v1/qrcode/download", + "GET_REPORTS_METADATA": "course-reports/metadata" + }, + "CONTENT": { + "SEARCH": "content/v1/search", + "CREATE": "content/v1/create", + "PUBLISH": "content/v1/publish", + "GET": "content/v1/read", + "RETIRE": "content/v1/retire", + "REJECT": "content/v1/reject", + "FLAG": "content/v1/flag", + "UPLOAD": "content/v1/upload", + "ACCEPT_FLAG": "content/v1/flag/accept", + "DISCARD_FLAG": "content/v1/flag/reject", + "COPY": "content/v1/copy", + "LOCK_LIST": "lock/v1/list", + "LOCK_CREATE": "lock/v1/create", + "LOCK_RETIRE": "lock/v1/retire", + "UPDATE": "content/v3/update", + "REVIEW": "content/v3/review", + "HIERARCHY_ADD": "content/v3/hierarchy/add", + "HIERARCHY_REMOVE": "content/v3/hierarchy/remove", + "COPY_AS_COURSE": "course/v1/create" + }, + "DASHBOARD": { + "ORG_CREATION": "dashboard/v1/creation/org", + "ORG_CONSUMPTION": "dashboard/v1/consumption/org", + "COURSE_PROGRESS": "dashboard/v1/progress/course", + "COURSE_CONSUMPTION": "dashboard/v1/consumption/course", + "COURSE_PROGRESS_V2": "dashboard/v2/progress/course" + }, + "DEVICE": { + "REGISTER": "register/", + "PROFILE": "profile/" + }, + "ROLES": { + "READ": "data/v1/role/read" + }, + "BATCH": { + "CREATE": "course/v1/batch/create", + "UPDATE": "course/v1/batch/update", + "ADD_USERS": "course/v1/admin/enroll", + "GET_DETAILS": "course/v1/batch/read", + "GET_PARTICIPANT_LIST": "course/v1/batch/participants/list", + "GET_BATCHS": "course/v1/batch/list", + "REMOVE_USERS": "course/v1/admin/unenroll", + "COURSE_PROGRESS_EXHAUST": "course/v1/progress/reports", + "COURSE_PROGRESS_EXHAUST_CSV": "course/v1/progress/reports/csv" + }, + "ADMIN": { + "USER_SEARCH": "user/v3/search", + "ORG_SEARCH": "org/v2/search", + "ORG_SEARCH_OLD": "org/v2/search", + "ORG_CREATE": "org/v1/create", + "ORG_EXT_SEARCH": "org/v2/search", + "BULK": { + "USERS_UPLOAD": "user/v1/upload", + "ORGANIZATIONS_UPLOAD": "org/v1/upload", + "STATUS": "data/v1/upload/status" + }, + "DELETE_USER": "user/v1/block", + "UNDELETE_USER": "user/v1/unblock", + "UPDATE_USER_ORG_ROLES": "user/v1/role/assign" + }, + "BADGE": { + "GET": "org/v1/badges/list", + "ASSIGN": "user/v1/badges/add", + "CREATE": "badging/v1/issuer/badge/assertion/create", + "BADGE_CLASS_SEARCH": "badging/v1/issuer/badge/search" + }, + "ORG_TYPE": { + "GET": "org/v1/type/list", + "ADD": "org/v1/type/create", + "UPDATE": "org/v1/type/update" + }, + "ANNOUNCEMENT": { + "OUTBOX_LIST": "/user/outbox", + "INBOX_LIST": "/user/inbox", + "CREATE": "/create", + "GET_BY_ID": "/get", + "RESEND": "/resend", + "DEFINITIONS": "/definitions", + "READ": "/read", + "RECEIVED": "/received", + "CANCEL": "/cancel" + }, + "TENANT": { + "INFO": "/info" + }, + "CHANNEL": { + "READ": "channel/v1/read" + }, + "FRAMEWORK": { + "READ": "framework/v1/read" + }, + "dataDrivenForms": { + "READ": "data/v1/form/read" + }, + "GEO_EXPLORER": { + "LOCATION_READ": "org/v1/location/read" + }, + "CONTENT_COLLECTION": "application/vnd.ekstep.content-collection", + "LOCATION_READ": "org/v1/location/read", + "TELEMETRY": { + "APISLUG": "service/v1/content/", + "SYNC": "data/v1/telemetry" + }, + "OTP": { + "GENERATE": "otp/v1/generate", + "VERIFY": "otp/v1/verify", + "ANONYMOUS": { + "GENERATE": "anonymous/otp/v1/generate" + } + }, + "OFFLINE": { + "DOWNLOAD": "content/v1/download", + "DOWNLOAD_LIST": "content/v1/download/list", + "EXPORT": "content/v1/export", + "UPDATE": "content/v1/update", + "APP_UPDATE": "desktop/v1/update", + "RESUME_IMPORT": "content/v1/import/resume", + "CANCEL_IMPORT": "content/v1/import/cancel", + "PAUSE_IMPORT": "content/v1/import/pause", + "RETRY_IMPORT": "content/v1/import/retry", + "REPORT_OTHER_ISSUE": "help/v1/report/issue", + "READ_FAQ": "faqs/v1/read", + "CREATE_USER": "desktop/user/v1/create", + "UPDATE_USER": "desktop/user/v1/update", + "READ_USER": "desktop/user/v1/read", + "LOCATION_SAVE": "data/v1/location/save", + "LOCATION_READ": "data/v1/location/read", + "APP_INFO": "app/v1/info", + "SYSTEM_INFO": "desktop/v1/system-info", + "RESUME_DOWNLOAD": "content/v1/download/resume", + "CANCEL_DOWNLOAD": "content/v1/download/cancel", + "PAUSE_DOWNLOAD": "content/v1/download/pause", + "RETRY_DOWNLOAD": "content/v1/download/retry", + "DELETE_CONTENT": "content/v1/delete", + "TELEMTRY_INFO": "telemetry/v1/info", + "EXPORT_TELEMETRY": "telemetry/v1/export", + "IMPORT_TELEMETRY": "telemetry/v1/import", + "IMPORT_TELEMETRY_LIST": "telemetry/v1/list", + "TELEMTRY_CONFIG": "telemetry/v1/config", + "TELEMETRY_IMPORT_RETRY": "telemetry/v1/import/retry", + "TELEMETRY_SYNC": "desktop/v1/sync", + "LOGIN": "login" + }, + "ACCOUNT_RECOVERY": { + "FUZZY_SEARCH": "user/v1/fuzzy/search", + "RESET_PASSWORD": "user/v1/password/reset" + }, + "ELECTRON_DIALOG": { + "CONTENT_IMPORT": "content/import", + "CONTENT_EXPORT": "content/export", + "TELEMETRY_EXPORT": "telemetry/export", + "TELEMETRY_IMPORT": "telemetry/import" + }, + "CONTRIBUTION_PROGRAMS": { + "SEARCH": "program/v1/search" + }, + "ASSESSMENT": { + "CREATE": "assessment/v3/items/create", + "READ": "assessment/v3/items/read", + "UPDATE": "assessment/v3/items/update", + "RETIRE": "assessment/v3/itemsets/retire" + }, + "ASSET": { + "CREATE": "content/v3/create", + "UPDATE": "content/v3/upload" + }, + "ITEMSET": { + "CREATE": "itemset/v3/create", + "UPDATE": "itemset/v3/update", + "READ": "itemset/v3/read", + "RETIRE": "itemset/v3/retire", + "REVIEW": "itemset/v3/review" + }, + "RECAPTCHA": { + "VALIDATE": "/validate/recaptcha" + }, + "TENANT_PREFERENCE": { + "READ": "org/v2/preferences/read" + }, + "QUESTIONSET": { + "CREATE": "questionset/v1/create", + "READ": "questionset/v1/read", + "HIERARCHY_READ": "questionset/v1/hierarchy" + }, + "OBJECTCATEGORY": { + "READ": "object/category/definition/v1/read" + }, + "OBSERVATION": { + "OBSERVATION_ENTITIES": "observations/mlsurvey/v1/entities", + "GET_OBSERVATION_SUBMISSIONS": "observationSubmissions/mlsurvey/v1/list/", + "SEARCH_ENTITY": "observations/mlsurvey/v1/searchEntities", + "OBSERVATION_UPDATE_ENTITES": "observations/mlsurvey/v1/updateEntities/", + "OBSERVATION_SUBMISSION_CREATE": "observationSubmissions/mlsurvey/v1/create/", + "OBSERVATION_LISTING": "solutions/mlcore/v1/targetedSolutions?type=observation", + "MANDATORY_ENTITY_TYPES_FOR_ROLES": "entities/mlcore/v1/entityTypesByLocationAndRole/", + "OBSERVATION_SUBMISSION_UPDATE": "observationSubmissions/mlsurvey/v1/update/", + "GET_ASSESSMENT": "observations/mlsurvey/v1/assessment/", + "OBSERVATION_REPORT_SOLUTION_LIST": "observationSubmissions/mlsurvey/v1/solutionList?" + }, + "KENDRA": { + "TARGETTED_ENTITY_TYPES": "users/mlcore/v1/targetedEntity/", + "PRESIGNED_URLS": "cloud-services/mlcore/v1/files/preSignedUrls", + "PROGRAMS_BY_PLATFORM_ROLES": "user-extension/mlcore/v1/programsByPlatformRoles", + "SOLUTIONS_BY_PROGRAMID": "user-extension/mlcore/v1/solutions", + "DISTRICTS_AND_ORGANISATIONS": "solutions/mlcore/v1/read" + }, + "DHITI": { + "GENERIC_REPORTS": "reports/mlreports/v1/fetch", + "ALL_EVIDENCE": "observations/mlsurvey/v1/listAllEvidences" + }, + "UCI": "/uci", + "ORGANIZATION": { + "READ": "org/v1/read", + "MEMBERADD": "org/v1/member/add", + "UPDATE": "org/v1/update", + "STATUSUPDATE": "org/v1/status/update", + "UPDATEPATCH": "channel/v1/update", + "FORMCREATEORG": "data/v1/form/create", + "MEMBERREMOVE": "org/v1/member/remove", + "PREFERENCES_CREATE": "org/v2/preferences/create" + } + } +} diff --git a/packages/nulp_elite/src/pages/Contents.js b/packages/nulp_elite/src/pages/Contents.js index 97ae95ad..b657ddcf 100644 --- a/packages/nulp_elite/src/pages/Contents.js +++ b/packages/nulp_elite/src/pages/Contents.js @@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react"; import axios from "axios"; import { Box, Heading, Text, Button } from "@chakra-ui/react"; import { contentService } from "@shiksha/common-lib"; +import URLSConfig from "../configs/urlConfig.json"; const Contents = () => { const [data, setData] = useState([]); const [filters, setFilters] = useState({}); @@ -17,72 +18,35 @@ const Contents = () => { let data = JSON.stringify({ request: { filters: { - primaryCategory: [ + status: ["Live"], + contentType: [ "Collection", - "Resource", - "Content Playlist", + "TextBook", "Course", - "Course Assessment", - "Digital Textbook", - "eTextbook", - "Explanation Content", - "Learning Resource", - "Lesson Plan Unit", - "Practice Question Set", - "Teacher Resource", - "Textbook Unit", "LessonPlan", - "FocusSpot", - "Learning Outcome Definition", - "Curiosity Questions", - "MarkingSchemeRubric", + "Resource", + "SelfAssess", + "PracticeResource", + "LearningOutcomeDefinition", "ExplanationResource", "ExperientialResource", - "Practice Resource", + "eTextBook", "TVLesson", - "Course Unit", - "Exam Question", ], - visibility: ["Default", "Parent"], }, - limit: 100, + offset: null, sort_by: { - lastPublishedOn: "desc", + lastUpdatedOn: "desc", }, - fields: [ - "name", - "appIcon", - "mimeType", - "gradeLevel", - "identifier", - "medium", - "pkgVersion", - "board", - "subject", - "resourceType", - "primaryCategory", - "contentType", - "channel", - "organisation", - "trackable", - ], - facets: [ - "se_boards", - "se_gradeLevels", - "se_subjects", - "se_mediums", - "primaryCategory", - ], - offset: 0, }, }); // Headers const headers = { "Content-Type": "application/json", - Cookie: `connect.sid=${getCookieValue("connect.sid")}`, }; - const url = `https://nulp.niua.org/api/content/v1/search?orgdetails=orgName,email&licenseDetails=name,description,url`; + + const url = `http://localhost:3000/content/${URLSConfig.URLS.CONTENT.SEARCH}?orgdetails=orgName,email`; try { const response = await contentService.getAllContents( url, @@ -105,18 +69,6 @@ const Contents = () => { const handleFilterChange = (field, value) => { setFilters({ ...filters, [field]: value }); }; - // Function to get cookie value by name - const getCookieValue = (name) => { - const cookies = document.cookie.split("; "); - for (let i = 0; i < cookies.length; i++) { - const cookie = cookies[i]; - const [cookieName, cookieValue] = cookie.split("="); - if (cookieName === name) { - return cookieValue; - } - } - return ""; - }; return (