diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2014-02-19 17:50:53 +0800 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2014-02-19 17:50:53 +0800 |
commit | be0ba9ea88aff8a658d0495d36accf944b74888d (patch) | |
tree | ff0b9b7eea8cd0d702a1a1ec1d9050110a5dab0e /models | |
parent | 94311e187f07b4ee2344db03279f39f200b4d39c (diff) | |
download | gitea-be0ba9ea88aff8a658d0495d36accf944b74888d.tar.gz gitea-be0ba9ea88aff8a658d0495d36accf944b74888d.zip |
add ssh supports(unfinished)
Diffstat (limited to 'models')
-rw-r--r-- | models/models.go | 8 | ||||
-rw-r--r-- | models/repo.go | 15 | ||||
-rw-r--r-- | models/user.go | 13 |
3 files changed, 30 insertions, 6 deletions
diff --git a/models/models.go b/models/models.go index b4e69d94f8..55e441c530 100644 --- a/models/models.go +++ b/models/models.go @@ -17,7 +17,7 @@ import ( var ( orm *xorm.Engine - repoRootPath string + RepoRootPath string ) type Members struct { @@ -71,5 +71,9 @@ func setEngine() { func init() { setEngine() - orm.Sync(new(User)) + err := orm.Sync(new(User), new(PublicKey), new(Repo), new(Access)) + if err != nil { + log.Error("sync database struct error: %s", err) + os.Exit(1) + } } diff --git a/models/repo.go b/models/repo.go index 489530f2a4..1eeeaa63ff 100644 --- a/models/repo.go +++ b/models/repo.go @@ -29,15 +29,22 @@ type Repo struct { // check if repository is exist func IsRepositoryExist(user *User, reposName string) (bool, error) { repo := Repo{OwnerId: user.Id} - // TODO: get repository by nocase name - return orm.Where("lower_name = ?", strings.ToLower(reposName)).Get(&repo) + has, err := orm.Where("lower_name = ?", strings.ToLower(reposName)).Get(&repo) + if err != nil { + return has, err + } + s, err := os.Stat(filepath.Join(RepoRootPath, user.Name, reposName)) + if err != nil { + return false, err + } + return s.IsDir(), nil } // // create a repository for a user or orgnaziation // func CreateRepository(user *User, reposName string) (*Repo, error) { - p := filepath.Join(repoRootPath, user.Name) + p := filepath.Join(RepoRootPath, user.Name) os.MkdirAll(p, os.ModePerm) f := filepath.Join(p, reposName+".git") _, err := git.InitRepository(f, false) @@ -108,7 +115,7 @@ func DeleteRepository(user *User, reposName string) (err error) { session.Rollback() return err } - if err = os.RemoveAll(filepath.Join(repoRootPath, user.Name, reposName+".git")); err != nil { + if err = os.RemoveAll(filepath.Join(RepoRootPath, user.Name, reposName+".git")); err != nil { // TODO: log and delete manully return err } diff --git a/models/user.go b/models/user.go index bc9b8fc746..6cf7f67464 100644 --- a/models/user.go +++ b/models/user.go @@ -123,6 +123,19 @@ func (user *User) EncodePasswd() error { return err } +func GetUserByKeyId(keyId int64) (*User, error) { + user := new(User) + has, err := orm.Sql("select a.* from user as a, public_key as b where a.id = b.owner_id and b.id=?", keyId).Get(user) + if err != nil { + return nil, err + } + if !has { + err = errors.New("not exist key owner") + return nil, err + } + return user, nil +} + // LoginUserPlain validates user by raw user name and password. func LoginUserPlain(name, passwd string) (*User, error) { user := User{Name: name, Passwd: passwd} |