aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-02-19 17:50:53 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-02-19 17:50:53 +0800
commitbe0ba9ea88aff8a658d0495d36accf944b74888d (patch)
treeff0b9b7eea8cd0d702a1a1ec1d9050110a5dab0e /models
parent94311e187f07b4ee2344db03279f39f200b4d39c (diff)
downloadgitea-be0ba9ea88aff8a658d0495d36accf944b74888d.tar.gz
gitea-be0ba9ea88aff8a658d0495d36accf944b74888d.zip
add ssh supports(unfinished)
Diffstat (limited to 'models')
-rw-r--r--models/models.go8
-rw-r--r--models/repo.go15
-rw-r--r--models/user.go13
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}