diff --git a/src/components/pages/admin/users/deployment-user/index.tsx b/src/components/pages/admin/users/deployment-user/index.tsx index be5e659..253d5e3 100644 --- a/src/components/pages/admin/users/deployment-user/index.tsx +++ b/src/components/pages/admin/users/deployment-user/index.tsx @@ -13,6 +13,8 @@ export default function Main() { return null; } + console.log("deployment_user", deployment_user); + const is_super_admin = Boolean(deployment_user.is_super_admin); return ( diff --git a/src/components/pages/auth/signup/(hooks)/use-signup-form.ts b/src/components/pages/auth/signup/(hooks)/use-signup-form.ts index 52a5ecf..a0d38c5 100644 --- a/src/components/pages/auth/signup/(hooks)/use-signup-form.ts +++ b/src/components/pages/auth/signup/(hooks)/use-signup-form.ts @@ -1,3 +1,4 @@ +import { NSQLITE_TURBOCI_ADMIN_USERS } from "@/src/db/types"; import { AppContext } from "@/src/pages/_app"; import { TurboCISignupFormObject } from "@/src/types"; import useStatus from "@/twui/components/hooks/useStatus"; @@ -5,11 +6,17 @@ import { useContext, useState } from "react"; type Params = { new_deployment_user?: boolean; + existing_user?: NSQLITE_TURBOCI_ADMIN_USERS; }; -export default function useSignupForm({ new_deployment_user }: Params) { +export default function useSignupForm({ + new_deployment_user, + existing_user, +}: Params) { const { pageProps } = useContext(AppContext); - const [newUser, setNewUser] = useState({}); + const [newUser, setNewUser] = useState( + existing_user || {}, + ); const { loading, setLoading } = useStatus(); const [isPasswordConfirmed, setIsPasswordConfirmed] = useState(false); diff --git a/src/components/pages/auth/signup/(partials)/signup-form.tsx b/src/components/pages/auth/signup/(partials)/signup-form.tsx index c1732e4..ac58cc6 100644 --- a/src/components/pages/auth/signup/(partials)/signup-form.tsx +++ b/src/components/pages/auth/signup/(partials)/signup-form.tsx @@ -6,12 +6,17 @@ import fetchApi from "@/twui/components/utils/fetch/fetchApi"; import { APIReqObject } from "@/src/types"; import { APIResponseObject } from "@moduletrace/datasquirel/dist/package-shared/types"; import { useEffect } from "react"; +import { NSQLITE_TURBOCI_ADMIN_USERS } from "@/src/db/types"; type Props = { new_deployment_user?: boolean; + existing_user?: NSQLITE_TURBOCI_ADMIN_USERS; }; -export default function SignupForm({ new_deployment_user }: Props) { +export default function SignupForm({ + new_deployment_user, + existing_user, +}: Props) { const { newUser, setNewUser, @@ -20,7 +25,7 @@ export default function SignupForm({ new_deployment_user }: Props) { isPasswordConfirmed, setIsPasswordConfirmed, pageProps, - } = useSignupForm({ new_deployment_user }); + } = useSignupForm({ new_deployment_user, existing_user }); const is_password_valid = Boolean( isPasswordConfirmed && @@ -140,7 +145,11 @@ export default function SignupForm({ new_deployment_user }: Props) { return; } - if (!window.confirm(`Create Super Admin Account?`)) { + const confirm_msg = pageProps.user.id + ? `Add New User?` + : `Create Super Admin Account?`; + + if (!window.confirm(confirm_msg)) { return; } @@ -156,17 +165,23 @@ export default function SignupForm({ new_deployment_user }: Props) { }, ) .then((res) => { - console.log("res", res); - if (res.success) { - window.location.reload(); + if (pageProps.user.id) { + window.location.pathname = `/admin/users`; + } else { + window.location.reload(); + } } }) .finally(() => {}); }} loading={loading} > - {pageProps.user.super_admin ? "Add User" : "Signup"} + {existing_user?.id + ? `` + : pageProps.user.super_admin + ? "Add User" + : "Signup"} diff --git a/src/functions/deployment-users/setup-deployment-user.ts b/src/functions/deployment-users/setup-deployment-user.ts index 11efc6f..1421d97 100644 --- a/src/functions/deployment-users/setup-deployment-user.ts +++ b/src/functions/deployment-users/setup-deployment-user.ts @@ -18,9 +18,11 @@ export default async function setupDeploymentUser({ user_id }: Params) { targetId: _n(user_id), }); + console.log("target_user_res", target_user_res); + const target_user = target_user_res.singleRes; - if (!target_user?.id) { + if (!target_user?.id || !target_user.username) { return; } diff --git a/src/pages/api/admin/delete-user.ts b/src/pages/api/admin/delete-user.ts new file mode 100644 index 0000000..92fcb05 --- /dev/null +++ b/src/pages/api/admin/delete-user.ts @@ -0,0 +1,36 @@ +import loginUser from "@/src/functions/auth/login-user"; +import { NSQLITE_TURBOCI_ADMIN_USERS } from "@/src/db/types"; +import userAuth from "@/src/utils/user-auth"; +import NSQLite from "@moduletrace/nsqlite"; +import { APIResponseObject } from "@moduletrace/datasquirel/dist/package-shared/types"; +import type { NextApiRequest, NextApiResponse } from "next"; +import { APIReqObject } from "@/src/types"; + +export default async function handler( + req: NextApiRequest, + res: NextApiResponse, +) { + try { + if (req.method !== "POST") { + return res.json({ + success: false, + msg: "Wrong Method", + }); + } + + const { singleRes: user } = await userAuth({ req }); + + if (!user?.id || !user.super_admin) { + return res.json({ + success: false, + msg: "Unauthorized", + }); + } + + return res.json({ + success: true, + }); + } catch (error: any) { + return res.json({ success: false, msg: error.message }); + } +} diff --git a/src/utils/grab-deployment-user-dir-names.ts b/src/utils/grab-deployment-user-dir-names.ts index 4be6342..8d69024 100644 --- a/src/utils/grab-deployment-user-dir-names.ts +++ b/src/utils/grab-deployment-user-dir-names.ts @@ -11,7 +11,7 @@ export default function grabDeploymentUserDirNames({ user }: Params) { const user_dir = `/home/${username}`; const ssh_dir = `${user_dir}/.ssh`; const ssh_key_file = `${ssh_dir}/${username}`; - const sshd_config_file = `/etc/ssh/sshd_config.d/${username}`; + const sshd_config_file = `/etc/ssh/sshd_config.d/${username}.conf`; const force_command_file = `/usr/local/bin/turboci-deployment-user-${username}`; return {