add ssh supports(unfinished)
This commit is contained in:
parent
94311e187f
commit
be0ba9ea88
8 changed files with 305 additions and 39 deletions
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue