Add code of delete user

This commit is contained in:
Unknown 2014-02-19 13:04:31 -05:00
parent be0ba9ea88
commit 4b92a6c2df
6 changed files with 35 additions and 25 deletions

View File

@ -14,6 +14,8 @@
"utils" "utils"
] ]
}, },
"cmd_args": [], "cmd_args": [
"web"
],
"envs": [] "envs": []
} }

View File

@ -10,3 +10,4 @@ HOST =
NAME = gogs NAME = gogs
USER = root USER = root
PASSWD = PASSWD =
PASSWD_jiahua = root

21
gogs.go
View File

@ -1,16 +1,6 @@
// Copyright 2013-2014 gogs authors. // Copyright 2014 The Gogs Authors. All rights reserved.
// // Use of this source code is governed by a MIT-style
// Licensed under the Apache License, Version 2.0 (the "License"): you may // license that can be found in the LICENSE file.
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
// gogs(Go Git Service) is a Go clone of Github. // gogs(Go Git Service) is a Go clone of Github.
package main package main
@ -27,7 +17,7 @@ import (
// Test that go1.1 tag above is included in builds. main.go refers to this definition. // Test that go1.1 tag above is included in builds. main.go refers to this definition.
const go11tag = true const go11tag = true
const APP_VER = "0.0.0.0218" const APP_VER = "0.0.0.0219"
func init() { func init() {
runtime.GOMAXPROCS(runtime.NumCPU()) runtime.GOMAXPROCS(runtime.NumCPU())
@ -35,7 +25,7 @@ func init() {
func main() { func main() {
app := cli.NewApp() app := cli.NewApp()
app.Name = "gogs" app.Name = "Gogs"
app.Usage = "Go Git Service" app.Usage = "Go Git Service"
app.Version = APP_VER app.Version = APP_VER
app.Commands = []cli.Command{ app.Commands = []cli.Command{
@ -46,4 +36,5 @@ func main() {
cli.BoolFlag{"noterm", "disable color output"}, cli.BoolFlag{"noterm", "disable color output"},
}...) }...)
app.Run(os.Args) app.Run(os.Args)
println("wo cao???")
} }

View File

@ -7,6 +7,7 @@ package models
import ( import (
"fmt" "fmt"
"os" "os"
"os/user"
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
"github.com/lunny/xorm" "github.com/lunny/xorm"
@ -47,18 +48,27 @@ func setEngine() {
dbUser := utils.Cfg.MustValue("database", "USER") dbUser := utils.Cfg.MustValue("database", "USER")
dbPwd := utils.Cfg.MustValue("database", "PASSWD") dbPwd := utils.Cfg.MustValue("database", "PASSWD")
var err error uname, err := user.Current()
if err != nil {
fmt.Printf("models.init -> fail to get user: %s\n", err)
os.Exit(2)
}
if uname.Username == "jiahuachen" {
dbPwd = utils.Cfg.MustValue("database", "PASSWD_jiahua")
}
switch dbType { switch dbType {
case "mysql": case "mysql":
orm, err = xorm.NewEngine("mysql", fmt.Sprintf("%v:%v@%v/%v?charset=utf8", orm, err = xorm.NewEngine("mysql", fmt.Sprintf("%v:%v@%v/%v?charset=utf8",
dbUser, dbPwd, dbHost, dbName)) dbUser, dbPwd, dbHost, dbName))
default: default:
log.Critical("Unknown database type: %s", dbType) fmt.Printf("Unknown database type: %s\n", dbType)
os.Exit(2) os.Exit(2)
} }
if err != nil { if err != nil {
log.Critical("models.init -> Conntect database: %s", dbType) fmt.Printf("models.init -> fail to conntect database: %s\n", dbType)
os.Exit(2) os.Exit(2)
} }
@ -73,7 +83,7 @@ func init() {
setEngine() setEngine()
err := orm.Sync(new(User), new(PublicKey), new(Repo), new(Access)) err := orm.Sync(new(User), new(PublicKey), new(Repo), new(Access))
if err != nil { if err != nil {
log.Error("sync database struct error: %s", err) fmt.Printf("sync database struct error: %s\n", err)
os.Exit(1) os.Exit(2)
} }
} }

View File

@ -77,7 +77,7 @@ func CreateRepository(user *User, reposName string) (*Repo, error) {
return &repo, nil return &repo, nil
} }
// list one user's repository // GetRepositories returns the list of repositories of given user.
func GetRepositories(user *User) ([]Repo, error) { func GetRepositories(user *User) ([]Repo, error) {
repos := make([]Repo, 0) repos := make([]Repo, 0)
err := orm.Find(&repos, &Repo{OwnerId: user.Id}) err := orm.Find(&repos, &Repo{OwnerId: user.Id})

View File

@ -74,6 +74,7 @@ type Action struct {
} }
var ( var (
ErrUserOwnRepos = errors.New("User still have ownership of repositories")
ErrUserAlreadyExist = errors.New("User already exist") ErrUserAlreadyExist = errors.New("User already exist")
ErrUserNotExist = errors.New("User does not exist") ErrUserNotExist = errors.New("User does not exist")
) )
@ -95,7 +96,6 @@ func RegisterUser(user *User) (err error) {
user.LowerName = strings.ToLower(user.Name) user.LowerName = strings.ToLower(user.Name)
user.Avatar = utils.EncodeMd5(user.Email) user.Avatar = utils.EncodeMd5(user.Email)
user.Created = time.Now()
user.Updated = time.Now() user.Updated = time.Now()
user.EncodePasswd() user.EncodePasswd()
_, err = orm.Insert(user) _, err = orm.Insert(user)
@ -110,8 +110,14 @@ func UpdateUser(user *User) (err error) {
// DeleteUser completely deletes everything of the user. // DeleteUser completely deletes everything of the user.
func DeleteUser(user *User) error { func DeleteUser(user *User) error {
// TODO: check if has ownership of any repository. repos, err := GetRepositories(user)
_, err := orm.Delete(user) if err != nil {
return errors.New("modesl.GetRepositories: " + err.Error())
} else if len(repos) > 0 {
return ErrUserOwnRepos
}
_, err = orm.Delete(user)
// TODO: delete and update follower information. // TODO: delete and update follower information.
return err return err
} }