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

Function setupFirstUser

scripts/develop/main.go:883–961  ·  view source on GitHub ↗
(ctx context.Context, logger slog.Logger, cfg *devConfig, apiURL string)

Source from the content-addressed store, hash-verified

881}
882
883func setupFirstUser(ctx context.Context, logger slog.Logger, cfg *devConfig, apiURL string) (*codersdk.Client, error) {
884 serverURL, _ := url.Parse(apiURL)
885 client := codersdk.New(serverURL)
886 cfgRoot := config.Root(cfg.configDir)
887
888 // Try reusing an existing session.
889 loggedIn := false
890 if token, err := cfgRoot.Session().Read(); err == nil && token != "" {
891 client.SetSessionToken(token)
892 if _, err := client.User(ctx, codersdk.Me); err == nil {
893 loggedIn = true
894 } else {
895 client.SetSessionToken("")
896 }
897 }
898
899 if !loggedIn {
900 hasUser, err := client.HasFirstUser(ctx)
901 if err != nil {
902 return nil, xerrors.Errorf("checking first user: %w", err)
903 }
904 if !hasUser {
905 logger.Info(ctx, "creating first user",
906 slog.F("email", "admin@coder.com"),
907 slog.F("password", cfg.password))
908 _, err := client.CreateFirstUser(ctx, codersdk.CreateFirstUserRequest{
909 Email: "admin@coder.com",
910 Username: "admin",
911 Name: "Admin User",
912 Password: cfg.password,
913 })
914 if err != nil {
915 return nil, xerrors.Errorf("creating first user: %w", err)
916 }
917 }
918
919 loginResp, err := client.LoginWithPassword(ctx, codersdk.LoginWithPasswordRequest{
920 Email: "admin@coder.com",
921 Password: cfg.password,
922 })
923 if err != nil {
924 return nil, xerrors.Errorf("login: %w", err)
925 }
926 client.SetSessionToken(loginResp.SessionToken)
927
928 if err := cfgRoot.Session().Write(loginResp.SessionToken); err != nil {
929 return nil, xerrors.Errorf("writing session: %w", err)
930 }
931 if err := cfgRoot.URL().Write(apiURL); err != nil {
932 return nil, xerrors.Errorf("writing url: %w", err)
933 }
934 }
935 logger.Info(ctx, "authenticated as admin user", slog.F("email", "admin@coder.com"))
936
937 // Look up the default org for member creation.
938 defaultOrg, err := client.OrganizationByName(ctx, codersdk.DefaultOrganization)
939 if err != nil {
940 return nil, xerrors.Errorf("looking up default org: %w", err)

Callers 1

developFunction · 0.85

Calls 15

NewFunction · 0.92
RootTypeAlias · 0.92
SetSessionTokenMethod · 0.80
HasFirstUserMethod · 0.80
CreateFirstUserMethod · 0.80
LoginWithPasswordMethod · 0.80
OrganizationByNameMethod · 0.80
CreateUserWithOrgsMethod · 0.80
ParseMethod · 0.65
ReadMethod · 0.65
SessionMethod · 0.65
UserMethod · 0.65

Tested by

no test coverage detected