@@ -4,37 +4,52 @@ import (
44 "context"
55 "errors"
66
7+ "github.com/idylicaro/event-management/internal/auth/jwt"
78 "github.com/idylicaro/event-management/internal/auth/providers"
8- "github.com/idylicaro/event-management/internal/models "
9+ dto "github.com/idylicaro/event-management/internal/dto/auth "
910)
1011
1112type Service struct {
1213 Providers map [string ]providers.OAuthProvider
13- Repository Repository
14+ Repository * Repository
15+ JWTService * jwt.Service
1416}
1517
16- func (s * Service ) ProcessCallback (ctx context.Context , providerName , code string ) (models. User , error ) {
18+ func (s * Service ) ProcessCallback (ctx context.Context , providerName , code string ) (* dto. TokenResponse , error ) {
1719 provider , exists := s .Providers [providerName ]
1820 if ! exists {
19- return models. User {} , errors .New ("provider not supported" )
21+ return nil , errors .New ("provider not supported" )
2022 }
2123
2224 tokens , err := provider .ExchangeCode (ctx , code )
2325 if err != nil {
24- return models. User {} , err
26+ return nil , err
2527 }
2628
2729 // Exchange the code for a token and fetch user data
2830 userData , err := provider .GetUserInfo (tokens .AccessToken )
2931 if err != nil {
30- return models. User {} , err
32+ return nil , err
3133 }
3234
3335 // Create or find the user in the database
3436 user , err := s .Repository .FindOrCreateUser (userData )
3537 if err != nil {
36- return models. User {} , err
38+ return nil , err
3739 }
3840
39- return user , nil
41+ accessToken , err := s .JWTService .GenerateAccessToken (user )
42+ if err != nil {
43+ return nil , err
44+ }
45+
46+ refreshToken , err := s .JWTService .GenerateRefreshToken (user )
47+ if err != nil {
48+ return nil , err
49+ }
50+
51+ return & dto.TokenResponse {
52+ AccessToken : accessToken ,
53+ RefreshToken : refreshToken ,
54+ }, nil
4055}
0 commit comments