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

Method loginWithPassword

cli/login.go:103–140  ·  view source on GitHub ↗
(
	inv *serpent.Invocation,
	client *codersdk.Client,
	email, password string,
)

Source from the content-addressed store, hash-verified

101}
102
103func (r *RootCmd) loginWithPassword(
104 inv *serpent.Invocation,
105 client *codersdk.Client,
106 email, password string,
107) error {
108 resp, err := client.LoginWithPassword(inv.Context(), codersdk.LoginWithPasswordRequest{
109 Email: email,
110 Password: password,
111 })
112 if err != nil {
113 return xerrors.Errorf("login with password: %w", err)
114 }
115
116 sessionToken := resp.SessionToken
117 err = r.ensureTokenBackend().Write(client.URL, sessionToken)
118 if err != nil {
119 if xerrors.Is(err, sessionstore.ErrNotImplemented) {
120 return errKeyringNotSupported
121 }
122 return xerrors.Errorf("write session token: %w", err)
123 }
124
125 client.SetSessionToken(sessionToken)
126
127 // Nice side-effect: validates the token.
128 u, err := client.User(inv.Context(), "me")
129 if err != nil {
130 return xerrors.Errorf("get user: %w", err)
131 }
132
133 _, _ = fmt.Fprintf(
134 inv.Stdout,
135 "Welcome to Coder, %s! You're authenticated.",
136 pretty.Sprint(cliui.DefaultStyles.Keyword, u.Username),
137 )
138
139 return nil
140}
141
142func (r *RootCmd) login() *serpent.Command {
143 const firstUserTrialEnv = "CODER_FIRST_USER_TRIAL"

Callers 1

loginMethod · 0.95

Calls 8

ensureTokenBackendMethod · 0.95
LoginWithPasswordMethod · 0.80
SetSessionTokenMethod · 0.80
ContextMethod · 0.65
WriteMethod · 0.65
UserMethod · 0.65
ErrorfMethod · 0.45
IsMethod · 0.45

Tested by

no test coverage detected