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

Function externalAuthAccessToken

cli/externalauth.go:28–113  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

26}
27
28func externalAuthAccessToken() *serpent.Command {
29 var extra string
30 agentAuth := &AgentAuth{}
31 cmd := &serpent.Command{
32 Use: "access-token <provider>",
33 Short: "Print auth for an external provider",
34 Long: "Print an access-token for an external auth provider. " +
35 "The access-token will be validated and sent to stdout with exit code 0. " +
36 "If a valid access-token cannot be obtained, the URL to authenticate will be sent to stdout with exit code 1\n" + FormatExamples(
37 Example{
38 Description: "Ensure that the user is authenticated with GitHub before cloning.",
39 Command: `#!/usr/bin/env sh
40
41OUTPUT=$(coder external-auth access-token github)
42if [ $? -eq 0 ]; then
43 echo "Authenticated with GitHub"
44else
45 echo "Please authenticate with GitHub:"
46 echo $OUTPUT
47fi
48`,
49 },
50 Example{
51 Description: "Obtain an extra property of an access token for additional metadata.",
52 Command: "coder external-auth access-token slack --extra \"authed_user.id\"",
53 },
54 ),
55 Middleware: serpent.Chain(
56 serpent.RequireNArgs(1),
57 ),
58 Options: serpent.OptionSet{{
59 Name: "Extra",
60 Flag: "extra",
61 Description: "Extract a field from the \"extra\" properties of the OAuth token.",
62 Value: serpent.StringOf(&extra),
63 }},
64
65 Handler: func(inv *serpent.Invocation) error {
66 ctx := inv.Context()
67
68 ctx, stop := inv.SignalNotifyContext(ctx, StopSignals...)
69 defer stop()
70
71 client, err := agentAuth.CreateClient()
72 if err != nil {
73 return xerrors.Errorf("create agent client: %w", err)
74 }
75
76 extAuth, err := client.ExternalAuth(ctx, agentsdk.ExternalAuthRequest{
77 ID: inv.Args[0],
78 })
79 if err != nil {
80 return xerrors.Errorf("get external auth token: %w", err)
81 }
82 if extAuth.URL != "" {
83 _, err = inv.Stdout.Write([]byte(extAuth.URL))
84 if err != nil {
85 return err

Callers 1

externalAuthFunction · 0.85

Calls 9

CreateClientMethod · 0.95
AttachOptionsMethod · 0.95
FormatExamplesFunction · 0.85
ExternalAuthMethod · 0.80
ContextMethod · 0.65
WriteMethod · 0.65
ErrorfMethod · 0.45
MarshalMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected