Franz Schmidt 8 years ago
parent
commit
8b35c194ec
4 changed files with 17 additions and 2 deletions
  1. 12 0
      models/error.go
  2. 3 0
      models/token.go
  3. 1 1
      modules/auth/auth.go
  4. 1 1
      routers/repo/http.go

+ 12 - 0
models/error.go

@@ -280,6 +280,18 @@ func (err ErrAccessTokenNotExist) Error() string {
 	return fmt.Sprintf("access token does not exist [sha: %s]", err.SHA)
 }
 
+type ErrAccessTokenEmpty struct {
+}
+
+func IsErrAccessTokenEmpty(err error) bool {
+	_, ok := err.(ErrAccessTokenEmpty)
+	return ok
+}
+
+func (err ErrAccessTokenEmpty) Error() string {
+	return fmt.Sprintf("access token is empty")
+}
+
 // ________                            .__                __  .__
 // \_____  \_______  _________    ____ |__|____________ _/  |_|__| ____   ____
 //  /   |   \_  __ \/ ___\__  \  /    \|  \___   /\__  \\   __\  |/  _ \ /    \

+ 3 - 0
models/token.go

@@ -56,6 +56,9 @@ func NewAccessToken(t *AccessToken) error {
 
 // GetAccessTokenBySHA returns access token by given sha1.
 func GetAccessTokenBySHA(sha string) (*AccessToken, error) {
+	if sha == "" {
+		return nil, ErrAccessTokenEmpty{}
+	}
 	t := &AccessToken{Sha1: sha}
 	has, err := x.Get(t)
 	if err != nil {

+ 1 - 1
modules/auth/auth.go

@@ -49,7 +49,7 @@ func SignedInID(ctx *macaron.Context, sess session.Store) int64 {
 		if len(tokenSHA) > 0 {
 			t, err := models.GetAccessTokenBySHA(tokenSHA)
 			if err != nil {
-				if models.IsErrAccessTokenNotExist(err) {
+				if models.IsErrAccessTokenNotExist(err) || models.IsErrAccessTokenEmpty(err) {
 					log.Error(4, "GetAccessTokenBySHA: %v", err)
 				}
 				return 0

+ 1 - 1
routers/repo/http.go

@@ -112,7 +112,7 @@ func HTTP(ctx *context.Context) {
 			// Assume username now is a token.
 			token, err := models.GetAccessTokenBySHA(authUsername)
 			if err != nil {
-				if models.IsErrAccessTokenNotExist(err) {
+				if models.IsErrAccessTokenNotExist(err) || models.IsErrAccessTokenEmpty(err) {
 					ctx.HandleText(http.StatusUnauthorized, "invalid token")
 				} else {
 					ctx.Handle(http.StatusInternalServerError, "GetAccessTokenBySha", err)