Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: cal-3452 parameter for impersonation #14605

Merged
merged 18 commits into from May 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
3bb0139
feat: impersonate trigger when there is a URL param
sean-brydon Apr 16, 2024
f139d83
feat: update intercom sidebar
sean-brydon Apr 16, 2024
913dab7
fix: add to onOpen too
sean-brydon Apr 16, 2024
d078230
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
sean-brydon Apr 17, 2024
edd25a0
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
Udit-takkar Apr 18, 2024
3992cf6
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
sean-brydon Apr 18, 2024
1041429
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
Udit-takkar Apr 18, 2024
3afb11e
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
Udit-takkar Apr 19, 2024
3b4995a
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
Udit-takkar Apr 22, 2024
e1941a7
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
Udit-takkar Apr 22, 2024
3fe791d
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
Udit-takkar Apr 22, 2024
fed95ed
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
sean-brydon Apr 24, 2024
3631035
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
CarinaWolli Apr 24, 2024
e617533
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
PeerRich Apr 29, 2024
6d2ad89
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
PeerRich Apr 29, 2024
9b4639c
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
sean-brydon May 2, 2024
91da19e
Merge branch 'main' into feat/cal-3452-parameter-for-impersonation
CarinaWolli May 2, 2024
93fc233
fix: follow correct flow as callback path changed
sean-brydon May 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
22 changes: 20 additions & 2 deletions apps/web/pages/settings/admin/impersonation.tsx
@@ -1,8 +1,10 @@
"use client";

import { signIn } from "next-auth/react";
import { useRef } from "react";
import { useSearchParams } from "next/navigation";
import { useRef, useEffect } from "react";

import { WEBAPP_URL } from "@calcom/lib/constants";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { Button, Meta, TextField } from "@calcom/ui";

Expand All @@ -12,6 +14,19 @@ import { getLayout } from "@components/auth/layouts/AdminLayout";
function AdminView() {
const { t } = useLocale();
const usernameRef = useRef<HTMLInputElement>(null);
const searchParams = useSearchParams();

const username = searchParams?.get("username")?.toLowerCase();

useEffect(() => {
if (username) {
const enteredUsername = username.toLowerCase();
signIn("impersonation-auth", {
username: enteredUsername,
callbackUrl: `${WEBAPP_URL}/event-types`,
});
}
}, [username]);

return (
<>
Expand All @@ -21,7 +36,10 @@ function AdminView() {
onSubmit={(e) => {
e.preventDefault();
const enteredUsername = usernameRef.current?.value.toLowerCase();
signIn("impersonation-auth", { username: enteredUsername });
signIn("impersonation-auth", {
username: enteredUsername,
callbackUrl: `${WEBAPP_URL}/event-types`,
});
}}>
<div className="flex items-center space-x-2 rtl:space-x-reverse">
<TextField
Expand Down
3 changes: 2 additions & 1 deletion apps/web/playwright/impersonation.e2e.ts
Expand Up @@ -29,7 +29,8 @@ test.describe("Users can impersonate", async () => {
await page.getByTestId("impersonation-submit").click();

// // Wait for sign in to complete
await page.waitForURL("/settings/my-account/profile");
await page.waitForURL("/event-types");
await page.goto("/settings/profile");

const stopImpersonatingButton = page.getByTestId("stop-impersonating-button");

Expand Down
6 changes: 6 additions & 0 deletions packages/features/ee/support/lib/intercom/useIntercom.ts
Expand Up @@ -48,6 +48,9 @@ export const useIntercom = () => {
user_name: data?.username,
link: `${WEBSITE_URL}/${data?.username}`,
admin_link: `${WEBAPP_URL}/settings/admin/users/${data?.id}/edit`,
impersonate_user: `${WEBAPP_URL}/settings/admin/impersonation?username=${
data?.email ?? data?.username
}`,
identity_provider: data?.identityProvider,
timezone: data?.timeZone,
locale: data?.locale,
Expand Down Expand Up @@ -88,6 +91,9 @@ export const useIntercom = () => {
user_name: data?.username,
link: `${WEBSITE_URL}/${data?.username}`,
admin_link: `${WEBAPP_URL}/settings/admin/users/${data?.id}/edit`,
impersonate_user: `${WEBAPP_URL}/settings/admin/impersonation?username=${
data?.email ?? data?.username
}`,
identity_provider: data?.identityProvider,
timezone: data?.timeZone,
locale: data?.locale,
Expand Down