#1040: dashboard no longer accessible when repo is missing
This commit is contained in:
parent
471b8a18ab
commit
588f3215c6
11 changed files with 51 additions and 15 deletions
|
@ -6,6 +6,8 @@ package models
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/gogits/gogs/modules/log"
|
||||
)
|
||||
|
||||
type AccessMode int
|
||||
|
@ -77,6 +79,10 @@ func (u *User) GetAccessibleRepositories() (map[*Repository]AccessMode, error) {
|
|||
for _, access := range accesses {
|
||||
repo, err := GetRepositoryById(access.RepoID)
|
||||
if err != nil {
|
||||
if IsErrRepoNotExist(err) {
|
||||
log.Error(4, "%v", err)
|
||||
continue
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
if err = repo.GetOwner(); err != nil {
|
||||
|
|
31
models/error.go
Normal file
31
models/error.go
Normal file
|
@ -0,0 +1,31 @@
|
|||
// Copyright 2015 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// __________ .__ __
|
||||
// \______ \ ____ ______ ____ _____|__|/ |_ ___________ ___.__.
|
||||
// | _// __ \\____ \ / _ \/ ___/ \ __\/ _ \_ __ < | |
|
||||
// | | \ ___/| |_> > <_> )___ \| || | ( <_> ) | \/\___ |
|
||||
// |____|_ /\___ > __/ \____/____ >__||__| \____/|__| / ____|
|
||||
// \/ \/|__| \/ \/
|
||||
|
||||
type ErrRepoNotExist struct {
|
||||
ID int64
|
||||
UID int64
|
||||
Name string
|
||||
}
|
||||
|
||||
func IsErrRepoNotExist(err error) bool {
|
||||
_, ok := err.(ErrRepoNotExist)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (err ErrRepoNotExist) Error() string {
|
||||
return fmt.Sprintf("repository does not exist [id: %d, uid: %d, name: %s]", err.ID, err.UID, err.Name)
|
||||
}
|
|
@ -35,7 +35,6 @@ const (
|
|||
|
||||
var (
|
||||
ErrRepoAlreadyExist = errors.New("Repository already exist")
|
||||
ErrRepoNotExist = errors.New("Repository does not exist")
|
||||
ErrRepoFileNotExist = errors.New("Repository file does not exist")
|
||||
ErrRepoNameIllegal = errors.New("Repository name contains illegal characters")
|
||||
ErrRepoFileNotLoaded = errors.New("Repository file not loaded")
|
||||
|
@ -758,7 +757,7 @@ func DeleteRepository(uid, repoID int64, userName string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
} else if !has {
|
||||
return ErrRepoNotExist
|
||||
return ErrRepoNotExist{repoID, uid, ""}
|
||||
}
|
||||
|
||||
// In case is a organization.
|
||||
|
@ -875,18 +874,18 @@ func GetRepositoryByName(uid int64, repoName string) (*Repository, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, ErrRepoNotExist
|
||||
return nil, ErrRepoNotExist{0, uid, repoName}
|
||||
}
|
||||
return repo, err
|
||||
}
|
||||
|
||||
func getRepositoryById(e Engine, id int64) (*Repository, error) {
|
||||
repo := &Repository{}
|
||||
repo := new(Repository)
|
||||
has, err := e.Id(id).Get(repo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, ErrRepoNotExist
|
||||
return nil, ErrRepoNotExist{id, 0, ""}
|
||||
}
|
||||
return repo, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue