connector/client: check for auth key on login check
Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
+23
-5
@@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/gotd/td/telegram/updates"
|
"github.com/gotd/td/telegram/updates"
|
||||||
"github.com/gotd/td/tg"
|
"github.com/gotd/td/tg"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
|
"github.com/rs/zerolog/log"
|
||||||
"go.mau.fi/util/exsync"
|
"go.mau.fi/util/exsync"
|
||||||
"go.mau.fi/zerozap"
|
"go.mau.fi/zerozap"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
@@ -385,19 +386,25 @@ func (t *TelegramClient) onDead() {
|
|||||||
|
|
||||||
func (t *TelegramClient) onConnectionStateChange(reason string) func() {
|
func (t *TelegramClient) onConnectionStateChange(reason string) func() {
|
||||||
return func() {
|
return func() {
|
||||||
t.main.Bridge.Log.Info().
|
log := t.main.Bridge.Log.With().
|
||||||
Str("component", "telegram_client").
|
Str("component", "telegram_client").
|
||||||
Str("user_login_id", string(t.userLogin.ID)).
|
Str("user_login_id", string(t.userLogin.ID)).
|
||||||
Str("reason", reason).
|
Str("reason", reason).
|
||||||
Msg("Connection state changed")
|
Logger()
|
||||||
|
log.Info().Msg("Connection state changed")
|
||||||
|
ctx := log.WithContext(context.Background())
|
||||||
|
|
||||||
authStatus, err := t.client.Auth().Status(context.Background())
|
authStatus, err := t.client.Auth().Status(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.userLogin.BridgeState.Send(status.BridgeState{
|
t.userLogin.BridgeState.Send(status.BridgeState{
|
||||||
StateEvent: status.StateUnknownError,
|
StateEvent: status.StateUnknownError,
|
||||||
Error: "tg-not-authenticated",
|
Error: "tg-not-authenticated",
|
||||||
Message: err.Error(),
|
Message: err.Error(),
|
||||||
})
|
})
|
||||||
|
t.userLogin.Metadata.(*UserLoginMetadata).Session.AuthKey = nil
|
||||||
|
if err := t.userLogin.Save(ctx); err != nil {
|
||||||
|
log.Err(err).Msg("failed to save user login")
|
||||||
|
}
|
||||||
} else if authStatus.Authorized {
|
} else if authStatus.Authorized {
|
||||||
t.userLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateConnected})
|
t.userLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateConnected})
|
||||||
} else {
|
} else {
|
||||||
@@ -406,6 +413,10 @@ func (t *TelegramClient) onConnectionStateChange(reason string) func() {
|
|||||||
Error: "tg-no-auth",
|
Error: "tg-no-auth",
|
||||||
Message: "You're not logged in",
|
Message: "You're not logged in",
|
||||||
})
|
})
|
||||||
|
t.userLogin.Metadata.(*UserLoginMetadata).Session.AuthKey = nil
|
||||||
|
if err := t.userLogin.Save(ctx); err != nil {
|
||||||
|
log.Err(err).Msg("failed to save user login")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -416,9 +427,17 @@ func (t *TelegramClient) onAuthError(err error) {
|
|||||||
Error: "tg-no-auth",
|
Error: "tg-no-auth",
|
||||||
Message: err.Error(),
|
Message: err.Error(),
|
||||||
})
|
})
|
||||||
|
t.userLogin.Metadata.(*UserLoginMetadata).Session.AuthKey = nil
|
||||||
|
if err := t.userLogin.Save(context.Background()); err != nil {
|
||||||
|
log.Err(err).Msg("failed to save user login")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TelegramClient) Connect(ctx context.Context) (err error) {
|
func (t *TelegramClient) Connect(ctx context.Context) (err error) {
|
||||||
|
if len(t.userLogin.Metadata.(*UserLoginMetadata).Session.AuthKey) != 256 {
|
||||||
|
return errors.New("user does not have an auth key")
|
||||||
|
}
|
||||||
|
|
||||||
ctx, t.clientCancel, err = connectTelegramClient(ctx, t.client)
|
ctx, t.clientCancel, err = connectTelegramClient(ctx, t.client)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -583,8 +602,7 @@ func (t *TelegramClient) getUserInfoFromTelegramUser(ctx context.Context, u tg.U
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *TelegramClient) IsLoggedIn() bool {
|
func (t *TelegramClient) IsLoggedIn() bool {
|
||||||
_, err := t.client.Self(context.TODO())
|
return t.client != nil && t.userLogin.Metadata.(*UserLoginMetadata).Session.AuthKey == nil
|
||||||
return err == nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TelegramClient) LogoutRemote(ctx context.Context) {
|
func (t *TelegramClient) LogoutRemote(ctx context.Context) {
|
||||||
|
|||||||
Reference in New Issue
Block a user