Skip to main content
Glama
admin.ts4.71 kB
import type { GiteaClient } from '../gitea-client.js'; import type { ContextManager } from '../context-manager.js'; import { createLogger } from '../logger.js'; const logger = createLogger('tools:admin'); export interface AdminToolsContext { client: GiteaClient; contextManager: ContextManager; } // Base params with token export interface AdminParams { token?: string; } // Create user (admin only) export interface CreateUserParams extends AdminParams { username: string; email: string; password: string; full_name?: string; login_name?: string; must_change_password?: boolean; send_notify?: boolean; source_id?: number; visibility?: string; } export async function createUser( ctx: AdminToolsContext, params: CreateUserParams ): Promise<unknown> { logger.info({ username: params.username, email: params.email }, 'Creating user (admin)'); const body: any = { username: params.username, email: params.email, password: params.password, }; if (params.full_name !== undefined) body.full_name = params.full_name; if (params.login_name !== undefined) body.login_name = params.login_name; if (params.must_change_password !== undefined) body.must_change_password = params.must_change_password; if (params.send_notify !== undefined) body.send_notify = params.send_notify; if (params.source_id !== undefined) body.source_id = params.source_id; if (params.visibility !== undefined) body.visibility = params.visibility; const response = await ctx.client.request({ method: 'POST', path: '/admin/users', body, token: params.token, }); return response.data; } // Delete user (admin only) export interface DeleteUserParams extends AdminParams { username: string; purge?: boolean; } export async function deleteUser( ctx: AdminToolsContext, params: DeleteUserParams ): Promise<unknown> { logger.info({ username: params.username, purge: params.purge }, 'Deleting user (admin)'); const queryParams: Record<string, string> = {}; if (params.purge !== undefined) queryParams.purge = String(params.purge); const response = await ctx.client.request({ method: 'DELETE', path: `/admin/users/${encodeURIComponent(params.username)}`, query: queryParams, token: params.token, }); return response.data; } // Edit user (admin only) export interface EditUserParams extends AdminParams { username: string; active?: boolean; admin?: boolean; allow_create_organization?: boolean; allow_git_hook?: boolean; allow_import_local?: boolean; description?: string; email?: string; full_name?: string; location?: string; login_name?: string; max_repo_creation?: number; must_change_password?: boolean; password?: string; prohibit_login?: boolean; restricted?: boolean; source_id?: number; visibility?: string; website?: string; } export async function editUser( ctx: AdminToolsContext, params: EditUserParams ): Promise<unknown> { logger.info({ username: params.username }, 'Editing user (admin)'); const body: any = {}; if (params.active !== undefined) body.active = params.active; if (params.admin !== undefined) body.admin = params.admin; if (params.allow_create_organization !== undefined) body.allow_create_organization = params.allow_create_organization; if (params.allow_git_hook !== undefined) body.allow_git_hook = params.allow_git_hook; if (params.allow_import_local !== undefined) body.allow_import_local = params.allow_import_local; if (params.description !== undefined) body.description = params.description; if (params.email !== undefined) body.email = params.email; if (params.full_name !== undefined) body.full_name = params.full_name; if (params.location !== undefined) body.location = params.location; if (params.login_name !== undefined) body.login_name = params.login_name; if (params.max_repo_creation !== undefined) body.max_repo_creation = params.max_repo_creation; if (params.must_change_password !== undefined) body.must_change_password = params.must_change_password; if (params.password !== undefined) body.password = params.password; if (params.prohibit_login !== undefined) body.prohibit_login = params.prohibit_login; if (params.restricted !== undefined) body.restricted = params.restricted; if (params.source_id !== undefined) body.source_id = params.source_id; if (params.visibility !== undefined) body.visibility = params.visibility; if (params.website !== undefined) body.website = params.website; const response = await ctx.client.request({ method: 'PATCH', path: `/admin/users/${encodeURIComponent(params.username)}`, body, token: params.token, }); return response.data; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SupenBysz/gitea-mcp-tool'

If you have feedback or need assistance with the MCP directory API, please join our Discord server