mirror of
https://github.com/khairul169/vaulterm.git
synced 2026-09-15 17:03:30 +07:00
feat: team access control
This commit is contained in:
@@ -47,6 +47,7 @@ export default function LoginPage() {
|
||||
marginHorizontal: "auto",
|
||||
},
|
||||
title: "Login",
|
||||
headerTitle: "",
|
||||
headerRight: () => (
|
||||
<ThemeSwitcher bg="$colorTransparent" $gtSm={{ mr: "$3" }} />
|
||||
),
|
||||
|
||||
@@ -8,6 +8,7 @@ import { useTermSession } from "@/stores/terminal-sessions";
|
||||
import { hostFormModal } from "./form";
|
||||
import GridView from "@/components/ui/grid-view";
|
||||
import HostItem from "./host-item";
|
||||
import { useHosts } from "../hooks/query";
|
||||
|
||||
type HostsListProps = {
|
||||
allowEdit?: boolean;
|
||||
@@ -18,11 +19,7 @@ const HostList = ({ allowEdit = true }: HostsListProps) => {
|
||||
const navigation = useNavigation();
|
||||
const [search, setSearch] = useState("");
|
||||
|
||||
const hosts = useQuery({
|
||||
queryKey: ["hosts"],
|
||||
queryFn: () => api("/hosts"),
|
||||
select: (i) => i.rows,
|
||||
});
|
||||
const hosts = useHosts();
|
||||
|
||||
const hostsList = useMemo(() => {
|
||||
let items = hosts.data || [];
|
||||
|
||||
@@ -1,8 +1,19 @@
|
||||
import { useMutation, useQuery } from "@tanstack/react-query";
|
||||
import { FormSchema } from "../schema/form";
|
||||
import api, { queryClient } from "@/lib/api";
|
||||
import api from "@/lib/api";
|
||||
import { useMemo } from "react";
|
||||
import { useKeychains } from "@/pages/keychains/hooks/query";
|
||||
import queryClient from "@/lib/queryClient";
|
||||
import { useTeamId } from "@/stores/auth";
|
||||
|
||||
export const useHosts = () => {
|
||||
const teamId = useTeamId();
|
||||
return useQuery({
|
||||
queryKey: ["hosts", teamId],
|
||||
queryFn: () => api("/hosts", { params: { teamId } }),
|
||||
select: (i) => i.rows,
|
||||
});
|
||||
};
|
||||
|
||||
export const useKeychainsOptions = () => {
|
||||
const keys = useKeychains();
|
||||
@@ -20,8 +31,11 @@ export const useKeychainsOptions = () => {
|
||||
};
|
||||
|
||||
export const useSaveHost = () => {
|
||||
const teamId = useTeamId();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: async (body: FormSchema) => {
|
||||
mutationFn: async (payload: FormSchema) => {
|
||||
const body = { teamId, ...payload };
|
||||
return body.id
|
||||
? api(`/hosts/${body.id}`, { method: "PUT", body })
|
||||
: api(`/hosts`, { method: "POST", body });
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
import api, { queryClient } from "@/lib/api";
|
||||
import api from "@/lib/api";
|
||||
import { useMutation, useQuery } from "@tanstack/react-query";
|
||||
import { FormSchema } from "../schema/form";
|
||||
import queryClient from "@/lib/queryClient";
|
||||
import { useTeamId } from "@/stores/auth";
|
||||
|
||||
export const useKeychains = (params?: any) => {
|
||||
const teamId = useTeamId();
|
||||
const query = { teamId, ...params };
|
||||
|
||||
export const useKeychains = (query?: any) => {
|
||||
return useQuery({
|
||||
queryKey: ["keychains", query],
|
||||
queryFn: () => api("/keychains", { query }),
|
||||
@@ -11,8 +16,11 @@ export const useKeychains = (query?: any) => {
|
||||
};
|
||||
|
||||
export const useSaveKeychain = () => {
|
||||
const teamId = useTeamId();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: async (body: FormSchema) => {
|
||||
mutationFn: async (payload: FormSchema) => {
|
||||
const body = { teamId, ...payload };
|
||||
return body.id
|
||||
? api(`/keychains/${body.id}`, { method: "PUT", body })
|
||||
: api(`/keychains`, { method: "POST", body });
|
||||
|
||||
Reference in New Issue
Block a user