github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/engine/login_offline.go (about)

     1  package engine
     2  
     3  import (
     4  	"github.com/keybase/client/go/libkb"
     5  	keybase1 "github.com/keybase/client/go/protocol/keybase1"
     6  )
     7  
     8  type LoginOffline struct {
     9  	libkb.Contextified
    10  }
    11  
    12  func NewLoginOffline(g *libkb.GlobalContext) *LoginOffline {
    13  	return &LoginOffline{
    14  		Contextified: libkb.NewContextified(g),
    15  	}
    16  }
    17  
    18  // Name is the unique engine name.
    19  func (e *LoginOffline) Name() string {
    20  	return "LoginOffline"
    21  }
    22  
    23  // Prereqs returns the engine prereqs.
    24  func (e *LoginOffline) Prereqs() Prereqs {
    25  	return Prereqs{}
    26  }
    27  
    28  // RequiredUIs returns the required UIs.
    29  func (e *LoginOffline) RequiredUIs() []libkb.UIKind {
    30  	return []libkb.UIKind{}
    31  }
    32  
    33  // SubConsumers returns the other UI consumers for this engine.
    34  func (e *LoginOffline) SubConsumers() []libkb.UIConsumer {
    35  	return nil
    36  }
    37  
    38  func (e *LoginOffline) Run(m libkb.MetaContext) error {
    39  	uid, err := e.run(m)
    40  	if err != nil {
    41  		return err
    42  	}
    43  	m.Debug("LoginOffline success, sending login notification")
    44  	m.G().NotifyRouter.HandleLogin(m.Ctx(), string(e.G().Env.GetUsernameForUID(uid)))
    45  	m.Debug("LoginOffline success, calling login hooks")
    46  	m.G().CallLoginHooks(m)
    47  
    48  	return nil
    49  }
    50  
    51  func (e *LoginOffline) run(m libkb.MetaContext) (uid keybase1.UID, err error) {
    52  	defer m.Trace("LoginOffline#run", &err)()
    53  	uid, err = libkb.BootstrapActiveDeviceFromConfig(m, false)
    54  	if err != nil {
    55  		err = libkb.NewLoginRequiredError(err.Error())
    56  		return uid, err
    57  	}
    58  	return uid, nil
    59  }