MCPcopy Index your code
hub / github.com/coder/coder / removeToken

Method removeToken

cli/tokens.go:332–386  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

330}
331
332func (r *RootCmd) removeToken() *serpent.Command {
333 var deleteToken bool
334 cmd := &serpent.Command{
335 Use: "remove <name|id|token>",
336 Aliases: []string{"delete"},
337 Short: "Expire or delete a token",
338 Long: "Remove a token by expiring it. Use --delete to permanently hard-" +
339 "delete the token instead.",
340 Middleware: serpent.Chain(
341 serpent.RequireNArgs(1),
342 ),
343 Handler: func(inv *serpent.Invocation) error {
344 client, err := r.InitClient(inv)
345 if err != nil {
346 return err
347 }
348
349 token, err := client.APIKeyByName(inv.Context(), codersdk.Me, inv.Args[0])
350 if err != nil {
351 // If it's a token, we need to extract the ID.
352 maybeID := strings.Split(inv.Args[0], "-")[0]
353 token, err = client.APIKeyByID(inv.Context(), codersdk.Me, maybeID)
354 if err != nil {
355 return xerrors.Errorf("fetch api key by name or id: %w", err)
356 }
357 }
358
359 if deleteToken {
360 err = client.DeleteAPIKey(inv.Context(), codersdk.Me, token.ID)
361 if err != nil {
362 return xerrors.Errorf("delete api key: %w", err)
363 }
364 cliui.Infof(inv.Stdout, "Token has been deleted.")
365 return nil
366 }
367
368 err = client.ExpireAPIKey(inv.Context(), codersdk.Me, token.ID)
369 if err != nil {
370 return xerrors.Errorf("expire api key: %w", err)
371 }
372 cliui.Infof(inv.Stdout, "Token has been expired.")
373 return nil
374 },
375 }
376
377 cmd.Options = serpent.OptionSet{
378 {
379 Flag: "delete",
380 Description: "Permanently delete the token instead of expiring it. This removes the audit trail.",
381 Value: serpent.BoolOf(&deleteToken),
382 },
383 }
384
385 return cmd
386}

Callers 1

tokensMethod · 0.95

Calls 8

InitClientMethod · 0.95
InfofFunction · 0.92
APIKeyByNameMethod · 0.80
APIKeyByIDMethod · 0.80
DeleteAPIKeyMethod · 0.80
ExpireAPIKeyMethod · 0.80
ContextMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected