mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-06-25 07:21:00 +02:00
Add option to hide logout
This commit is contained in:
parent
e4a08c5546
commit
81aada7c0f
@ -198,6 +198,7 @@ services:
|
||||
- NEXT_PUBLIC_NEW_CHAT_DIRECTS_TO_SAME_PERSONA=${NEXT_PUBLIC_NEW_CHAT_DIRECTS_TO_SAME_PERSONA:-false}
|
||||
- NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS:-}
|
||||
- NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS:-}
|
||||
- NEXT_PUBLIC_DISABLE_LOGOUT=${NEXT_PUBLIC_DISABLE_LOGOUT:-}
|
||||
depends_on:
|
||||
- api_server
|
||||
restart: always
|
||||
|
@ -197,6 +197,7 @@ services:
|
||||
- NEXT_PUBLIC_NEW_CHAT_DIRECTS_TO_SAME_PERSONA=${NEXT_PUBLIC_NEW_CHAT_DIRECTS_TO_SAME_PERSONA:-false}
|
||||
- NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS:-}
|
||||
- NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS:-}
|
||||
- NEXT_PUBLIC_DISABLE_LOGOUT=${NEXT_PUBLIC_DISABLE_LOGOUT:-}
|
||||
depends_on:
|
||||
- api_server
|
||||
restart: always
|
||||
|
@ -69,6 +69,7 @@ services:
|
||||
- NEXT_PUBLIC_NEW_CHAT_DIRECTS_TO_SAME_PERSONA=${NEXT_PUBLIC_NEW_CHAT_DIRECTS_TO_SAME_PERSONA:-false}
|
||||
- NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS:-}
|
||||
- NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS:-}
|
||||
- NEXT_PUBLIC_DISABLE_LOGOUT=${NEXT_PUBLIC_DISABLE_LOGOUT:-}
|
||||
depends_on:
|
||||
- api_server
|
||||
restart: always
|
||||
|
@ -69,6 +69,7 @@ services:
|
||||
- NEXT_PUBLIC_NEW_CHAT_DIRECTS_TO_SAME_PERSONA=${NEXT_PUBLIC_NEW_CHAT_DIRECTS_TO_SAME_PERSONA:-false}
|
||||
- NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS:-}
|
||||
- NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS:-}
|
||||
- NEXT_PUBLIC_DISABLE_LOGOUT=${NEXT_PUBLIC_DISABLE_LOGOUT:-}
|
||||
depends_on:
|
||||
- api_server
|
||||
restart: always
|
||||
|
@ -54,6 +54,9 @@ ENV NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_POSITIVE_PRED
|
||||
ARG NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS
|
||||
ENV NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS}
|
||||
|
||||
ARG NEXT_PUBLIC_DISABLE_LOGOUT
|
||||
ENV NEXT_PUBLIC_DISABLE_LOGOUT=${NEXT_PUBLIC_DISABLE_LOGOUT}
|
||||
|
||||
RUN npm run build
|
||||
|
||||
# Step 3. Production image, copy all the files and run next
|
||||
@ -99,6 +102,9 @@ ENV NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_POSITIVE_PRED
|
||||
ARG NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS
|
||||
ENV NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS}
|
||||
|
||||
ARG NEXT_PUBLIC_DISABLE_LOGOUT
|
||||
ENV NEXT_PUBLIC_DISABLE_LOGOUT=${NEXT_PUBLIC_DISABLE_LOGOUT}
|
||||
|
||||
# Note: Don't expose ports here, Compose will handle that for us if necessary.
|
||||
# If you want to run this without compose, specify the ports to
|
||||
# expose via cli
|
||||
|
@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { useState, useRef } from "react";
|
||||
import { useState, useRef, useContext } from "react";
|
||||
import { FiSearch, FiMessageSquare, FiTool, FiLogOut } from "react-icons/fi";
|
||||
import Link from "next/link";
|
||||
import { useRouter } from "next/navigation";
|
||||
@ -9,6 +9,9 @@ import { checkUserIsNoAuthUser, logout } from "@/lib/user";
|
||||
import { BasicSelectable } from "@/components/BasicClickable";
|
||||
import { Popover } from "./popover/Popover";
|
||||
import { FaBrain } from "react-icons/fa";
|
||||
import { LOGOUT_DISABLED } from "@/lib/constants";
|
||||
import { Settings } from "@/app/admin/settings/interfaces";
|
||||
import { SettingsContext } from "./settings/SettingsProvider";
|
||||
|
||||
export function UserDropdown({
|
||||
user,
|
||||
@ -21,6 +24,12 @@ export function UserDropdown({
|
||||
const userInfoRef = useRef<HTMLDivElement>(null);
|
||||
const router = useRouter();
|
||||
|
||||
const combinedSettings = useContext(SettingsContext);
|
||||
if (!combinedSettings) {
|
||||
return null;
|
||||
}
|
||||
const settings = combinedSettings.settings;
|
||||
|
||||
const handleLogout = () => {
|
||||
logout().then((isSuccess) => {
|
||||
if (!isSuccess) {
|
||||
@ -31,7 +40,8 @@ export function UserDropdown({
|
||||
};
|
||||
|
||||
const showAdminPanel = !user || user.role === "admin";
|
||||
const showLogout = user && !checkUserIsNoAuthUser(user.id);
|
||||
const showLogout =
|
||||
user && !checkUserIsNoAuthUser(user.id) && !LOGOUT_DISABLED;
|
||||
|
||||
return (
|
||||
<div className="relative" ref={userInfoRef}>
|
||||
@ -71,27 +81,33 @@ export function UserDropdown({
|
||||
>
|
||||
{!hideChatAndSearch && (
|
||||
<>
|
||||
<Link
|
||||
href="/search"
|
||||
className="flex py-3 px-4 rounded cursor-pointer hover:bg-hover-light"
|
||||
>
|
||||
<FiSearch className="my-auto mr-2 text-lg" />
|
||||
Danswer Search
|
||||
</Link>
|
||||
<Link
|
||||
href="/chat"
|
||||
className="flex py-3 px-4 rounded cursor-pointer hover:bg-hover-light"
|
||||
>
|
||||
<FiMessageSquare className="my-auto mr-2 text-lg" />
|
||||
Danswer Chat
|
||||
</Link>
|
||||
<Link
|
||||
href="/assistants/mine"
|
||||
className="flex py-3 px-4 rounded cursor-pointer hover:bg-hover-light"
|
||||
>
|
||||
<FaBrain className="my-auto mr-2 text-lg" />
|
||||
My Assistants
|
||||
</Link>
|
||||
{settings.search_page_enabled && (
|
||||
<Link
|
||||
href="/search"
|
||||
className="flex py-3 px-4 rounded cursor-pointer hover:bg-hover-light"
|
||||
>
|
||||
<FiSearch className="my-auto mr-2 text-lg" />
|
||||
Danswer Search
|
||||
</Link>
|
||||
)}
|
||||
{settings.chat_page_enabled && (
|
||||
<>
|
||||
<Link
|
||||
href="/chat"
|
||||
className="flex py-3 px-4 rounded cursor-pointer hover:bg-hover-light"
|
||||
>
|
||||
<FiMessageSquare className="my-auto mr-2 text-lg" />
|
||||
Danswer Chat
|
||||
</Link>
|
||||
<Link
|
||||
href="/assistants/mine"
|
||||
className="flex py-3 px-4 rounded cursor-pointer hover:bg-hover-light"
|
||||
>
|
||||
<FaBrain className="my-auto mr-2 text-lg" />
|
||||
My Assistants
|
||||
</Link>
|
||||
</>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{showAdminPanel && (
|
||||
|
@ -17,43 +17,6 @@ interface HeaderProps {
|
||||
}
|
||||
|
||||
export function Header({ user }: HeaderProps) {
|
||||
const router = useRouter();
|
||||
const [dropdownOpen, setDropdownOpen] = useState(false);
|
||||
const dropdownRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const handleLogout = async () => {
|
||||
const response = await logout();
|
||||
if (!response.ok) {
|
||||
alert("Failed to logout");
|
||||
}
|
||||
// disable auto-redirect immediately after logging out so the user
|
||||
// is not immediately re-logged in
|
||||
router.push("/auth/login?disableAutoRedirect=true");
|
||||
};
|
||||
|
||||
// When dropdownOpen state changes, it attaches/removes the click listener
|
||||
useEffect(() => {
|
||||
const handleClickOutside = (e: MouseEvent) => {
|
||||
if (
|
||||
dropdownRef.current &&
|
||||
!dropdownRef.current.contains(e.target as Node)
|
||||
) {
|
||||
setDropdownOpen(false);
|
||||
}
|
||||
};
|
||||
|
||||
if (dropdownOpen) {
|
||||
document.addEventListener("click", handleClickOutside);
|
||||
} else {
|
||||
document.removeEventListener("click", handleClickOutside);
|
||||
}
|
||||
|
||||
// Clean up function to remove listener when component unmounts
|
||||
return () => {
|
||||
document.removeEventListener("click", handleClickOutside);
|
||||
};
|
||||
}, [dropdownOpen]);
|
||||
|
||||
const combinedSettings = useContext(SettingsContext);
|
||||
if (!combinedSettings) {
|
||||
return null;
|
||||
|
@ -17,6 +17,9 @@ export const SEARCH_TYPE_COOKIE_NAME = "search_type";
|
||||
|
||||
export const HEADER_PADDING = "pt-[64px]";
|
||||
|
||||
export const LOGOUT_DISABLED =
|
||||
process.env.NEXT_PUBLIC_DISABLE_LOGOUT?.toLowerCase() === "true";
|
||||
|
||||
// NOTE: since this is a `NEXT_PUBLIC_` variable, it will be set at
|
||||
// build-time
|
||||
// TODO: consider moving this to an API call so that the api_server
|
||||
|
Loading…
x
Reference in New Issue
Block a user