mirror of
https://github.com/docmost/docmost.git
synced 2026-05-17 23:14:07 +08:00
feat(cloud): add find-workspace and email verification endpoints (#2020)
* feat: add find-workspace and email verification endpoints * sync
This commit is contained in:
@@ -22,11 +22,11 @@ import APP_ROUTE from "@/lib/app-route.ts";
|
||||
|
||||
const formSchema = z.object({
|
||||
workspaceName: z.string().trim().max(50).optional(),
|
||||
name: z.string().min(1).max(50),
|
||||
name: z.string().min(1, { message: "Name is required" }).max(50),
|
||||
email: z
|
||||
.email()
|
||||
.min(1, { message: "email is required" }),
|
||||
password: z.string().min(8),
|
||||
.email({ message: "Invalid email address" })
|
||||
.min(1, { message: "Email is required" }),
|
||||
password: z.string().min(8, { message: "Password must be at least 8 characters" }),
|
||||
});
|
||||
type FormValues = z.infer<typeof formSchema>;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ import APP_ROUTE, { getPostLoginRedirect } from "@/lib/app-route.ts";
|
||||
import { RESET } from "jotai/utils";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { isCloud } from "@/lib/config.ts";
|
||||
import { exchangeTokenRedirectUrl } from "@/ee/utils.ts";
|
||||
import { exchangeTokenRedirectUrl, getHostnameUrl } from "@/ee/utils.ts";
|
||||
|
||||
export default function useAuth() {
|
||||
const { t } = useTranslation();
|
||||
@@ -52,9 +52,18 @@ export default function useAuth() {
|
||||
}
|
||||
} catch (err) {
|
||||
setIsLoading(false);
|
||||
console.log(err);
|
||||
|
||||
const message = err.response?.data?.message;
|
||||
if (isCloud() && message?.includes("verify your email")) {
|
||||
const sig = err.response?.data?.emailSignature;
|
||||
navigate(
|
||||
`${APP_ROUTE.AUTH.VERIFY_EMAIL}?email=${encodeURIComponent(data.email)}${sig ? `&sig=${sig}` : ""}`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
notifications.show({
|
||||
message: err.response?.data.message,
|
||||
message,
|
||||
color: "red",
|
||||
});
|
||||
}
|
||||
@@ -92,6 +101,17 @@ export default function useAuth() {
|
||||
try {
|
||||
if (isCloud()) {
|
||||
const res = await createWorkspace(data);
|
||||
|
||||
if (res?.requiresEmailVerification) {
|
||||
const hostname = res?.workspace?.hostname;
|
||||
if (hostname) {
|
||||
window.location.href =
|
||||
getHostnameUrl(hostname) +
|
||||
`/verify-email?email=${encodeURIComponent(data.email)}&sig=${res.emailSignature}`;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
const hostname = res?.workspace?.hostname;
|
||||
const exchangeToken = res?.exchangeToken;
|
||||
if (hostname && exchangeToken) {
|
||||
|
||||
@@ -50,4 +50,5 @@ export async function verifyUserToken(data: IVerifyUserToken): Promise<any> {
|
||||
export async function getCollabToken(): Promise<ICollabToken> {
|
||||
const req = await api.post<ICollabToken>("/auth/collab-token");
|
||||
return req.data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ export async function getInvitationById(data: {
|
||||
|
||||
export async function createWorkspace(
|
||||
data: ISetupWorkspace,
|
||||
): Promise<{ workspace: IWorkspace } & { exchangeToken: string }> {
|
||||
): Promise<{ workspace: IWorkspace; exchangeToken?: string; requiresEmailVerification?: boolean; emailSignature?: string }> {
|
||||
const req = await api.post("/workspace/create", data);
|
||||
return req.data;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user