Files
warmbly/internal/app/auth/external_google.go
T
2026-01-17 14:11:14 +00:00

38 lines
897 B
Go

package auth
import (
"context"
"github.com/warmbly/warmbly/internal/app/token"
"github.com/warmbly/warmbly/internal/errx"
"github.com/warmbly/warmbly/internal/models"
)
func (s *authService) GoogleAuth(ctx context.Context, code, ipaddr, userAgent string) (*models.Token, *errx.Error) {
atoken, err := s.externalAuth.GoogleAuth.Exchange(ctx, code)
if err != nil {
return nil, errx.ErrExternalCode
}
user, err := s.externalAuth.GoogleAuth.GetUserInfo(ctx, atoken)
if err != nil {
return nil, errx.InternalError()
}
if !user.EmailVerified || user.Email == "" {
return nil, errx.ErrExternalEmail
}
udb, xerr := s.authRepository.ExternalLogin(ctx, user.Email)
if xerr != nil {
return nil, xerr
}
session, xerr := s.tokenService.GenerateSession(ctx, udb.ID, "", ipaddr, userAgent, token.AuthProviderGoogle)
if xerr != nil {
return nil, xerr
}
return session, nil
}