mirror of
https://github.com/tgdrive/teldrive.git
synced 2025-09-13 18:04:29 +08:00
fixed auth error
This commit is contained in:
parent
1285c80eb3
commit
ea92f6db72
2 changed files with 37 additions and 25 deletions
3
.github/workflows/build.yml
vendored
3
.github/workflows/build.yml
vendored
|
@ -2,6 +2,7 @@ name: Build App
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
workflow_dispatch:
|
||||||
tags:
|
tags:
|
||||||
- '*'
|
- '*'
|
||||||
env:
|
env:
|
||||||
|
@ -38,4 +39,4 @@ jobs:
|
||||||
context: ./
|
context: ./
|
||||||
pull: true
|
pull: true
|
||||||
push: true
|
push: true
|
||||||
tags: ${{ steps.imagename.outputs.name }}:${{github.ref_name}},${{ steps.imagename.outputs.name }}:latest
|
tags: ${{ steps.imagename.outputs.name }}:latest
|
|
@ -28,7 +28,6 @@ import (
|
||||||
"github.com/gotd/td/telegram/auth/qrlogin"
|
"github.com/gotd/td/telegram/auth/qrlogin"
|
||||||
"github.com/gotd/td/tg"
|
"github.com/gotd/td/tg"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"gorm.io/gorm/clause"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type AuthService struct {
|
type AuthService struct {
|
||||||
|
@ -132,12 +131,22 @@ func (as *AuthService) LogIn(c *gin.Context) (*schemas.Message, *types.AppError)
|
||||||
IsPremium: session.IsPremium,
|
IsPremium: session.IsPremium,
|
||||||
TgSession: session.Sesssion,
|
TgSession: session.Sesssion,
|
||||||
}
|
}
|
||||||
if err := as.Db.Clauses(clause.OnConflict{
|
|
||||||
Columns: []clause.Column{{Name: "user_id"}},
|
var result []models.User
|
||||||
DoUpdates: clause.Assignments(map[string]interface{}{"tg_session": session.Sesssion}),
|
|
||||||
}).Create(&user).Error; err != nil {
|
if err := as.Db.Model(&models.User{}).Where("user_id = ?", session.UserID).Find(&result).Error; err != nil {
|
||||||
return nil, &types.AppError{Error: errors.New("failed to create or update user"), Code: http.StatusInternalServerError}
|
return nil, &types.AppError{Error: errors.New("failed to create or update user"), Code: http.StatusInternalServerError}
|
||||||
}
|
}
|
||||||
|
if len(result) == 0 {
|
||||||
|
if err := as.Db.Create(&user).Error; err != nil {
|
||||||
|
return nil, &types.AppError{Error: errors.New("failed to create or update user"), Code: http.StatusInternalServerError}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := as.Db.Model(&models.User{}).Where("user_id = ?", session.UserID).Update("tg_session", session.Sesssion).Error; err != nil {
|
||||||
|
return nil, &types.AppError{Error: errors.New("failed to create or update user"), Code: http.StatusInternalServerError}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
isHttps := c.Request.URL.Scheme == "https"
|
isHttps := c.Request.URL.Scheme == "https"
|
||||||
c.SetSameSite(2)
|
c.SetSameSite(2)
|
||||||
c.SetCookie(GetUserSessionCookieName(c), jweToken, as.SessionMaxAge, "/", c.Request.Host, isHttps, true)
|
c.SetCookie(GetUserSessionCookieName(c), jweToken, as.SessionMaxAge, "/", c.Request.Host, isHttps, true)
|
||||||
|
@ -232,27 +241,29 @@ func (as *AuthService) HandleQrCodeLogin(c *gin.Context) {
|
||||||
message := &SocketMessage{}
|
message := &SocketMessage{}
|
||||||
err := conn.ReadJSON(message)
|
err := conn.ReadJSON(message)
|
||||||
if message.AuthType == "qr" {
|
if message.AuthType == "qr" {
|
||||||
authorization, err := tgClient.QR().Auth(c, loggedIn, func(ctx context.Context, token qrlogin.Token) error {
|
go func() {
|
||||||
conn.WriteJSON(map[string]interface{}{"type": "auth", "payload": map[string]string{"token": token.URL()}})
|
authorization, err := tgClient.QR().Auth(c, loggedIn, func(ctx context.Context, token qrlogin.Token) error {
|
||||||
return nil
|
conn.WriteJSON(map[string]interface{}{"type": "auth", "payload": map[string]string{"token": token.URL()}})
|
||||||
})
|
return nil
|
||||||
if err != nil {
|
})
|
||||||
break
|
if err != nil {
|
||||||
}
|
return
|
||||||
user, ok := authorization.User.AsNotEmpty()
|
}
|
||||||
if !ok {
|
user, ok := authorization.User.AsNotEmpty()
|
||||||
break
|
if !ok {
|
||||||
}
|
return
|
||||||
res, _ := sessionStorage.LoadSession(c)
|
}
|
||||||
sessionData := &SessionData{}
|
res, _ := sessionStorage.LoadSession(c)
|
||||||
json.Unmarshal(res, sessionData)
|
sessionData := &SessionData{}
|
||||||
session := prepareSession(user, &sessionData.Data)
|
json.Unmarshal(res, sessionData)
|
||||||
conn.WriteJSON(map[string]interface{}{"type": "auth", "payload": session, "message": "success"})
|
session := prepareSession(user, &sessionData.Data)
|
||||||
|
conn.WriteJSON(map[string]interface{}{"type": "auth", "payload": session, "message": "success"})
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
if message.AuthType == "phone" && message.Message == "sendcode" {
|
if message.AuthType == "phone" && message.Message == "sendcode" {
|
||||||
res, err := tgClient.Auth().SendCode(c, message.PhoneNo, tgauth.SendCodeOptions{})
|
res, err := tgClient.Auth().SendCode(c, message.PhoneNo, tgauth.SendCodeOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
break
|
return
|
||||||
}
|
}
|
||||||
code := res.(*tg.AuthSentCode)
|
code := res.(*tg.AuthSentCode)
|
||||||
conn.WriteJSON(map[string]interface{}{"type": "auth", "payload": map[string]string{"phoneCodeHash": code.PhoneCodeHash}})
|
conn.WriteJSON(map[string]interface{}{"type": "auth", "payload": map[string]string{"phoneCodeHash": code.PhoneCodeHash}})
|
||||||
|
@ -260,11 +271,11 @@ func (as *AuthService) HandleQrCodeLogin(c *gin.Context) {
|
||||||
if message.AuthType == "phone" && message.Message == "signin" {
|
if message.AuthType == "phone" && message.Message == "signin" {
|
||||||
auth, err := tgClient.Auth().SignIn(c, message.PhoneNo, message.PhoneCode, message.PhoneCodeHash)
|
auth, err := tgClient.Auth().SignIn(c, message.PhoneNo, message.PhoneCode, message.PhoneCodeHash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
break
|
return
|
||||||
}
|
}
|
||||||
user, ok := auth.User.AsNotEmpty()
|
user, ok := auth.User.AsNotEmpty()
|
||||||
if !ok {
|
if !ok {
|
||||||
break
|
return
|
||||||
}
|
}
|
||||||
res, _ := sessionStorage.LoadSession(c)
|
res, _ := sessionStorage.LoadSession(c)
|
||||||
sessionData := &SessionData{}
|
sessionData := &SessionData{}
|
||||||
|
|
Loading…
Add table
Reference in a new issue