Disable org link when user is deactivated

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-02-18 16:59:52 +04:00
parent ab5fe8e5e2
commit 13aef29ddf
4 changed files with 90 additions and 67 deletions

View File

@@ -26,9 +26,7 @@ export const membershipsPageQuery = graphql`
edges @required(action: THROW) {
node {
id
membership @required(action: THROW) {
...MembershipCardFragment
}
organization @required(action: THROW) {
name
...MembershipCard_organizationFragment
@@ -94,7 +92,7 @@ export function MembershipsPage(props: {
profiles.map(({ node }) => (
<MembershipCard
key={node.id}
fKey={node.membership}
fKey={node}
organizationFragmentRef={node.organization}
/>
))

View File

@@ -17,10 +17,13 @@ import type { MembershipCard_organizationFragment$key } from "#/__generated__/ia
import type { MembershipCardFragment$key } from "#/__generated__/iam/MembershipCardFragment.graphql";
const fragment = graphql`
fragment MembershipCardFragment on Membership {
lastSession {
id
expiresAt
fragment MembershipCardFragment on Profile {
state
membership @required(action: THROW) {
lastSession {
id
expiresAt
}
}
}
`;
@@ -42,7 +45,7 @@ export function MembershipCard(props: MembershipCardProps) {
const { fKey, organizationFragmentRef } = props;
const { __ } = useTranslate();
const { lastSession } = useFragment<MembershipCardFragment$key>(
const { membership, ...user } = useFragment<MembershipCardFragment$key>(
fragment,
fKey,
);
@@ -51,8 +54,8 @@ export function MembershipCard(props: MembershipCardProps) {
organizationFragmentRef,
);
const isExpired
= lastSession && parseDate(lastSession.expiresAt) < new Date();
const isAssuming = !!lastSession && !isExpired;
= membership.lastSession && parseDate(membership.lastSession.expiresAt) < new Date();
const isAssuming = !!membership.lastSession && !isExpired;
const getAuthBadge = () => {
if (isAssuming) {
@@ -94,11 +97,17 @@ export function MembershipCard(props: MembershipCardProps) {
</div>
</div>
<div className="flex items-center gap-3">
<Link to={`/organizations/${organization.id}`}>
{isAssuming
? <Button variant="secondary">{__("Start")}</Button>
: <Button>{__("Login")}</Button>}
</Link>
{user.state === "ACTIVE"
? (
<Link to={`/organizations/${organization.id}`}>
{isAssuming
? <Button variant="secondary">{__("Start")}</Button>
: <Button>{__("Login")}</Button>}
</Link>
)
: (
<Button variant="secondary" disabled>{__("Account deactivated")}</Button>
)}
</div>
</div>
</Card>