feat: better err reporting & init private endpoint

This commit is contained in:
swve 2023-04-09 01:36:47 +02:00
parent 8f8257b9e7
commit 6137c907d2
4 changed files with 30 additions and 9 deletions

View file

@ -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() {
try {
const courseChapters = await getCourseChaptersMetadata(courseid); const courseChapters = await getCourseChaptersMetadata(courseid);
setData(courseChapters); setData(courseChapters);
console.log("courseChapters", 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 {" "}

View file

@ -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;
} }

View file

@ -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")

View file

@ -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 = []