Spaces:
Running
Running
try to redirect login in new tab
Browse files- server.js +10 -4
- src/components/login/login.tsx +8 -3
server.js
CHANGED
@@ -42,10 +42,16 @@ const getPTag = (repoId) => {
|
|
42 |
};
|
43 |
|
44 |
app.get("/api/login", (_req, res) => {
|
45 |
-
res.redirect(
|
46 |
-
|
47 |
-
|
48 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
});
|
50 |
app.get("/auth/login", async (req, res) => {
|
51 |
const { code } = req.query;
|
|
|
42 |
};
|
43 |
|
44 |
app.get("/api/login", (_req, res) => {
|
45 |
+
// res.redirect(
|
46 |
+
// 302,
|
47 |
+
// `https://huggingface.co/oauth/authorize?client_id=${process.env.OAUTH_CLIENT_ID}&redirect_uri=${REDIRECT_URI}&response_type=code&scope=openid%20profile%20write-repos%20manage-repos%20inference-api&prompt=consent&state=1234567890`
|
48 |
+
// );
|
49 |
+
// redirect in new tab
|
50 |
+
const redirectUrl = `https://huggingface.co/oauth/authorize?client_id=${process.env.OAUTH_CLIENT_ID}&redirect_uri=${REDIRECT_URI}&response_type=code&scope=openid%20profile%20write-repos%20manage-repos%20inference-api&prompt=consent&state=1234567890`;
|
51 |
+
res.status(200).send({
|
52 |
+
ok: true,
|
53 |
+
redirectUrl,
|
54 |
+
});
|
55 |
});
|
56 |
app.get("/auth/login", async (req, res) => {
|
57 |
const { code } = req.query;
|
src/components/login/login.tsx
CHANGED
@@ -10,10 +10,15 @@ function Login({
|
|
10 |
}) {
|
11 |
const [, setStorage] = useLocalStorage("html_content");
|
12 |
|
13 |
-
const handleClick = () => {
|
14 |
if (html !== defaultHTML) {
|
15 |
setStorage(html);
|
16 |
}
|
|
|
|
|
|
|
|
|
|
|
17 |
};
|
18 |
|
19 |
return (
|
@@ -26,13 +31,13 @@ function Login({
|
|
26 |
</header>
|
27 |
<main className="px-4 py-4 space-y-3">
|
28 |
{children}
|
29 |
-
<
|
30 |
<img
|
31 |
src="https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-lg-dark.svg"
|
32 |
alt="Sign in with Hugging Face"
|
33 |
className="mx-auto"
|
34 |
/>
|
35 |
-
</
|
36 |
</main>
|
37 |
</>
|
38 |
);
|
|
|
10 |
}) {
|
11 |
const [, setStorage] = useLocalStorage("html_content");
|
12 |
|
13 |
+
const handleClick = async () => {
|
14 |
if (html !== defaultHTML) {
|
15 |
setStorage(html);
|
16 |
}
|
17 |
+
const request = await fetch("/api/login");
|
18 |
+
const res = await request.json();
|
19 |
+
if (res?.redirectUrl) {
|
20 |
+
window.open(res.redirectUrl, "_blank");
|
21 |
+
}
|
22 |
};
|
23 |
|
24 |
return (
|
|
|
31 |
</header>
|
32 |
<main className="px-4 py-4 space-y-3">
|
33 |
{children}
|
34 |
+
<button onClick={handleClick}>
|
35 |
<img
|
36 |
src="https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-lg-dark.svg"
|
37 |
alt="Sign in with Hugging Face"
|
38 |
className="mx-auto"
|
39 |
/>
|
40 |
+
</button>
|
41 |
</main>
|
42 |
</>
|
43 |
);
|