Browse Source

move authtoken package into auth package

Marcus Efraimsson 6 years ago
parent
commit
8ae066ab5d

+ 1 - 0
pkg/cmd/grafana-server/server.go

@@ -32,6 +32,7 @@ import (
 	_ "github.com/grafana/grafana/pkg/metrics"
 	_ "github.com/grafana/grafana/pkg/metrics"
 	_ "github.com/grafana/grafana/pkg/plugins"
 	_ "github.com/grafana/grafana/pkg/plugins"
 	_ "github.com/grafana/grafana/pkg/services/alerting"
 	_ "github.com/grafana/grafana/pkg/services/alerting"
+	_ "github.com/grafana/grafana/pkg/services/auth"
 	_ "github.com/grafana/grafana/pkg/services/cleanup"
 	_ "github.com/grafana/grafana/pkg/services/cleanup"
 	_ "github.com/grafana/grafana/pkg/services/notifications"
 	_ "github.com/grafana/grafana/pkg/services/notifications"
 	_ "github.com/grafana/grafana/pkg/services/provisioning"
 	_ "github.com/grafana/grafana/pkg/services/provisioning"

+ 0 - 1
pkg/services/auth/auth.go

@@ -1 +0,0 @@
-package auth

+ 11 - 15
pkg/services/auth/authtoken/auth_token.go → pkg/services/auth/auth_token.go

@@ -1,4 +1,4 @@
-package authtoken
+package auth
 
 
 import (
 import (
 	"crypto/sha256"
 	"crypto/sha256"
@@ -16,30 +16,26 @@ import (
 )
 )
 
 
 func init() {
 func init() {
-	registry.Register(&registry.Descriptor{
-		Name:         "AuthTokenService",
-		Instance:     &UserAuthTokenServiceImpl{},
-		InitPriority: registry.Low,
-	})
+	registry.RegisterService(&UserAuthTokenService{})
 }
 }
 
 
 var getTime = time.Now
 var getTime = time.Now
 
 
 const urgentRotateTime = 1 * time.Minute
 const urgentRotateTime = 1 * time.Minute
 
 
-type UserAuthTokenServiceImpl struct {
+type UserAuthTokenService struct {
 	SQLStore          *sqlstore.SqlStore            `inject:""`
 	SQLStore          *sqlstore.SqlStore            `inject:""`
 	ServerLockService *serverlock.ServerLockService `inject:""`
 	ServerLockService *serverlock.ServerLockService `inject:""`
 	Cfg               *setting.Cfg                  `inject:""`
 	Cfg               *setting.Cfg                  `inject:""`
 	log               log.Logger
 	log               log.Logger
 }
 }
 
 
-func (s *UserAuthTokenServiceImpl) Init() error {
+func (s *UserAuthTokenService) Init() error {
 	s.log = log.New("auth")
 	s.log = log.New("auth")
 	return nil
 	return nil
 }
 }
 
 
-func (s *UserAuthTokenServiceImpl) CreateToken(userId int64, clientIP, userAgent string) (*models.UserToken, error) {
+func (s *UserAuthTokenService) CreateToken(userId int64, clientIP, userAgent string) (*models.UserToken, error) {
 	clientIP = util.ParseIPAddress(clientIP)
 	clientIP = util.ParseIPAddress(clientIP)
 	token, err := util.RandomHex(16)
 	token, err := util.RandomHex(16)
 	if err != nil {
 	if err != nil {
@@ -77,7 +73,7 @@ func (s *UserAuthTokenServiceImpl) CreateToken(userId int64, clientIP, userAgent
 	return &userToken, err
 	return &userToken, err
 }
 }
 
 
-func (s *UserAuthTokenServiceImpl) LookupToken(unhashedToken string) (*models.UserToken, error) {
+func (s *UserAuthTokenService) LookupToken(unhashedToken string) (*models.UserToken, error) {
 	hashedToken := hashToken(unhashedToken)
 	hashedToken := hashToken(unhashedToken)
 	if setting.Env == setting.DEV {
 	if setting.Env == setting.DEV {
 		s.log.Debug("looking up token", "unhashed", unhashedToken, "hashed", hashedToken)
 		s.log.Debug("looking up token", "unhashed", unhashedToken, "hashed", hashedToken)
@@ -95,7 +91,7 @@ func (s *UserAuthTokenServiceImpl) LookupToken(unhashedToken string) (*models.Us
 	}
 	}
 
 
 	if !exists {
 	if !exists {
-		return nil, ErrAuthTokenNotFound
+		return nil, models.ErrUserTokenNotFound
 	}
 	}
 
 
 	if model.AuthToken != hashedToken && model.PrevAuthToken == hashedToken && model.AuthTokenSeen {
 	if model.AuthToken != hashedToken && model.PrevAuthToken == hashedToken && model.AuthTokenSeen {
@@ -142,7 +138,7 @@ func (s *UserAuthTokenServiceImpl) LookupToken(unhashedToken string) (*models.Us
 	return &userToken, err
 	return &userToken, err
 }
 }
 
 
-func (s *UserAuthTokenServiceImpl) TryRotateToken(token *models.UserToken, clientIP, userAgent string) (bool, error) {
+func (s *UserAuthTokenService) TryRotateToken(token *models.UserToken, clientIP, userAgent string) (bool, error) {
 	if token == nil {
 	if token == nil {
 		return false, nil
 		return false, nil
 	}
 	}
@@ -201,9 +197,9 @@ func (s *UserAuthTokenServiceImpl) TryRotateToken(token *models.UserToken, clien
 	return false, nil
 	return false, nil
 }
 }
 
 
-func (s *UserAuthTokenServiceImpl) RevokeToken(token *models.UserToken) error {
+func (s *UserAuthTokenService) RevokeToken(token *models.UserToken) error {
 	if token == nil {
 	if token == nil {
-		return ErrAuthTokenNotFound
+		return models.ErrUserTokenNotFound
 	}
 	}
 
 
 	model := userAuthTokenFromUserToken(token)
 	model := userAuthTokenFromUserToken(token)
@@ -215,7 +211,7 @@ func (s *UserAuthTokenServiceImpl) RevokeToken(token *models.UserToken) error {
 
 
 	if rowsAffected == 0 {
 	if rowsAffected == 0 {
 		s.log.Debug("user auth token not found/revoked", "tokenId", model.Id, "userId", model.UserId, "clientIP", model.ClientIp, "userAgent", model.UserAgent)
 		s.log.Debug("user auth token not found/revoked", "tokenId", model.Id, "userId", model.UserId, "clientIP", model.ClientIp, "userAgent", model.UserAgent)
-		return ErrAuthTokenNotFound
+		return models.ErrUserTokenNotFound
 	}
 	}
 
 
 	s.log.Debug("user auth token revoked", "tokenId", model.Id, "userId", model.UserId, "clientIP", model.ClientIp, "userAgent", model.UserAgent)
 	s.log.Debug("user auth token revoked", "tokenId", model.Id, "userId", model.UserId, "clientIP", model.ClientIp, "userAgent", model.UserAgent)

+ 10 - 9
pkg/services/auth/authtoken/auth_token_test.go → pkg/services/auth/auth_token_test.go

@@ -1,4 +1,4 @@
-package authtoken
+package auth
 
 
 import (
 import (
 	"encoding/json"
 	"encoding/json"
@@ -46,7 +46,7 @@ func TestUserAuthToken(t *testing.T) {
 
 
 			Convey("When lookup hashed token should return user auth token not found error", func() {
 			Convey("When lookup hashed token should return user auth token not found error", func() {
 				userToken, err := userAuthTokenService.LookupToken(userToken.AuthToken)
 				userToken, err := userAuthTokenService.LookupToken(userToken.AuthToken)
-				So(err, ShouldEqual, ErrAuthTokenNotFound)
+				So(err, ShouldEqual, models.ErrUserTokenNotFound)
 				So(userToken, ShouldBeNil)
 				So(userToken, ShouldBeNil)
 			})
 			})
 
 
@@ -61,13 +61,13 @@ func TestUserAuthToken(t *testing.T) {
 
 
 			Convey("revoking nil token should return error", func() {
 			Convey("revoking nil token should return error", func() {
 				err = userAuthTokenService.RevokeToken(nil)
 				err = userAuthTokenService.RevokeToken(nil)
-				So(err, ShouldEqual, ErrAuthTokenNotFound)
+				So(err, ShouldEqual, models.ErrUserTokenNotFound)
 			})
 			})
 
 
 			Convey("revoking non-existing token should return error", func() {
 			Convey("revoking non-existing token should return error", func() {
 				userToken.Id = 1000
 				userToken.Id = 1000
 				err = userAuthTokenService.RevokeToken(userToken)
 				err = userAuthTokenService.RevokeToken(userToken)
-				So(err, ShouldEqual, ErrAuthTokenNotFound)
+				So(err, ShouldEqual, models.ErrUserTokenNotFound)
 			})
 			})
 		})
 		})
 
 
@@ -112,7 +112,7 @@ func TestUserAuthToken(t *testing.T) {
 				}
 				}
 
 
 				notGood, err := userAuthTokenService.LookupToken(userToken.UnhashedToken)
 				notGood, err := userAuthTokenService.LookupToken(userToken.UnhashedToken)
-				So(err, ShouldEqual, ErrAuthTokenNotFound)
+				So(err, ShouldEqual, models.ErrUserTokenNotFound)
 				So(notGood, ShouldBeNil)
 				So(notGood, ShouldBeNil)
 			})
 			})
 
 
@@ -140,7 +140,7 @@ func TestUserAuthToken(t *testing.T) {
 				}
 				}
 
 
 				notGood, err := userAuthTokenService.LookupToken(userToken.UnhashedToken)
 				notGood, err := userAuthTokenService.LookupToken(userToken.UnhashedToken)
-				So(err, ShouldEqual, ErrAuthTokenNotFound)
+				So(err, ShouldEqual, models.ErrUserTokenNotFound)
 				So(notGood, ShouldBeNil)
 				So(notGood, ShouldBeNil)
 			})
 			})
 		})
 		})
@@ -164,7 +164,8 @@ func TestUserAuthToken(t *testing.T) {
 			So(err, ShouldBeNil)
 			So(err, ShouldBeNil)
 
 
 			var tok models.UserToken
 			var tok models.UserToken
-			model.toUserToken(&tok)
+			err = model.toUserToken(&tok)
+			So(err, ShouldBeNil)
 
 
 			getTime = func() time.Time {
 			getTime = func() time.Time {
 				return t.Add(time.Hour)
 				return t.Add(time.Hour)
@@ -419,7 +420,7 @@ func createTestContext(t *testing.T) *testContext {
 	t.Helper()
 	t.Helper()
 
 
 	sqlstore := sqlstore.InitTestDB(t)
 	sqlstore := sqlstore.InitTestDB(t)
-	tokenService := &UserAuthTokenServiceImpl{
+	tokenService := &UserAuthTokenService{
 		SQLStore: sqlstore,
 		SQLStore: sqlstore,
 		Cfg: &setting.Cfg{
 		Cfg: &setting.Cfg{
 			LoginMaxInactiveLifetimeDays:     7,
 			LoginMaxInactiveLifetimeDays:     7,
@@ -438,7 +439,7 @@ func createTestContext(t *testing.T) *testContext {
 
 
 type testContext struct {
 type testContext struct {
 	sqlstore     *sqlstore.SqlStore
 	sqlstore     *sqlstore.SqlStore
-	tokenService *UserAuthTokenServiceImpl
+	tokenService *UserAuthTokenService
 }
 }
 
 
 func (c *testContext) getAuthTokenByID(id int64) (*userAuthToken, error) {
 func (c *testContext) getAuthTokenByID(id int64) (*userAuthToken, error) {

+ 8 - 8
pkg/services/auth/authtoken/model.go → pkg/services/auth/model.go

@@ -1,17 +1,11 @@
-package authtoken
+package auth
 
 
 import (
 import (
-	"errors"
 	"fmt"
 	"fmt"
 
 
 	"github.com/grafana/grafana/pkg/models"
 	"github.com/grafana/grafana/pkg/models"
 )
 )
 
 
-// Typed errors
-var (
-	ErrAuthTokenNotFound = errors.New("user auth token not found")
-)
-
 type userAuthToken struct {
 type userAuthToken struct {
 	Id            int64
 	Id            int64
 	UserId        int64
 	UserId        int64
@@ -33,7 +27,11 @@ func userAuthTokenFromUserToken(ut *models.UserToken) *userAuthToken {
 	return &uat
 	return &uat
 }
 }
 
 
-func (uat *userAuthToken) fromUserToken(ut *models.UserToken) {
+func (uat *userAuthToken) fromUserToken(ut *models.UserToken) error {
+	if uat == nil {
+		return fmt.Errorf("needs pointer to userAuthToken struct")
+	}
+
 	uat.Id = ut.Id
 	uat.Id = ut.Id
 	uat.UserId = ut.UserId
 	uat.UserId = ut.UserId
 	uat.AuthToken = ut.AuthToken
 	uat.AuthToken = ut.AuthToken
@@ -46,6 +44,8 @@ func (uat *userAuthToken) fromUserToken(ut *models.UserToken) {
 	uat.CreatedAt = ut.CreatedAt
 	uat.CreatedAt = ut.CreatedAt
 	uat.UpdatedAt = ut.UpdatedAt
 	uat.UpdatedAt = ut.UpdatedAt
 	uat.UnhashedToken = ut.UnhashedToken
 	uat.UnhashedToken = ut.UnhashedToken
+
+	return nil
 }
 }
 
 
 func (uat *userAuthToken) toUserToken(ut *models.UserToken) error {
 func (uat *userAuthToken) toUserToken(ut *models.UserToken) error {

+ 3 - 3
pkg/services/auth/authtoken/session_cleanup.go → pkg/services/auth/token_cleanup.go

@@ -1,11 +1,11 @@
-package authtoken
+package auth
 
 
 import (
 import (
 	"context"
 	"context"
 	"time"
 	"time"
 )
 )
 
 
-func (srv *UserAuthTokenServiceImpl) Run(ctx context.Context) error {
+func (srv *UserAuthTokenService) Run(ctx context.Context) error {
 	if srv.Cfg.ExpiredTokensCleanupIntervalDays <= 0 {
 	if srv.Cfg.ExpiredTokensCleanupIntervalDays <= 0 {
 		srv.log.Debug("cleanup of expired auth tokens are disabled")
 		srv.log.Debug("cleanup of expired auth tokens are disabled")
 		return nil
 		return nil
@@ -31,7 +31,7 @@ func (srv *UserAuthTokenServiceImpl) Run(ctx context.Context) error {
 	}
 	}
 }
 }
 
 
-func (srv *UserAuthTokenServiceImpl) deleteExpiredTokens(maxInactiveLifetime, maxLifetime time.Duration) (int64, error) {
+func (srv *UserAuthTokenService) deleteExpiredTokens(maxInactiveLifetime, maxLifetime time.Duration) (int64, error) {
 	createdBefore := getTime().Add(-maxLifetime)
 	createdBefore := getTime().Add(-maxLifetime)
 	rotatedBefore := getTime().Add(-maxInactiveLifetime)
 	rotatedBefore := getTime().Add(-maxInactiveLifetime)
 
 

+ 1 - 1
pkg/services/auth/authtoken/session_cleanup_test.go → pkg/services/auth/token_cleanup_test.go

@@ -1,4 +1,4 @@
-package authtoken
+package auth
 
 
 import (
 import (
 	"fmt"
 	"fmt"