diff --git a/config/config.yaml b/config/config.yaml index 242fb31c..65532180 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -7,6 +7,7 @@ hosting_config: port: 443 ssl: true use_default_org: false + default_org: learnhouse allowed_origins: - https://learnhouse.app - https://learnhouse.io diff --git a/front/app/_orgs/[orgslug]/(withmenu)/courses/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/courses/page.tsx index ae143509..86706ad1 100644 --- a/front/app/_orgs/[orgslug]/(withmenu)/courses/page.tsx +++ b/front/app/_orgs/[orgslug]/(withmenu)/courses/page.tsx @@ -4,7 +4,7 @@ import { useRouter } from "next/navigation"; import React from "react"; import styled from "styled-components"; import { Title } from "@components/UI/Elements/Styles/Title"; -import { getAPIUrl, getBackendUrl, getUriWithOrg } from "@services/config/config"; +import { getAPIUrl, getBackendUrl, getSelfHostedOption, getUriWithOrg } from "@services/config/config"; import { deleteCourseFromBackend } from "@services/courses/courses"; import useSWR, { mutate } from "swr"; import { swrFetcher } from "@services/utils/requests"; @@ -25,7 +25,7 @@ const CoursesIndexPage = (params: any) => { function removeCoursePrefix(course_id: string) { return course_id.replace("course_", ""); } - + return ( <> @@ -44,8 +44,8 @@ const CoursesIndexPage = (params: any) => { <button style={{ backgroundColor: "red", border: "none" }} onClick={() => deleteCourses(course.course_id)}> Delete <Trash size={10}></Trash> </button> - <Link href={getUriWithOrg(orgslug,"") + "/course/" + removeCoursePrefix(course.course_id)}> - <Link href={getUriWithOrg(orgslug,"") + "/course/" + removeCoursePrefix(course.course_id) + "/edit"}> + <Link href={getUriWithOrg(orgslug, "/course/" + removeCoursePrefix(course.course_id))}> + <Link href={getUriWithOrg(orgslug, "/course/" + removeCoursePrefix(course.course_id) + "/edit")}> <button> Edit <Edit2 size={10}></Edit2> </button> diff --git a/front/middleware.ts b/front/middleware.ts index 15a48cbc..56fd95cd 100644 --- a/front/middleware.ts +++ b/front/middleware.ts @@ -20,8 +20,8 @@ export default function middleware(req: NextRequest) { const isSelfHosted = getSelfHostedOption(); const hostname = req.headers.get("host") || "learnhouse.app"; let currentHost = hostname.replace(".localhost:3000", ""); - - if (!isSelfHosted && currentHost === ("localhost:3000")) { + + if (!isSelfHosted && currentHost === "localhost:3000" && !url.pathname.startsWith("/organizations")) { // Redirect to error page if not self-hosted and on localhost const errorUrl = "/error"; return NextResponse.redirect(errorUrl, { status: 302 }); @@ -33,7 +33,11 @@ export default function middleware(req: NextRequest) { } if (url.pathname.startsWith("/organizations")) { + if (!isSelfHosted) { + currentHost = ""; + } url.pathname = url.pathname.replace("/organizations", `/organizations${currentHost}`).replace("localhost:3000", ""); + return NextResponse.rewrite(url); } diff --git a/front/services/config/config.ts b/front/services/config/config.ts index 08ee743a..b8352c0d 100644 --- a/front/services/config/config.ts +++ b/front/services/config/config.ts @@ -2,13 +2,12 @@ const LEARNHOUSE_API_URL = "http://localhost:1338/api/"; const LEARNHOUSE_BACKEND_URL = "http://localhost:1338/"; export const getAPIUrl = () => LEARNHOUSE_API_URL; - export const getBackendUrl = () => LEARNHOUSE_BACKEND_URL; - -export const getSelfHostedOption = () => false; +export const getSelfHostedOption = () => (process.env.NEXT_PUBLIC_LEARNHOUSE_SELF_HOSTED === "true" ? true : false); export const getUriWithOrg = (orgslug: string, path: string) => { const selfHosted = getSelfHostedOption(); + if (selfHosted) { return `http://localhost:3000${path}`; } @@ -20,16 +19,16 @@ export const getOrgFromUri = () => { if (selfHosted) { getDefaultOrg(); } else { - const hostname = window.location.hostname; - // get the orgslug from the hostname - const orgslug = hostname.split(".")[0]; - return orgslug; + if (typeof window !== "undefined") { + const hostname = window.location.hostname; + return hostname.replace(".localhost:3000", ""); + } } }; export const getDefaultOrg = () => { const selfHosted = getSelfHostedOption(); if (selfHosted) { - return "test"; + return process.env.NEXT_PUBLIC_LEARNHOUSE_DEFAULT_ORG; } };