mirror of
https://github.com/rustfs/console.git
synced 2026-08-29 03:52:28 +08:00
140 lines
3.5 KiB
TypeScript
140 lines
3.5 KiB
TypeScript
"use client"
|
|
|
|
import { useCallback } from "react"
|
|
import { useApiOptional } from "@/contexts/api-context"
|
|
import {
|
|
buildCreateUserServiceAccountRequest,
|
|
buildListUserServiceAccountsRequest,
|
|
} from "@/lib/user-service-account-api"
|
|
|
|
export function useUsers() {
|
|
const api = useApiOptional()
|
|
|
|
type UserRequestOptions = {
|
|
suppress403Redirect?: boolean
|
|
}
|
|
|
|
const listUsers = useCallback(async () => {
|
|
if (!api) return null
|
|
return api.get("/list-users")
|
|
}, [api])
|
|
|
|
const createUser = useCallback(
|
|
async (data: Record<string, unknown>, options?: UserRequestOptions) => {
|
|
if (!api) return null
|
|
const { accessKey, ...rest } = data
|
|
return api.put(`/add-user?accessKey=${encodeURIComponent(accessKey as string)}`, rest, options)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const getUser = useCallback(
|
|
async (name: string) => {
|
|
if (!api) return null
|
|
return api.get(`/user-info?accessKey=${encodeURIComponent(name)}`)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const updateUser = useCallback(
|
|
async (name: string, data: Record<string, unknown>) => {
|
|
if (!api) return null
|
|
return api.put(`/user/${encodeURIComponent(name)}`, data)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const changeUserStatus = useCallback(
|
|
async (name: string, data: { status: string }) => {
|
|
if (!api) return null
|
|
return api.put(`/set-user-status?accessKey=${encodeURIComponent(name)}&status=${data.status}`, data)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const deleteUser = useCallback(
|
|
async (name: string) => {
|
|
if (!api) return null
|
|
return api.delete(`/remove-user?accessKey=${encodeURIComponent(name)}`, {})
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const updateUserGroups = useCallback(
|
|
async (name: string, data: Record<string, unknown>) => {
|
|
if (!api) return null
|
|
return api.put(`/user/${encodeURIComponent(name)}/groups`, data)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const getUserPolicy = useCallback(async () => {
|
|
if (!api) return null
|
|
return api.get("/user/policy")
|
|
}, [api])
|
|
|
|
const getSaUserPolicy = useCallback(
|
|
async (name: string) => {
|
|
if (!api) return null
|
|
return api.get(`/user/${encodeURIComponent(name)}/policies`)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const setPolicy = useCallback(
|
|
async (data: Record<string, unknown>) => {
|
|
if (!api) return null
|
|
return api.put("/set-policy", data)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const listAllUserServiceAccounts = useCallback(
|
|
async (name: string) => {
|
|
if (!api) return null
|
|
const request = buildListUserServiceAccountsRequest(name)
|
|
return api.get(request.url, { params: request.params })
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const createAUserServiceAccount = useCallback(
|
|
async (name: string, data: Record<string, unknown>) => {
|
|
if (!api) return null
|
|
const request = buildCreateUserServiceAccountRequest(name, data)
|
|
return api.put(request.url, request.body)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const createServiceAccountCredentials = useCallback(
|
|
async (name: string, data: Record<string, unknown>) => {
|
|
if (!api) return null
|
|
return api.post(`/user/${encodeURIComponent(name)}/service-account-credentials`, data)
|
|
},
|
|
[api],
|
|
)
|
|
|
|
const isAdminUser = useCallback(async () => {
|
|
if (!api) return null
|
|
return api.get("/is-admin") as Promise<{ is_admin?: boolean }>
|
|
}, [api])
|
|
|
|
return {
|
|
listUsers,
|
|
createUser,
|
|
getUser,
|
|
deleteUser,
|
|
changeUserStatus,
|
|
updateUser,
|
|
updateUserGroups,
|
|
getUserPolicy,
|
|
setPolicy,
|
|
getSaUserPolicy,
|
|
listAllUserServiceAccounts,
|
|
createAUserServiceAccount,
|
|
createServiceAccountCredentials,
|
|
isAdminUser,
|
|
}
|
|
}
|