setup server admin

This commit is contained in:
Milo Schwartz
2024-12-25 15:54:32 -05:00
parent e0b1aa98e0
commit 4a1e869e58
29 changed files with 409 additions and 251 deletions

View File

@@ -96,12 +96,18 @@ export default function Disable2FaForm({ open, setOpen }: Disable2FaProps) {
setLoading(false);
};
function reset() {
disableForm.reset();
setStep("password");
setLoading(false);
}
return (
<Credenza
open={open}
onOpenChange={(val) => {
setOpen(val);
setLoading(false);
reset();
}}
>
<CredenzaContent>

View File

@@ -154,12 +154,25 @@ export default function Enable2FaForm({ open, setOpen }: Enable2FaProps) {
}
};
function reset() {
setLoading(false);
setStep(1);
setSecretKey("");
setSecretUri("");
setVerificationCode("");
setError("");
setSuccess(false);
setBackupCodes([]);
enableForm.reset();
confirmForm.reset();
}
return (
<Credenza
open={open}
onOpenChange={(val) => {
setOpen(val);
setLoading(false);
reset();
}}
>
<CredenzaContent>

View File

@@ -67,7 +67,9 @@ export function Header({ orgId, orgs }: HeaderProps) {
const router = useRouter();
const api = createApiClient(useEnvContext());
const { env } = useEnvContext();
const api = createApiClient({ env });
function getInitials() {
return user.email.substring(0, 2).toUpperCase();
@@ -126,6 +128,11 @@ export function Header({ orgId, orgs }: HeaderProps) {
{user.email}
</p>
</div>
{user.serverAdmin && (
<p className="text-xs leading-none text-muted-foreground mt-2">
Server Admin
</p>
)}
</DropdownMenuLabel>
<DropdownMenuSeparator />
{!user.twoFactorEnabled && (
@@ -237,19 +244,28 @@ export function Header({ orgId, orgs }: HeaderProps) {
<CommandEmpty>
No organizations found.
</CommandEmpty>
<CommandGroup heading="Create">
<CommandList>
<CommandItem
onSelect={(currentValue) => {
router.push("/setup");
}}
>
<Plus className="mr-2 h-4 w-4" />
New Organization
</CommandItem>
</CommandList>
</CommandGroup>
<CommandSeparator />
{(env.DISABLE_USER_CREATE_ORG === "false" ||
user.serverAdmin) && (
<>
<CommandGroup heading="Create">
<CommandList>
<CommandItem
onSelect={(
currentValue
) => {
router.push(
"/setup"
);
}}
>
<Plus className="mr-2 h-4 w-4" />
New Organization
</CommandItem>
</CommandList>
</CommandGroup>
<CommandSeparator />
</>
)}
<CommandGroup heading="Organizations">
<CommandList>
{orgs.map((org) => (

View File

@@ -57,7 +57,9 @@ const mfaSchema = z.object({
export default function LoginForm({ redirect, onLogin }: LoginFormProps) {
const router = useRouter();
const api = createApiClient(useEnvContext());
const { env } = useEnvContext();
const api = createApiClient({ env });
const [error, setError] = useState<string | null>(null);
const [loading, setLoading] = useState(false);