github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/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 }