mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
feat: better err reporting & init private endpoint
This commit is contained in:
parent
8f8257b9e7
commit
6137c907d2
4 changed files with 30 additions and 9 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
"use client";
|
"use client";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import { useState, useEffect } from "react";
|
import { useState, useEffect } from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { Title } from "@components/UI/Elements/Styles/Title";
|
import { Title } from "@components/UI/Elements/Styles/Title";
|
||||||
|
|
@ -16,6 +17,8 @@ import Modal from "@components/UI/Modal/Modal";
|
||||||
import AuthProvider from "@components/Security/AuthProvider";
|
import AuthProvider from "@components/Security/AuthProvider";
|
||||||
|
|
||||||
function CourseEdit(params: any) {
|
function CourseEdit(params: any) {
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
// Initial Course State
|
// Initial Course State
|
||||||
const [data, setData] = useState(initialData2) as any;
|
const [data, setData] = useState(initialData2) as any;
|
||||||
|
|
||||||
|
|
@ -31,9 +34,14 @@ function CourseEdit(params: any) {
|
||||||
const orgslug = params.params.orgslug;
|
const orgslug = params.params.orgslug;
|
||||||
|
|
||||||
async function getCourseChapters() {
|
async function getCourseChapters() {
|
||||||
const courseChapters = await getCourseChaptersMetadata(courseid);
|
try {
|
||||||
setData(courseChapters);
|
const courseChapters = await getCourseChaptersMetadata(courseid);
|
||||||
console.log("courseChapters", courseChapters);
|
setData(courseChapters);
|
||||||
|
} catch (error: any) {
|
||||||
|
if (error.status === 401) {
|
||||||
|
router.push("/login");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -226,7 +234,6 @@ function CourseEdit(params: any) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<AuthProvider />
|
|
||||||
<Page>
|
<Page>
|
||||||
<Title>
|
<Title>
|
||||||
Edit Course {" "}
|
Edit Course {" "}
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,15 @@ import { RequestBody } from "@services/utils/requests";
|
||||||
|
|
||||||
//TODO : depreciate this function
|
//TODO : depreciate this function
|
||||||
export async function getCourseChaptersMetadata(course_id: any) {
|
export async function getCourseChaptersMetadata(course_id: any) {
|
||||||
const data: any = await fetch(`${getAPIUrl()}chapters/meta/course_${course_id}`, RequestBody("GET", null))
|
const response = await fetch(`${getAPIUrl()}chapters/meta/course_${course_id}`, RequestBody("GET", null));
|
||||||
.then((result) => result.json())
|
|
||||||
.catch((error) => console.log("error", error));
|
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error: any = new Error(`Error ${response.status}: ${response.statusText}`, {});
|
||||||
|
error.status = response.status;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -20,7 +25,7 @@ export async function updateChaptersMetadata(course_id: any, data: any) {
|
||||||
const result: any = await fetch(`${getAPIUrl()}chapters/meta/course_${course_id}`, RequestBody("PUT", data))
|
const result: any = await fetch(`${getAPIUrl()}chapters/meta/course_${course_id}`, RequestBody("PUT", data))
|
||||||
.then((result) => result.json())
|
.then((result) => result.json())
|
||||||
.catch((error) => console.log("error", error));
|
.catch((error) => console.log("error", error));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,4 +90,6 @@ async def get_current_user(request: Request, Authorize: AuthJWT = Depends()):
|
||||||
else:
|
else:
|
||||||
return AnonymousUser()
|
return AnonymousUser()
|
||||||
|
|
||||||
|
async def non_public_endpoint(current_user: PublicUser ):
|
||||||
|
if isinstance(current_user, AnonymousUser):
|
||||||
|
raise HTTPException(status_code=401, detail="Not authenticated")
|
||||||
|
|
@ -4,6 +4,7 @@ import pprint
|
||||||
from typing import List
|
from typing import List
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
from src.security.auth import non_public_endpoint
|
||||||
from src.services.courses.courses import Course, CourseInDB
|
from src.services.courses.courses import Course, CourseInDB
|
||||||
from src.services.courses.activities.activities import Activity, ActivityInDB
|
from src.services.courses.activities.activities import Activity, ActivityInDB
|
||||||
from src.security.security import verify_user_rights_with_roles
|
from src.security.security import verify_user_rights_with_roles
|
||||||
|
|
@ -149,10 +150,16 @@ async def get_coursechapters_meta(request: Request, course_id: str, current_user
|
||||||
courses = request.app.db["courses"]
|
courses = request.app.db["courses"]
|
||||||
activities = request.app.db["activities"]
|
activities = request.app.db["activities"]
|
||||||
|
|
||||||
|
await non_public_endpoint(current_user)
|
||||||
|
|
||||||
coursechapters = await courses.find_one({"course_id": course_id}, {"chapters": 1, "chapters_content": 1, "_id": 0})
|
coursechapters = await courses.find_one({"course_id": course_id}, {"chapters": 1, "chapters_content": 1, "_id": 0})
|
||||||
|
|
||||||
coursechapters = coursechapters
|
coursechapters = coursechapters
|
||||||
|
|
||||||
|
if not coursechapters:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_409_CONFLICT, detail="Course does not exist")
|
||||||
|
|
||||||
# activities
|
# activities
|
||||||
coursechapter_activityIds_global = []
|
coursechapter_activityIds_global = []
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue