refactor
This commit is contained in:
@@ -6,42 +6,35 @@ import (
|
||||
|
||||
"example.com/m/bot"
|
||||
"github.com/NicoNex/echotron/v3"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
type Login struct{}
|
||||
|
||||
func (s *Login) Enter(b *bot.Bot, mode bot.RenderMode) {
|
||||
// JWT уже создан в Bot.Update() с актуальными данными пользователя
|
||||
// Теперь создаем login token (это разовый токен для авторизации на сайте)
|
||||
var username *string
|
||||
// Получаем username из сессии если он там сохранен
|
||||
if b.Session.UserName != "" {
|
||||
username = &b.Session.UserName
|
||||
}
|
||||
const msgHelloLogin = `
|
||||
Привет, %s!
|
||||
👇Нажми кнопку для входа на сайт.
|
||||
`
|
||||
|
||||
token, err := b.Backend.CreateLoginToken(context.Background(), b.ChatID, username)
|
||||
func (s *Login) Enter(b *bot.Bot, mode bot.RenderMode) {
|
||||
token, err := b.Backend.CreateLoginToken(context.Background(), b.ChatID)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to create login token")
|
||||
b.SendMessage("❌ Произошла ошибка при создании токена входа. Попробуйте позже.", b.ChatID, nil)
|
||||
b.SendNew("❌ Произошла ошибка при создании токена входа. Попробуйте позже.", emptyKeyboard)
|
||||
return
|
||||
}
|
||||
|
||||
loginURL := b.Backend.GetLoginURL(token)
|
||||
loginURL := b.Backend.LoginURL(token)
|
||||
|
||||
usernameDisplay := "аноним"
|
||||
if username != nil && *username != "" {
|
||||
usernameDisplay = *username
|
||||
if b.Session.FirstName != "" {
|
||||
usernameDisplay = b.Session.FirstName
|
||||
}
|
||||
|
||||
message := fmt.Sprintf("Привет, %s!\n\nНажми кнопку ниже для входа на сайт.", usernameDisplay)
|
||||
b.SendMessageWithURLButton(message, "Войти на сайт", loginURL)
|
||||
}
|
||||
func (s *Login) HandleCallback(b *bot.Bot, u *echotron.Update) { return }
|
||||
kb := Keyboard(Row(URLButton("Войти на сайт", loginURL)))
|
||||
|
||||
func (s *Login) HandleMessage(b *bot.Bot, u *echotron.Update) { return }
|
||||
|
||||
func (s *Login) Handle(b *bot.Bot, u *echotron.Update) {
|
||||
b.SetState(&MainMenu{}, bot.NewMessage)
|
||||
return
|
||||
b.SendNew(fmt.Sprintf(msgHelloLogin, usernameDisplay), kb)
|
||||
}
|
||||
func (s *Login) HandleCallback(b *bot.Bot, u *echotron.Update) {}
|
||||
|
||||
func (s *Login) HandleMessage(b *bot.Bot, u *echotron.Update) {}
|
||||
|
||||
func (s *Login) Handle(b *bot.Bot, u *echotron.Update) { b.SetState(&MainMenu{}, bot.NewMessage) }
|
||||
|
||||
Reference in New Issue
Block a user