func whoAmI(clientConfig *restclient.Config) (*api.User, error) { client, err := client.New(clientConfig) me, err := client.Users().Get("~") // if we're talking to kube (or likely talking to kube), if kerrors.IsNotFound(err) { switch { case len(clientConfig.BearerToken) > 0: // the user has already been willing to provide the token on the CLI, so they probably // don't mind using it again if they switch to and from this user return &api.User{ObjectMeta: kapi.ObjectMeta{Name: clientConfig.BearerToken}}, nil case len(clientConfig.Username) > 0: return &api.User{ObjectMeta: kapi.ObjectMeta{Name: clientConfig.Username}}, nil } } if err != nil { return nil, err } return me, nil }
func (o *CreateUserOptions) Complete(cmd *cobra.Command, f *clientcmd.Factory, args []string) error { switch len(args) { case 0: return fmt.Errorf("username is required") case 1: o.Name = args[0] default: return fmt.Errorf("exactly one argument (username) is supported, not: %v", args) } client, _, err := f.Clients() if err != nil { return err } o.UserClient = client.Users() o.Mapper, _ = f.Object(false) o.OutputFormat = cmdutil.GetFlagString(cmd, "output") o.Printer = func(obj runtime.Object, out io.Writer) error { return f.PrintObject(cmd, o.Mapper, obj, out) } return nil }
func (a *Authenticator) AuthenticatePassword(username, password string) (user.Info, bool, error) { token, ok, err := a.token.AuthenticatePassword(username, password) if !ok || err != nil { return nil, false, err } auth := oclient.OAuthWrapper{a.rt, token} client, err := client.New(&kclient.Config{Transport: auth, Host: a.host}) if err != nil { return nil, false, err } u, err := client.Users().Get("~") if err != nil { return nil, false, err } info := &user.DefaultInfo{ Name: u.Name, UID: string(u.UID), } return info, true, nil }