mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-13 14:37:26 +00:00
feat(credentials): manage team members and rotate invites
This commit is contained in:
parent
fd253b0485
commit
e4723f31b1
10 changed files with 531 additions and 61 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@logicsrc/plugin-credential-sharing",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"description": "LogicSRC Credential Sharing OpenSpec plugin: portable, auditable secret sync across .env, Doppler, Railway, and GitHub Secrets.",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ export interface RemoteTeam {
|
|||
}
|
||||
|
||||
export interface RemoteMember {
|
||||
id: string;
|
||||
email: string;
|
||||
role: "owner" | "admin" | "member";
|
||||
status: "active" | "invited";
|
||||
|
|
@ -136,12 +137,25 @@ export class TeamClient {
|
|||
return this.request<{ members: RemoteMember[] }>("GET", `/teams/${encodeURIComponent(slug)}/members`);
|
||||
}
|
||||
invite(slug: string, email: string, role?: "owner" | "admin" | "member") {
|
||||
return this.request<{ invite: { id: string; email: string; role: string; expiresAt: string }; emailSent: boolean; token?: string }>(
|
||||
return this.request<{ invite: { id: string; email: string; role: string; expiresAt: number }; emailSent: boolean; resent: boolean; token?: string }>(
|
||||
"POST",
|
||||
`/teams/${encodeURIComponent(slug)}/invites`,
|
||||
{ email, role }
|
||||
);
|
||||
}
|
||||
updateMemberRole(slug: string, memberId: string, role: "owner" | "admin" | "member") {
|
||||
return this.request<{ member: Pick<RemoteMember, "id" | "email" | "role" | "status"> }>(
|
||||
"PATCH",
|
||||
`/teams/${encodeURIComponent(slug)}/members/${encodeURIComponent(memberId)}`,
|
||||
{ role }
|
||||
);
|
||||
}
|
||||
removeMember(slug: string, memberId: string) {
|
||||
return this.request<{ ok: boolean; removed: string; revokedVaultGrants: number; rotationRequired: boolean }>(
|
||||
"DELETE",
|
||||
`/teams/${encodeURIComponent(slug)}/members/${encodeURIComponent(memberId)}`
|
||||
);
|
||||
}
|
||||
acceptInvite(token: string) {
|
||||
return this.request<{ ok: boolean; team?: RemoteTeam }>("POST", "/invites/accept", { token });
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue