uibee 2.17.5 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/icons-lZYQ6Vlr.js +125 -0
- package/dist/src/components/index.d.ts +706 -30
- package/dist/src/components/index.js +3244 -44
- package/dist/src/hooks/index.d.ts +15 -3
- package/dist/src/hooks/index.js +44 -3
- package/dist/src/icons/index.d.ts +420 -0
- package/dist/src/icons/index.js +3 -0
- package/dist/src/styles/index.d.ts +1 -1
- package/dist/src/styles/index.js +2 -1
- package/dist/src/utils/index.d.ts +38 -5
- package/dist/src/utils/index.js +125 -6
- package/dist/{src/globals.css → style.css} +904 -779
- package/dist/useClickOutside-Cmp-RsP3.js +13 -0
- package/index.d.ts +0 -1
- package/package.json +22 -23
- package/src/components/alert/alert.tsx +20 -18
- package/src/components/buttons/button.tsx +28 -35
- package/src/components/confirm/confirmPopup.tsx +15 -17
- package/src/components/container/accordion.tsx +54 -0
- package/src/components/container/glassCard.tsx +14 -0
- package/src/components/container/iconBubble.tsx +30 -0
- package/src/components/container/leftBarPanel.tsx +15 -0
- package/src/components/container/pulseDot.tsx +31 -0
- package/src/components/container/statCard.tsx +24 -0
- package/src/components/container/tabs.tsx +64 -0
- package/src/components/footer/footer.tsx +124 -0
- package/src/components/footer/loginContent.tsx +70 -0
- package/src/components/index.ts +15 -0
- package/src/components/inputs/checkbox.tsx +4 -4
- package/src/components/inputs/input.tsx +11 -13
- package/src/components/inputs/multiSelect.tsx +144 -0
- package/src/components/inputs/radio.tsx +4 -4
- package/src/components/inputs/range.tsx +6 -5
- package/src/components/inputs/searchInput.tsx +1 -1
- package/src/components/inputs/select.tsx +19 -18
- package/src/components/inputs/shared/colorPickerPopup.tsx +5 -5
- package/src/components/inputs/shared/dateTimePickerPopup.tsx +9 -9
- package/src/components/inputs/shared/inputError.tsx +1 -1
- package/src/components/inputs/switch.tsx +9 -10
- package/src/components/inputs/tagInput.tsx +6 -7
- package/src/components/inputs/textarea.tsx +8 -10
- package/src/components/inputs/toggle.tsx +6 -6
- package/src/components/table/body.tsx +6 -6
- package/src/components/table/format.ts +1 -1
- package/src/components/table/header.tsx +1 -1
- package/src/components/table/pagination.tsx +17 -31
- package/src/components/table/table.tsx +2 -2
- package/src/components/version/version.tsx +1 -1
- package/src/components/vulnerability/constants.ts +6 -6
- package/src/components/vulnerability/severityPill.tsx +6 -7
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useClickOutside.ts +5 -22
- package/src/icons/icons.tsx +431 -0
- package/src/icons/index.ts +2 -0
- package/src/index.ts +0 -1
- package/src/types/hooks.d.ts +8 -2
- package/src/utils/index.ts +1 -1
- package/src/utils/logoConsoleOutput/logoConsoleOutput.ts +31 -0
- package/tsconfig.json +3 -2
- package/tsdown.config.ts +26 -0
- package/Readme.md +0 -29
- package/bun.lock +0 -662
- package/dist/src/components/alert/alert.d.ts +0 -8
- package/dist/src/components/alert/alert.js +0 -15
- package/dist/src/components/buttons/button.d.ts +0 -13
- package/dist/src/components/buttons/button.js +0 -30
- package/dist/src/components/confirm/confirmPopup.d.ts +0 -12
- package/dist/src/components/confirm/confirmPopup.js +0 -18
- package/dist/src/components/container/highlight.d.ts +0 -4
- package/dist/src/components/container/highlight.js +0 -4
- package/dist/src/components/container/page.d.ts +0 -8
- package/dist/src/components/container/page.js +0 -4
- package/dist/src/components/inputs/checkbox.d.ts +0 -17
- package/dist/src/components/inputs/checkbox.js +0 -37
- package/dist/src/components/inputs/input.d.ts +0 -12
- package/dist/src/components/inputs/input.js +0 -124
- package/dist/src/components/inputs/radio.d.ts +0 -17
- package/dist/src/components/inputs/radio.js +0 -27
- package/dist/src/components/inputs/range.d.ts +0 -11
- package/dist/src/components/inputs/range.js +0 -22
- package/dist/src/components/inputs/searchInput.d.ts +0 -6
- package/dist/src/components/inputs/searchInput.js +0 -42
- package/dist/src/components/inputs/select.d.ts +0 -23
- package/dist/src/components/inputs/select.js +0 -70
- package/dist/src/components/inputs/shared/colorPickerPopup.d.ts +0 -8
- package/dist/src/components/inputs/shared/colorPickerPopup.js +0 -191
- package/dist/src/components/inputs/shared/dateTimePickerPopup.d.ts +0 -9
- package/dist/src/components/inputs/shared/dateTimePickerPopup.js +0 -128
- package/dist/src/components/inputs/shared/fieldWrapper.d.ts +0 -14
- package/dist/src/components/inputs/shared/fieldWrapper.js +0 -8
- package/dist/src/components/inputs/shared/index.d.ts +0 -5
- package/dist/src/components/inputs/shared/index.js +0 -5
- package/dist/src/components/inputs/shared/inputError.d.ts +0 -6
- package/dist/src/components/inputs/shared/inputError.js +0 -6
- package/dist/src/components/inputs/shared/inputInfo.d.ts +0 -5
- package/dist/src/components/inputs/shared/inputInfo.js +0 -5
- package/dist/src/components/inputs/shared/inputLabel.d.ts +0 -9
- package/dist/src/components/inputs/shared/inputLabel.js +0 -4
- package/dist/src/components/inputs/switch.d.ts +0 -11
- package/dist/src/components/inputs/switch.js +0 -14
- package/dist/src/components/inputs/tagInput.d.ts +0 -15
- package/dist/src/components/inputs/tagInput.js +0 -40
- package/dist/src/components/inputs/textarea.d.ts +0 -11
- package/dist/src/components/inputs/textarea.js +0 -36
- package/dist/src/components/inputs/toggle.d.ts +0 -14
- package/dist/src/components/inputs/toggle.js +0 -12
- package/dist/src/components/login/loginPage.d.ts +0 -2
- package/dist/src/components/login/loginPage.js +0 -18
- package/dist/src/components/logo/logo.d.ts +0 -5
- package/dist/src/components/logo/logo.js +0 -6
- package/dist/src/components/logo/logoSmall.d.ts +0 -1
- package/dist/src/components/logo/logoSmall.js +0 -6
- package/dist/src/components/markdownrender/markdownRender.d.ts +0 -7
- package/dist/src/components/markdownrender/markdownRender.js +0 -26
- package/dist/src/components/navbar/bubble.d.ts +0 -14
- package/dist/src/components/navbar/bubble.js +0 -8
- package/dist/src/components/navbar/navbar.d.ts +0 -34
- package/dist/src/components/navbar/navbar.js +0 -36
- package/dist/src/components/navbar/navbarDropdown.d.ts +0 -7
- package/dist/src/components/navbar/navbarDropdown.js +0 -19
- package/dist/src/components/navbar/navbarItem.d.ts +0 -11
- package/dist/src/components/navbar/navbarItem.js +0 -12
- package/dist/src/components/table/body.d.ts +0 -15
- package/dist/src/components/table/body.js +0 -116
- package/dist/src/components/table/format.d.ts +0 -1
- package/dist/src/components/table/format.js +0 -27
- package/dist/src/components/table/header.d.ts +0 -8
- package/dist/src/components/table/header.js +0 -47
- package/dist/src/components/table/menu.d.ts +0 -17
- package/dist/src/components/table/menu.js +0 -30
- package/dist/src/components/table/pagination.d.ts +0 -6
- package/dist/src/components/table/pagination.js +0 -86
- package/dist/src/components/table/table.d.ts +0 -14
- package/dist/src/components/table/table.js +0 -14
- package/dist/src/components/toast/toastItem.d.ts +0 -2
- package/dist/src/components/toast/toastItem.js +0 -38
- package/dist/src/components/toast/toaster.d.ts +0 -9
- package/dist/src/components/toast/toaster.js +0 -86
- package/dist/src/components/toggle/language.d.ts +0 -4
- package/dist/src/components/toggle/language.js +0 -29
- package/dist/src/components/toggle/theme.d.ts +0 -3
- package/dist/src/components/toggle/theme.js +0 -30
- package/dist/src/components/version/version.d.ts +0 -7
- package/dist/src/components/version/version.js +0 -12
- package/dist/src/components/vulnerability/constants.d.ts +0 -4
- package/dist/src/components/vulnerability/constants.js +0 -14
- package/dist/src/components/vulnerability/severityPill.d.ts +0 -8
- package/dist/src/components/vulnerability/severityPill.js +0 -8
- package/dist/src/hooks/useClickOutside.d.ts +0 -2
- package/dist/src/hooks/useClickOutside.js +0 -27
- package/dist/src/hooks/useDarkMode.d.ts +0 -1
- package/dist/src/hooks/useDarkMode.js +0 -17
- package/dist/src/hooks/useVisibility.d.ts +0 -4
- package/dist/src/hooks/useVisibility.js +0 -23
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.js +0 -5
- package/dist/src/scripts/buildCss.d.ts +0 -1
- package/dist/src/scripts/buildCss.js +0 -22
- package/dist/src/scripts/index.d.ts +0 -1
- package/dist/src/scripts/index.js +0 -1
- package/dist/src/scripts/rewriteAlias.d.ts +0 -1
- package/dist/src/scripts/rewriteAlias.js +0 -31
- package/dist/src/utils/LogoConsoleOutput/LogoConsoleOutput.d.ts +0 -1
- package/dist/src/utils/LogoConsoleOutput/LogoConsoleOutput.js +0 -44
- package/dist/src/utils/auth/callback.d.ts +0 -2
- package/dist/src/utils/auth/callback.js +0 -63
- package/dist/src/utils/auth/getDomain.d.ts +0 -2
- package/dist/src/utils/auth/getDomain.js +0 -6
- package/dist/src/utils/auth/login.d.ts +0 -3
- package/dist/src/utils/auth/login.js +0 -14
- package/dist/src/utils/auth/logout.d.ts +0 -3
- package/dist/src/utils/auth/logout.js +0 -18
- package/dist/src/utils/auth/token.d.ts +0 -3
- package/dist/src/utils/auth/token.js +0 -33
- package/dist/tailwind.config.d.ts +0 -3
- package/dist/tailwind.config.js +0 -7
- package/src/scripts/buildCss.ts +0 -25
- package/src/scripts/index.ts +0 -1
- package/src/scripts/rewriteAlias.ts +0 -39
- package/src/utils/LogoConsoleOutput/LogoConsoleOutput.ts +0 -61
|
@@ -1,3 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/hooks/useVisibility.d.ts
|
|
4
|
+
declare function useVisibility<T extends HTMLElement>(onVisible: () => void, rootMargin?: string): {
|
|
5
|
+
ref: import("react").RefObject<T | null>;
|
|
6
|
+
isVisible: boolean;
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/hooks/useDarkMode.d.ts
|
|
10
|
+
declare function useDarkMode(): boolean;
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region src/hooks/useClickOutside.d.ts
|
|
13
|
+
declare function useClickOutside<T extends HTMLElement>(ref: RefObject<T | null>, callback: () => void): void;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { useClickOutside, useDarkMode, useVisibility };
|
package/dist/src/hooks/index.js
CHANGED
|
@@ -1,3 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as useClickOutside } from "../../useClickOutside-Cmp-RsP3.js";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
//#region src/hooks/useVisibility.ts
|
|
5
|
+
function useVisibility(onVisible, rootMargin = "200px") {
|
|
6
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
7
|
+
const ref = useRef(null);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
if (typeof window === "undefined") return;
|
|
10
|
+
if (!("ontouchstart" in window || navigator.maxTouchPoints > 0)) return;
|
|
11
|
+
const observer = new IntersectionObserver((entries) => {
|
|
12
|
+
if (entries[0].isIntersecting) {
|
|
13
|
+
setIsVisible(true);
|
|
14
|
+
onVisible();
|
|
15
|
+
observer.disconnect();
|
|
16
|
+
}
|
|
17
|
+
}, { rootMargin });
|
|
18
|
+
if (ref.current) observer.observe(ref.current);
|
|
19
|
+
return () => observer.disconnect();
|
|
20
|
+
}, [onVisible, rootMargin]);
|
|
21
|
+
return {
|
|
22
|
+
ref,
|
|
23
|
+
isVisible
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region src/hooks/useDarkMode.ts
|
|
28
|
+
function useDarkMode() {
|
|
29
|
+
const [isDark, setIsDark] = useState(false);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
setIsDark(document.documentElement.classList.contains("dark"));
|
|
32
|
+
const observer = new MutationObserver(() => {
|
|
33
|
+
setIsDark(document.documentElement.classList.contains("dark"));
|
|
34
|
+
});
|
|
35
|
+
observer.observe(document.documentElement, {
|
|
36
|
+
attributes: true,
|
|
37
|
+
attributeFilter: ["class"]
|
|
38
|
+
});
|
|
39
|
+
return () => observer.disconnect();
|
|
40
|
+
}, []);
|
|
41
|
+
return isDark;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { useClickOutside, useDarkMode, useVisibility };
|
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/icons/icons.d.ts
|
|
4
|
+
interface LogfontIconProps extends React.SVGProps<SVGSVGElement> {
|
|
5
|
+
size?: number | string;
|
|
6
|
+
}
|
|
7
|
+
declare const Circle: ({
|
|
8
|
+
size,
|
|
9
|
+
...props
|
|
10
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
11
|
+
declare const Rect: ({
|
|
12
|
+
size,
|
|
13
|
+
...props
|
|
14
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
15
|
+
declare const Login: ({
|
|
16
|
+
size,
|
|
17
|
+
...props
|
|
18
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
19
|
+
declare const LoginText: ({
|
|
20
|
+
size,
|
|
21
|
+
...props
|
|
22
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
23
|
+
declare const StyretCorners: ({
|
|
24
|
+
size,
|
|
25
|
+
...props
|
|
26
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
27
|
+
declare const Styret: ({
|
|
28
|
+
size,
|
|
29
|
+
...props
|
|
30
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
31
|
+
declare const StyretFilled: ({
|
|
32
|
+
size,
|
|
33
|
+
...props
|
|
34
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
35
|
+
declare const EventkomCorners: ({
|
|
36
|
+
size,
|
|
37
|
+
...props
|
|
38
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
39
|
+
declare const Eventkom: ({
|
|
40
|
+
size,
|
|
41
|
+
...props
|
|
42
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
43
|
+
declare const EventkomFilled: ({
|
|
44
|
+
size,
|
|
45
|
+
...props
|
|
46
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
47
|
+
declare const BedkomCorners: ({
|
|
48
|
+
size,
|
|
49
|
+
...props
|
|
50
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
51
|
+
declare const Bedkom: ({
|
|
52
|
+
size,
|
|
53
|
+
...props
|
|
54
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
55
|
+
declare const BedkomFilled: ({
|
|
56
|
+
size,
|
|
57
|
+
...props
|
|
58
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
59
|
+
declare const TekkomCorners: ({
|
|
60
|
+
size,
|
|
61
|
+
...props
|
|
62
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
63
|
+
declare const Tekkom: ({
|
|
64
|
+
size,
|
|
65
|
+
...props
|
|
66
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
67
|
+
declare const CtfkomCorners: ({
|
|
68
|
+
size,
|
|
69
|
+
...props
|
|
70
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
71
|
+
declare const Ctfkom: ({
|
|
72
|
+
size,
|
|
73
|
+
...props
|
|
74
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
75
|
+
declare const CtfkomFilled: ({
|
|
76
|
+
size,
|
|
77
|
+
...props
|
|
78
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
79
|
+
declare const SatkomCorners: ({
|
|
80
|
+
size,
|
|
81
|
+
...props
|
|
82
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
83
|
+
declare const Satkom: ({
|
|
84
|
+
size,
|
|
85
|
+
...props
|
|
86
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
87
|
+
declare const SatkomFilled: ({
|
|
88
|
+
size,
|
|
89
|
+
...props
|
|
90
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
91
|
+
declare const PrCorners: ({
|
|
92
|
+
size,
|
|
93
|
+
...props
|
|
94
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
95
|
+
declare const Pr: ({
|
|
96
|
+
size,
|
|
97
|
+
...props
|
|
98
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
99
|
+
declare const PrFilled: ({
|
|
100
|
+
size,
|
|
101
|
+
...props
|
|
102
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
103
|
+
declare const Ntnu: ({
|
|
104
|
+
size,
|
|
105
|
+
...props
|
|
106
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
107
|
+
declare const Sit: ({
|
|
108
|
+
size,
|
|
109
|
+
...props
|
|
110
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
111
|
+
declare const SitText: ({
|
|
112
|
+
size,
|
|
113
|
+
...props
|
|
114
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
115
|
+
declare const NtnuiGjvik: ({
|
|
116
|
+
size,
|
|
117
|
+
...props
|
|
118
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
119
|
+
declare const NtnuiSimple: ({
|
|
120
|
+
size,
|
|
121
|
+
...props
|
|
122
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
123
|
+
declare const Huset: ({
|
|
124
|
+
size,
|
|
125
|
+
...props
|
|
126
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
127
|
+
declare const HusetText: ({
|
|
128
|
+
size,
|
|
129
|
+
...props
|
|
130
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
131
|
+
declare const GjvikKommune: ({
|
|
132
|
+
size,
|
|
133
|
+
...props
|
|
134
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
135
|
+
declare const Peppes: ({
|
|
136
|
+
size,
|
|
137
|
+
...props
|
|
138
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
139
|
+
declare const Pizzabakeren: ({
|
|
140
|
+
size,
|
|
141
|
+
...props
|
|
142
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
143
|
+
declare const Chaplin: ({
|
|
144
|
+
size,
|
|
145
|
+
...props
|
|
146
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
147
|
+
declare const Discord: ({
|
|
148
|
+
size,
|
|
149
|
+
...props
|
|
150
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
151
|
+
declare const Instagram: ({
|
|
152
|
+
size,
|
|
153
|
+
...props
|
|
154
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
155
|
+
declare const Facebook: ({
|
|
156
|
+
size,
|
|
157
|
+
...props
|
|
158
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
159
|
+
declare const Linkedin: ({
|
|
160
|
+
size,
|
|
161
|
+
...props
|
|
162
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
163
|
+
declare const Gitlab: ({
|
|
164
|
+
size,
|
|
165
|
+
...props
|
|
166
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
167
|
+
declare const Wikijs: ({
|
|
168
|
+
size,
|
|
169
|
+
...props
|
|
170
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
171
|
+
declare const Snapchat: ({
|
|
172
|
+
size,
|
|
173
|
+
...props
|
|
174
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
175
|
+
declare const Twitter: ({
|
|
176
|
+
size,
|
|
177
|
+
...props
|
|
178
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
179
|
+
declare const Youtube: ({
|
|
180
|
+
size,
|
|
181
|
+
...props
|
|
182
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
183
|
+
declare const Microsoft: ({
|
|
184
|
+
size,
|
|
185
|
+
...props
|
|
186
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
187
|
+
declare const Windows: ({
|
|
188
|
+
size,
|
|
189
|
+
...props
|
|
190
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
191
|
+
declare const Android: ({
|
|
192
|
+
size,
|
|
193
|
+
...props
|
|
194
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
195
|
+
declare const Apple: ({
|
|
196
|
+
size,
|
|
197
|
+
...props
|
|
198
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
199
|
+
declare const Ubuntu: ({
|
|
200
|
+
size,
|
|
201
|
+
...props
|
|
202
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
203
|
+
declare const Archlinux: ({
|
|
204
|
+
size,
|
|
205
|
+
...props
|
|
206
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
207
|
+
declare const Manjaro: ({
|
|
208
|
+
size,
|
|
209
|
+
...props
|
|
210
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
211
|
+
declare const Debian: ({
|
|
212
|
+
size,
|
|
213
|
+
...props
|
|
214
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
215
|
+
declare const Linux: ({
|
|
216
|
+
size,
|
|
217
|
+
...props
|
|
218
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
219
|
+
declare const Tux: ({
|
|
220
|
+
size,
|
|
221
|
+
...props
|
|
222
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
223
|
+
declare const Bitcoin: ({
|
|
224
|
+
size,
|
|
225
|
+
...props
|
|
226
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
227
|
+
declare const Raspberrypi: ({
|
|
228
|
+
size,
|
|
229
|
+
...props
|
|
230
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
231
|
+
declare const Arduino: ({
|
|
232
|
+
size,
|
|
233
|
+
...props
|
|
234
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
235
|
+
declare const Cisco: ({
|
|
236
|
+
size,
|
|
237
|
+
...props
|
|
238
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
239
|
+
declare const Codepen: ({
|
|
240
|
+
size,
|
|
241
|
+
...props
|
|
242
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
243
|
+
declare const Postgresql: ({
|
|
244
|
+
size,
|
|
245
|
+
...props
|
|
246
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
247
|
+
declare const Digitalocean: ({
|
|
248
|
+
size,
|
|
249
|
+
...props
|
|
250
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
251
|
+
declare const Kubernetes: ({
|
|
252
|
+
size,
|
|
253
|
+
...props
|
|
254
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
255
|
+
declare const Docker: ({
|
|
256
|
+
size,
|
|
257
|
+
...props
|
|
258
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
259
|
+
declare const Python: ({
|
|
260
|
+
size,
|
|
261
|
+
...props
|
|
262
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
263
|
+
declare const Html5: ({
|
|
264
|
+
size,
|
|
265
|
+
...props
|
|
266
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
267
|
+
declare const Css3: ({
|
|
268
|
+
size,
|
|
269
|
+
...props
|
|
270
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
271
|
+
declare const Cpp: ({
|
|
272
|
+
size,
|
|
273
|
+
...props
|
|
274
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
275
|
+
declare const Go: ({
|
|
276
|
+
size,
|
|
277
|
+
...props
|
|
278
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
279
|
+
declare const Rust: ({
|
|
280
|
+
size,
|
|
281
|
+
...props
|
|
282
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
283
|
+
declare const Java: ({
|
|
284
|
+
size,
|
|
285
|
+
...props
|
|
286
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
287
|
+
declare const Firefox: ({
|
|
288
|
+
size,
|
|
289
|
+
...props
|
|
290
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
291
|
+
declare const Tor: ({
|
|
292
|
+
size,
|
|
293
|
+
...props
|
|
294
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
295
|
+
declare const Duckduckgo: ({
|
|
296
|
+
size,
|
|
297
|
+
...props
|
|
298
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
299
|
+
declare const Mysql: ({
|
|
300
|
+
size,
|
|
301
|
+
...props
|
|
302
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
303
|
+
declare const Nintendoswitch: ({
|
|
304
|
+
size,
|
|
305
|
+
...props
|
|
306
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
307
|
+
declare const Javascript: ({
|
|
308
|
+
size,
|
|
309
|
+
...props
|
|
310
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
311
|
+
declare const ReactLogo: ({
|
|
312
|
+
size,
|
|
313
|
+
...props
|
|
314
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
315
|
+
declare const NodeDotJs: ({
|
|
316
|
+
size,
|
|
317
|
+
...props
|
|
318
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
319
|
+
declare const Npm: ({
|
|
320
|
+
size,
|
|
321
|
+
...props
|
|
322
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
323
|
+
declare const Webpack: ({
|
|
324
|
+
size,
|
|
325
|
+
...props
|
|
326
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
327
|
+
declare const Powershell: ({
|
|
328
|
+
size,
|
|
329
|
+
...props
|
|
330
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
331
|
+
declare const Postman: ({
|
|
332
|
+
size,
|
|
333
|
+
...props
|
|
334
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
335
|
+
declare const Redmine: ({
|
|
336
|
+
size,
|
|
337
|
+
...props
|
|
338
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
339
|
+
declare const Stackoverflow: ({
|
|
340
|
+
size,
|
|
341
|
+
...props
|
|
342
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
343
|
+
declare const Udemy: ({
|
|
344
|
+
size,
|
|
345
|
+
...props
|
|
346
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
347
|
+
declare const Untappd: ({
|
|
348
|
+
size,
|
|
349
|
+
...props
|
|
350
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
351
|
+
declare const Vim: ({
|
|
352
|
+
size,
|
|
353
|
+
...props
|
|
354
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
355
|
+
declare const Visualstudio: ({
|
|
356
|
+
size,
|
|
357
|
+
...props
|
|
358
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
359
|
+
declare const Vscode: ({
|
|
360
|
+
size,
|
|
361
|
+
...props
|
|
362
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
363
|
+
declare const Figma: ({
|
|
364
|
+
size,
|
|
365
|
+
...props
|
|
366
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
367
|
+
declare const Redhat: ({
|
|
368
|
+
size,
|
|
369
|
+
...props
|
|
370
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
371
|
+
declare const Zoom: ({
|
|
372
|
+
size,
|
|
373
|
+
...props
|
|
374
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
375
|
+
declare const Onepassword: ({
|
|
376
|
+
size,
|
|
377
|
+
...props
|
|
378
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
379
|
+
declare const Github: ({
|
|
380
|
+
size,
|
|
381
|
+
...props
|
|
382
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
383
|
+
declare const Git: ({
|
|
384
|
+
size,
|
|
385
|
+
...props
|
|
386
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
387
|
+
declare const GitText: ({
|
|
388
|
+
size,
|
|
389
|
+
...props
|
|
390
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
391
|
+
declare const GitText2: ({
|
|
392
|
+
size,
|
|
393
|
+
...props
|
|
394
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
395
|
+
declare const Database: ({
|
|
396
|
+
size,
|
|
397
|
+
...props
|
|
398
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
399
|
+
declare const Pacman: ({
|
|
400
|
+
size,
|
|
401
|
+
...props
|
|
402
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
403
|
+
declare const Usb: ({
|
|
404
|
+
size,
|
|
405
|
+
...props
|
|
406
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
407
|
+
declare const Pizza: ({
|
|
408
|
+
size,
|
|
409
|
+
...props
|
|
410
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
411
|
+
declare const Tree: ({
|
|
412
|
+
size,
|
|
413
|
+
...props
|
|
414
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
415
|
+
declare const Trophy: ({
|
|
416
|
+
size,
|
|
417
|
+
...props
|
|
418
|
+
}: LogfontIconProps) => React.JSX.Element;
|
|
419
|
+
//#endregion
|
|
420
|
+
export { Android, Apple, Archlinux, Arduino, Bedkom, BedkomCorners, BedkomFilled, Bitcoin, Chaplin, Circle, Cisco, Codepen, Cpp, Css3, Ctfkom, CtfkomCorners, CtfkomFilled, Database, Debian, Digitalocean, Discord, Docker, Duckduckgo, Eventkom, EventkomCorners, EventkomFilled, Facebook, Figma, Firefox, Git, GitText, GitText2, Github, Gitlab, GjvikKommune, Go, Html5, Huset, HusetText, Instagram, Java, Javascript, Kubernetes, Linkedin, Linux, LogfontIconProps, Login, LoginText, Manjaro, Microsoft, Mysql, Nintendoswitch, NodeDotJs, Npm, Ntnu, NtnuiGjvik, NtnuiSimple, Onepassword, Pacman, Peppes, Pizza, Pizzabakeren, Postgresql, Postman, Powershell, Pr, PrCorners, PrFilled, Python, Raspberrypi, ReactLogo, Rect, Redhat, Redmine, Rust, Satkom, SatkomCorners, SatkomFilled, Sit, SitText, Snapchat, Stackoverflow, Styret, StyretCorners, StyretFilled, Tekkom, TekkomCorners, Tor, Tree, Trophy, Tux, Twitter, Ubuntu, Udemy, Untappd, Usb, Vim, Visualstudio, Vscode, Webpack, Wikijs, Windows, Youtube, Zoom };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { $ as Npm, A as Git, At as StyretFilled, B as Instagram, Bt as Untappd, C as Duckduckgo, Ct as SatkomFilled, D as Facebook, Dt as Stackoverflow, E as EventkomFilled, Et as Snapchat, F as GjvikKommune, Ft as Trophy, G as Linux, Gt as Webpack, H as Javascript, Ht as Vim, I as Go, It as Tux, J as Manjaro, Jt as Youtube, K as Login, Kt as Wikijs, L as Html5, Lt as Twitter, M as GitText2, Mt as TekkomCorners, N as Github, Nt as Tor, O as Figma, Ot as Styret, P as Gitlab, Pt as Tree, Q as NodeDotJs, R as Huset, Rt as Ubuntu, S as Docker, St as SatkomCorners, T as EventkomCorners, Tt as SitText, U as Kubernetes, Ut as Visualstudio, V as Java, Vt as Usb, W as Linkedin, Wt as Vscode, X as Mysql, Y as Microsoft, Yt as Zoom, Z as Nintendoswitch, _ as CtfkomFilled, _t as Rect, a as Bedkom, at as Peppes, b as Digitalocean, bt as Rust, c as Bitcoin, ct as Postgresql, d as Cisco, dt as Pr, et as Ntnu, f as Codepen, ft as PrCorners, g as CtfkomCorners, gt as ReactLogo, h as Ctfkom, ht as Raspberrypi, i as Arduino, it as Pacman, j as GitText, jt as Tekkom, k as Firefox, kt as StyretCorners, l as Chaplin, lt as Postman, m as Css3, mt as Python, n as Apple, nt as NtnuiSimple, o as BedkomCorners, ot as Pizza, p as Cpp, pt as PrFilled, q as LoginText, qt as Windows, r as Archlinux, rt as Onepassword, s as BedkomFilled, st as Pizzabakeren, t as Android, tt as NtnuiGjvik, u as Circle, ut as Powershell, v as Database, vt as Redhat, w as Eventkom, wt as Sit, x as Discord, xt as Satkom, y as Debian, yt as Redmine, z as HusetText, zt as Udemy } from "../../icons-lZYQ6Vlr.js";
|
|
3
|
+
export { Android, Apple, Archlinux, Arduino, Bedkom, BedkomCorners, BedkomFilled, Bitcoin, Chaplin, Circle, Cisco, Codepen, Cpp, Css3, Ctfkom, CtfkomCorners, CtfkomFilled, Database, Debian, Digitalocean, Discord, Docker, Duckduckgo, Eventkom, EventkomCorners, EventkomFilled, Facebook, Figma, Firefox, Git, GitText, GitText2, Github, Gitlab, GjvikKommune, Go, Html5, Huset, HusetText, Instagram, Java, Javascript, Kubernetes, Linkedin, Linux, Login, LoginText, Manjaro, Microsoft, Mysql, Nintendoswitch, NodeDotJs, Npm, Ntnu, NtnuiGjvik, NtnuiSimple, Onepassword, Pacman, Peppes, Pizza, Pizzabakeren, Postgresql, Postman, Powershell, Pr, PrCorners, PrFilled, Python, Raspberrypi, ReactLogo, Rect, Redhat, Redmine, Rust, Satkom, SatkomCorners, SatkomFilled, Sit, SitText, Snapchat, Stackoverflow, Styret, StyretCorners, StyretFilled, Tekkom, TekkomCorners, Tor, Tree, Trophy, Tux, Twitter, Ubuntu, Udemy, Untappd, Usb, Vim, Visualstudio, Vscode, Webpack, Wikijs, Windows, Youtube, Zoom };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export { };
|
package/dist/src/styles/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import '
|
|
1
|
+
import '../../style.css';
|
|
2
|
+
export {};
|
|
@@ -1,5 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { NextResponse } from "next/server.js";
|
|
2
|
+
import { AuthCallbackProps, AuthLoginProps, AuthLogoutProps, AuthTokenProps } from "uibee/utils";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/logoConsoleOutput/logoConsoleOutput.d.ts
|
|
5
|
+
declare function LogoConsoleOutput(): void;
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/utils/auth/login.d.ts
|
|
8
|
+
declare function AuthLogin({
|
|
9
|
+
req,
|
|
10
|
+
clientID,
|
|
11
|
+
redirectPath,
|
|
12
|
+
authURL
|
|
13
|
+
}: AuthLoginProps): Promise<NextResponse<unknown>>;
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/utils/auth/callback.d.ts
|
|
16
|
+
declare function authCallback({
|
|
17
|
+
req,
|
|
18
|
+
tokenURL,
|
|
19
|
+
clientID,
|
|
20
|
+
clientSecret,
|
|
21
|
+
redirectPath,
|
|
22
|
+
userInfoURL,
|
|
23
|
+
tokenRedirectPath
|
|
24
|
+
}: AuthCallbackProps): Promise<Response>;
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/utils/auth/token.d.ts
|
|
27
|
+
declare function AuthToken({
|
|
28
|
+
req,
|
|
29
|
+
redirectPath
|
|
30
|
+
}: AuthTokenProps): Promise<NextResponse<unknown>>;
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/utils/auth/logout.d.ts
|
|
33
|
+
declare function AuthLogout({
|
|
34
|
+
req,
|
|
35
|
+
path
|
|
36
|
+
}: AuthLogoutProps): Promise<NextResponse<unknown>>;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { LogoConsoleOutput, authCallback, AuthLogin as authLogin, AuthLogout as authLogout, AuthToken as authToken };
|
package/dist/src/utils/index.js
CHANGED
|
@@ -1,6 +1,125 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { NextResponse } from "next/server.js";
|
|
2
|
+
//#region src/utils/logoConsoleOutput/logoConsoleOutput.ts
|
|
3
|
+
function LogoConsoleOutput() {
|
|
4
|
+
const ua = navigator.userAgent;
|
|
5
|
+
if (!ua.includes("Chrome") && !ua.includes("Firefox") && !ua.includes("Safari")) {
|
|
6
|
+
console.log("Login - Linjeforeningen for IT");
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
console.log("%c███████╗ ███████╗\n██╔════╝ ╚════██║\n██║%c ██╗ ██████╗ ██████╗ ██╗███╗ ██╗ %c██║\n╚═╝%c ██║ ██╔═══██╗██╔════╝ ██║████╗ ██║ %c╚═╝%c\n ██║ ██║ ██║██║ ███╗██║██╔██╗ ██║\n ██║ ██║ ██║██║ ██║██║██║╚██╗██║\n%c██╗%c ██████╗╚██████╔╝╚██████╔╝██║██║ ╚████║ %c██╗\n██║%c ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝╚═╝ ╚═══╝ %c██║\n███████╗%c %c███████║\n╚══════╝ ╚══════╝%c\n\n - Laget av TekKom med 🍕 og ❤️", "color: #fd8738", "", "color: #fd8738", "", "color: #fd8738", "", "color: #fd8738", "", "color: #fd8738", "", "color: #fd8738", "", "color: #fd8738", "");
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region src/utils/auth/getDomain.ts
|
|
13
|
+
function getDomain(req) {
|
|
14
|
+
return `${req.headers.get("x-forwarded-proto") ?? new URL(req.url).protocol.replace(":", "")}://${req.headers.get("host") ?? req.headers.get("x-forwarded-host") ?? new URL(req.url).host}`;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/utils/auth/login.ts
|
|
18
|
+
async function AuthLogin({ req, clientID, redirectPath, authURL }) {
|
|
19
|
+
const domain = getDomain(req);
|
|
20
|
+
const state = Math.random().toString(36).substring(5);
|
|
21
|
+
const authQueryParams = new URLSearchParams({
|
|
22
|
+
client_id: clientID,
|
|
23
|
+
redirect_uri: `${domain}${redirectPath}`,
|
|
24
|
+
response_type: "code",
|
|
25
|
+
scope: "openid profile email",
|
|
26
|
+
state
|
|
27
|
+
}).toString();
|
|
28
|
+
return NextResponse.redirect(`${authURL}?${authQueryParams}`);
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/utils/auth/callback.ts
|
|
32
|
+
async function authCallback({ req, tokenURL, clientID, clientSecret, redirectPath, userInfoURL, tokenRedirectPath }) {
|
|
33
|
+
const domain = getDomain(req);
|
|
34
|
+
const searchParams = new URL(req.url).searchParams;
|
|
35
|
+
if (!searchParams) return NextResponse.json({ error: "No search parameters found." }, { status: 400 });
|
|
36
|
+
const code = searchParams.get("code");
|
|
37
|
+
if (!code) return NextResponse.json({ error: "No authorization code found." }, { status: 400 });
|
|
38
|
+
try {
|
|
39
|
+
const tokenResponse = await fetch(tokenURL, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
42
|
+
body: new URLSearchParams({
|
|
43
|
+
client_id: clientID,
|
|
44
|
+
client_secret: clientSecret,
|
|
45
|
+
code,
|
|
46
|
+
redirect_uri: `${domain}${redirectPath}`,
|
|
47
|
+
grant_type: "authorization_code"
|
|
48
|
+
}).toString()
|
|
49
|
+
});
|
|
50
|
+
const tokenResponseBody = await tokenResponse.text();
|
|
51
|
+
if (!tokenResponse.ok) return new Response(JSON.stringify(`Failed to obtain token: ${tokenResponseBody}`), {
|
|
52
|
+
status: 500,
|
|
53
|
+
headers: { "Content-Type": "application/json" }
|
|
54
|
+
});
|
|
55
|
+
const token = JSON.parse(tokenResponseBody);
|
|
56
|
+
const userInfoResponse = await fetch(userInfoURL, { headers: { Authorization: `Bearer ${token.access_token}` } });
|
|
57
|
+
if (!userInfoResponse.ok) {
|
|
58
|
+
const userInfoError = await userInfoResponse.text();
|
|
59
|
+
return new Response(`No user info found: ${userInfoError}`, {
|
|
60
|
+
status: 500,
|
|
61
|
+
headers: { "Content-Type": "application/json" }
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const userInfo = await userInfoResponse.json();
|
|
65
|
+
const redirectUrl = new URL(`${domain}${tokenRedirectPath}`);
|
|
66
|
+
redirectUrl.search = new URLSearchParams({
|
|
67
|
+
id: userInfo.sub,
|
|
68
|
+
name: userInfo.name,
|
|
69
|
+
username: userInfo.nickname,
|
|
70
|
+
email: userInfo.email,
|
|
71
|
+
groups: userInfo.groups.join(","),
|
|
72
|
+
access_token: token.access_token
|
|
73
|
+
}).toString();
|
|
74
|
+
return NextResponse.redirect(redirectUrl.toString());
|
|
75
|
+
} catch (err) {
|
|
76
|
+
console.error("Error during OAuth flow:", err.message);
|
|
77
|
+
return NextResponse.json({ error: "Authentication failed" }, { status: 500 });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region src/utils/auth/token.ts
|
|
82
|
+
async function AuthToken({ req, redirectPath }) {
|
|
83
|
+
const domain = getDomain(req);
|
|
84
|
+
const url = new URL(req.url);
|
|
85
|
+
const token = url.searchParams.get("access_token");
|
|
86
|
+
const btg = url.searchParams.get("btg");
|
|
87
|
+
const redirectCookie = req.cookies.get("redirect_after_login");
|
|
88
|
+
const redirect = redirectCookie ? redirectCookie.value : redirectPath || "/";
|
|
89
|
+
if (!token) return NextResponse.json({ error: "No access token provided" }, { status: 400 });
|
|
90
|
+
if (btg) return NextResponse.redirect(new URL(redirect, domain));
|
|
91
|
+
const accessToken = url.searchParams.get("access_token");
|
|
92
|
+
const userID = url.searchParams.get("id");
|
|
93
|
+
const username = url.searchParams.get("name");
|
|
94
|
+
const userNickname = url.searchParams.get("username");
|
|
95
|
+
const userEmail = url.searchParams.get("email");
|
|
96
|
+
const userGroups = url.searchParams.get("groups");
|
|
97
|
+
const response = NextResponse.redirect(new URL(redirect, domain));
|
|
98
|
+
response.cookies.set("access_token", accessToken);
|
|
99
|
+
response.cookies.set("user_id", userID);
|
|
100
|
+
response.cookies.set("user_name", username);
|
|
101
|
+
response.cookies.set("user_nickname", userNickname);
|
|
102
|
+
response.cookies.set("user_email", userEmail);
|
|
103
|
+
response.cookies.set("user_groups", userGroups);
|
|
104
|
+
if (redirectCookie) response.cookies.delete("redirect_after_login");
|
|
105
|
+
return response;
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region src/utils/auth/logout.ts
|
|
109
|
+
async function AuthLogout({ req, path }) {
|
|
110
|
+
const domain = getDomain(req);
|
|
111
|
+
const response = NextResponse.redirect(new URL(path || "/", domain));
|
|
112
|
+
[
|
|
113
|
+
"access_token",
|
|
114
|
+
"user_id",
|
|
115
|
+
"user_name",
|
|
116
|
+
"user_nickname",
|
|
117
|
+
"user_email",
|
|
118
|
+
"user_groups"
|
|
119
|
+
].forEach((cookieName) => {
|
|
120
|
+
response.cookies.delete(cookieName);
|
|
121
|
+
});
|
|
122
|
+
return response;
|
|
123
|
+
}
|
|
124
|
+
//#endregion
|
|
125
|
+
export { LogoConsoleOutput, authCallback, AuthLogin as authLogin, AuthLogout as authLogout, AuthToken as authToken };
|