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

Method createToken

cli/tokens.go:54–155  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

52}
53
54func (r *RootCmd) createToken() *serpent.Command {
55 var (
56 tokenLifetime string
57 name string
58 user string
59 scopes []string
60 allowList []codersdk.APIAllowListTarget
61 )
62 cmd := &serpent.Command{
63 Use: "create",
64 Short: "Create a token",
65 Middleware: serpent.Chain(
66 serpent.RequireNArgs(0),
67 ),
68 Handler: func(inv *serpent.Invocation) error {
69 client, err := r.InitClient(inv)
70 if err != nil {
71 return err
72 }
73
74 userID := codersdk.Me
75 if user != "" {
76 userID = user
77 }
78
79 var parsedLifetime time.Duration
80
81 tokenConfig, err := client.GetTokenConfig(inv.Context(), userID)
82 if err != nil {
83 return xerrors.Errorf("get token config: %w", err)
84 }
85
86 if tokenLifetime == "" {
87 parsedLifetime = tokenConfig.MaxTokenLifetime
88 } else {
89 parsedLifetime, err = extendedParseDuration(tokenLifetime)
90 if err != nil {
91 return xerrors.Errorf("parse lifetime: %w", err)
92 }
93
94 if parsedLifetime > tokenConfig.MaxTokenLifetime {
95 return xerrors.Errorf("lifetime (%s) is greater than the maximum allowed lifetime (%s)", parsedLifetime, tokenConfig.MaxTokenLifetime)
96 }
97 }
98
99 req := codersdk.CreateTokenRequest{
100 Lifetime: parsedLifetime,
101 TokenName: name,
102 }
103 if len(req.Scopes) == 0 {
104 req.Scopes = slice.StringEnums[codersdk.APIKeyScope](scopes)
105 }
106 if len(allowList) > 0 {
107 req.AllowList = append([]codersdk.APIAllowListTarget(nil), allowList...)
108 }
109
110 res, err := client.CreateToken(inv.Context(), userID, req)
111 if err != nil {

Callers 1

tokensMethod · 0.95

Calls 7

InitClientMethod · 0.95
extendedParseDurationFunction · 0.85
AllowListFlagOfFunction · 0.85
GetTokenConfigMethod · 0.80
CreateTokenMethod · 0.80
ContextMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected