mirror of
https://github.com/fosrl/pangolin.git
synced 2026-08-15 00:39:43 +02:00
Merge branch 'dev' of github.com:fosrl/pangolin into dev
This commit is contained in:
@@ -4,19 +4,26 @@ import { eq } from "drizzle-orm";
|
|||||||
|
|
||||||
type SetServerAdminArgs = {
|
type SetServerAdminArgs = {
|
||||||
email: string;
|
email: string;
|
||||||
|
remove: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const setServerAdmin: CommandModule<{}, SetServerAdminArgs> = {
|
export const setServerAdmin: CommandModule<{}, SetServerAdminArgs> = {
|
||||||
command: "set-server-admin",
|
command: "set-server-admin",
|
||||||
describe: "Mark any user as a server admin by email address",
|
describe: "Add or remove server admin by email address",
|
||||||
builder: (yargs) => {
|
builder: (yargs) => {
|
||||||
return yargs.option("email", {
|
return yargs
|
||||||
type: "string",
|
.option("email", {
|
||||||
demandOption: true,
|
type: "string",
|
||||||
describe: "User email address"
|
demandOption: true,
|
||||||
});
|
describe: "User email address"
|
||||||
|
})
|
||||||
|
.option("remove", {
|
||||||
|
type: "boolean",
|
||||||
|
default: false,
|
||||||
|
describe: "Remove server admin status from the user"
|
||||||
|
});
|
||||||
},
|
},
|
||||||
handler: async (argv: { email: string }) => {
|
handler: async (argv: SetServerAdminArgs) => {
|
||||||
try {
|
try {
|
||||||
const email = argv.email.trim().toLowerCase();
|
const email = argv.email.trim().toLowerCase();
|
||||||
|
|
||||||
@@ -31,6 +38,33 @@ export const setServerAdmin: CommandModule<{}, SetServerAdminArgs> = {
|
|||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argv.remove) {
|
||||||
|
if (!user.serverAdmin) {
|
||||||
|
console.log(`User '${email}' is not a server admin`);
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
const serverAdmins = await db
|
||||||
|
.select()
|
||||||
|
.from(users)
|
||||||
|
.where(eq(users.serverAdmin, true));
|
||||||
|
|
||||||
|
if (serverAdmins.length <= 1) {
|
||||||
|
console.error(
|
||||||
|
"Cannot remove server admin: at least one server admin must exist"
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
await db
|
||||||
|
.update(users)
|
||||||
|
.set({ serverAdmin: false })
|
||||||
|
.where(eq(users.userId, user.userId));
|
||||||
|
|
||||||
|
console.log(`Server admin status removed from user '${email}'`);
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
if (user.serverAdmin) {
|
if (user.serverAdmin) {
|
||||||
console.log(`User '${email}' is already a server admin`);
|
console.log(`User '${email}' is already a server admin`);
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
|
|||||||
@@ -526,7 +526,7 @@ export default function Page() {
|
|||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{t("name")}w
|
{t("name")}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<Input
|
<Input
|
||||||
|
|||||||
Reference in New Issue
Block a user