diff --git a/pkg/controller/auth/auth.go b/pkg/controller/auth/auth.go index 7e67e40f3..7f097db42 100644 --- a/pkg/controller/auth/auth.go +++ b/pkg/controller/auth/auth.go @@ -6,6 +6,7 @@ import ( "gorm.io/gorm" + "github.com/dwarvesf/fortress-api/pkg/logger" "github.com/dwarvesf/fortress-api/pkg/model" "github.com/dwarvesf/fortress-api/pkg/utils/authutils" ) @@ -15,22 +16,30 @@ type AuthenticationInput struct { RedirectURL string } -func (r *controller) Auth(in AuthenticationInput) (*model.Employee, string, error) { - accessToken, err := r.service.Google.GetAccessToken(in.Code, in.RedirectURL) +func (c *controller) Auth(in AuthenticationInput) (*model.Employee, string, error) { + l := c.logger.Fields(logger.Fields{ + "controller": "auth", + "method": "Auth", + }) + + accessToken, err := c.service.Google.GetAccessToken(in.Code, in.RedirectURL) if err != nil { + l.Errorf(err, "failed to get access token") return nil, "", err } // 2.2 get login user email from access token primaryEmail := "" - if r.config.Env == "prod" { - primaryEmail, err = r.service.Google.GetGoogleEmailLegacy(accessToken) + if c.config.Env == "prod" { + primaryEmail, err = c.service.Google.GetGoogleEmailLegacy(accessToken) if err != nil { + l.Errorf(err, "failed to get google email legacy") return nil, "", err } } else { - primaryEmail, err = r.service.Google.GetGoogleEmail(accessToken) + primaryEmail, err = c.service.Google.GetGoogleEmail(accessToken) if err != nil { + l.Errorf(err, "failed to get google email") return nil, "", err } } @@ -41,8 +50,9 @@ func (r *controller) Auth(in AuthenticationInput) (*model.Employee, string, erro } // 2.4 check user is active - employee, err := r.store.Employee.OneByEmail(r.repo.DB(), primaryEmail) + employee, err := c.store.Employee.OneByEmail(c.repo.DB(), primaryEmail) if err != nil { + l.Errorf(err, "failed to employee by email") if errors.Is(err, gorm.ErrRecordNotFound) { return nil, "", ErrUserInactivated } @@ -60,8 +70,9 @@ func (r *controller) Auth(in AuthenticationInput) (*model.Employee, string, erro Email: primaryEmail, } - jwt, err := authutils.GenerateJWTToken(&authenticationInfo, time.Now().Add(24*365*time.Hour).Unix(), r.config.JWTSecretKey) + jwt, err := authutils.GenerateJWTToken(&authenticationInfo, time.Now().Add(24*365*time.Hour).Unix(), c.config.JWTSecretKey) if err != nil { + l.Errorf(err, "failed to generate jwt token") return nil, "", err } diff --git a/pkg/controller/auth/create_apikey.go b/pkg/controller/auth/create_apikey.go index 26e6bb308..87d10fadd 100644 --- a/pkg/controller/auth/create_apikey.go +++ b/pkg/controller/auth/create_apikey.go @@ -10,7 +10,7 @@ import ( "github.com/dwarvesf/fortress-api/pkg/utils/authutils" ) -func (r *controller) CreateAPIKey(roleID string) (string, error) { +func (c *controller) CreateAPIKey(roleID string) (string, error) { clientID, err := authutils.GenerateUniqueNanoID(authutils.ClientIDLength) if err != nil { return "", err @@ -30,9 +30,9 @@ func (r *controller) CreateAPIKey(roleID string) (string, error) { return "", err } - tx, done := r.repo.NewTransaction() + tx, done := c.repo.NewTransaction() - role, err := r.store.Role.One(tx.DB(), roleIDUUID) + role, err := c.store.Role.One(tx.DB(), roleIDUUID) if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return "", done(ErrRoleNotfound) @@ -40,7 +40,7 @@ func (r *controller) CreateAPIKey(roleID string) (string, error) { return "", done(err) } - apikey, err := r.store.APIKey.Create(tx.DB(), &model.APIKey{ + apikey, err := c.store.APIKey.Create(tx.DB(), &model.APIKey{ ClientID: clientID, SecretKey: hashedKey, Status: model.ApikeyStatusValid, @@ -49,7 +49,7 @@ func (r *controller) CreateAPIKey(roleID string) (string, error) { return "", done(err) } - _, err = r.store.APIKeyRole.Create(tx.DB(), &model.APIKeyRole{ + _, err = c.store.APIKeyRole.Create(tx.DB(), &model.APIKeyRole{ APIKeyID: apikey.ID, RoleID: role.ID, }) diff --git a/pkg/controller/auth/me.go b/pkg/controller/auth/me.go index 08f917e21..d52fde88b 100644 --- a/pkg/controller/auth/me.go +++ b/pkg/controller/auth/me.go @@ -8,8 +8,8 @@ import ( "github.com/dwarvesf/fortress-api/pkg/model" ) -func (r *controller) Me(userID string) (*model.Employee, []*model.Permission, error) { - e, err := r.store.Employee.One(r.repo.DB(), userID, false) +func (c *controller) Me(userID string) (*model.Employee, []*model.Permission, error) { + e, err := c.store.Employee.One(c.repo.DB(), userID, false) if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, nil, ErrUserNotFound @@ -18,7 +18,7 @@ func (r *controller) Me(userID string) (*model.Employee, []*model.Permission, er return nil, nil, err } - perms, err := r.store.Permission.GetByEmployeeID(r.repo.DB(), userID) + perms, err := c.store.Permission.GetByEmployeeID(c.repo.DB(), userID) if err != nil { return nil, nil, err } diff --git a/pkg/service/service.go b/pkg/service/service.go index 53dc17a84..edc1b22a1 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -61,15 +61,13 @@ type Service struct { func New(cfg *config.Config, store *store.Store, repo store.DBRepo) *Service { cch := cache.New(5*time.Minute, 10*time.Minute) - authServiceCfg := &oauth2.Config{ - ClientID: cfg.Google.ClientID, - ClientSecret: cfg.Google.ClientSecret, - Endpoint: google.Endpoint, - Scopes: []string{"email", "profile"}, - } - googleAuthSvc, err := googleauth.New( - authServiceCfg, + &oauth2.Config{ + ClientID: cfg.Google.ClientID, + ClientSecret: cfg.Google.ClientSecret, + Endpoint: google.Endpoint, + Scopes: []string{"email", "profile"}, + }, ) if err != nil { logger.L.Error(err, "failed to init google auth")