login: fix contexts

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2025-02-25 08:35:31 -07:00
parent 36bb741c68
commit a56f2977b4
2 changed files with 12 additions and 13 deletions
+9 -9
View File
@@ -26,6 +26,7 @@ type PhoneLogin struct {
main *TelegramConnector
authData UserLoginSession
authClient *telegram.Client
authClientCtx context.Context
authClientCancel context.CancelFunc
phone string
@@ -67,12 +68,11 @@ func (p *PhoneLogin) SubmitUserInput(ctx context.Context, input map[string]strin
Logger: zap.New(zerozap.New(zerolog.Ctx(ctx).With().Str("component", "telegram_phone_login_client").Logger())),
})
var err error
var authClientContext context.Context
authClientContext, p.authClientCancel = context.WithTimeoutCause(log.WithContext(context.Background()), time.Hour, errors.New("phone login took over one hour"))
if err = connectTelegramClient(authClientContext, p.authClientCancel, p.authClient); err != nil {
p.authClientCtx, p.authClientCancel = context.WithTimeoutCause(log.WithContext(context.Background()), time.Hour, errors.New("phone login took over one hour"))
if err = connectTelegramClient(p.authClientCtx, p.authClientCancel, p.authClient); err != nil {
return nil, err
}
sentCode, err := p.authClient.Auth().SendCode(ctx, p.phone, auth.SendCodeOptions{})
sentCode, err := p.authClient.Auth().SendCode(p.authClientCtx, p.phone, auth.SendCodeOptions{})
if err != nil {
return nil, err
}
@@ -97,7 +97,7 @@ func (p *PhoneLogin) SubmitUserInput(ctx context.Context, input map[string]strin
switch a := s.Authorization.(type) {
case *tg.AuthAuthorization:
// Looks that we are already authorized.
return p.handleAuthSuccess(ctx, a)
return p.handleAuthSuccess(p.authClientCtx, a)
case *tg.AuthAuthorizationSignUpRequired:
return nil, fmt.Errorf("phone number does not correspond with an existing Telegram account and sign-up is not supported")
default:
@@ -107,7 +107,7 @@ func (p *PhoneLogin) SubmitUserInput(ctx context.Context, input map[string]strin
return nil, fmt.Errorf("unexpected sent code type: %T", sentCode)
}
} else if code, ok := input[LoginStepIDCode]; ok {
authorization, err := p.authClient.Auth().SignIn(ctx, p.phone, code, p.hash)
authorization, err := p.authClient.Auth().SignIn(p.authClientCtx, p.phone, code, p.hash)
if errors.Is(err, auth.ErrPasswordAuthNeeded) {
return &bridgev2.LoginStep{
Type: bridgev2.LoginStepTypeUserInput,
@@ -128,13 +128,13 @@ func (p *PhoneLogin) SubmitUserInput(ctx context.Context, input map[string]strin
} else if err != nil {
return nil, fmt.Errorf("failed to submit code: %w", err)
}
return p.handleAuthSuccess(ctx, authorization)
return p.handleAuthSuccess(p.authClientCtx, authorization)
} else if password, ok := input[LoginStepIDPassword]; ok {
authorization, err := p.authClient.Auth().Password(ctx, password)
authorization, err := p.authClient.Auth().Password(p.authClientCtx, password)
if err != nil {
return nil, fmt.Errorf("failed to submit password: %w", err)
}
return p.handleAuthSuccess(ctx, authorization)
return p.handleAuthSuccess(p.authClientCtx, authorization)
}
return nil, fmt.Errorf("unexpected state during phone login")
+3 -4
View File
@@ -68,9 +68,8 @@ func (q *QRLogin) Start(ctx context.Context) (*bridgev2.LoginStep, error) {
})
var err error
var authClientContext context.Context
authClientContext, q.authClientCancel = context.WithTimeoutCause(log.WithContext(context.Background()), time.Hour, errors.New("phone login took over one hour"))
if err = connectTelegramClient(authClientContext, q.authClientCancel, q.authClient); err != nil {
q.authClientCtx, q.authClientCancel = context.WithTimeoutCause(log.WithContext(context.Background()), time.Hour, errors.New("phone login took over one hour"))
if err = connectTelegramClient(q.authClientCtx, q.authClientCancel, q.authClient); err != nil {
return nil, err
}
@@ -164,7 +163,7 @@ func (q *QRLogin) SubmitUserInput(ctx context.Context, input map[string]string)
if !ok {
return nil, fmt.Errorf("unexpected state during phone login")
}
authorization, err := q.authClient.Auth().Password(ctx, password)
authorization, err := q.authClient.Auth().Password(q.authClientCtx, password)
if err != nil {
return nil, fmt.Errorf("failed to submit password: %w", err)
}