Add code of delete user
This commit is contained in:
parent
be0ba9ea88
commit
4b92a6c2df
6 changed files with 35 additions and 25 deletions
4
bee.json
4
bee.json
|
@ -14,6 +14,8 @@
|
||||||
"utils"
|
"utils"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"cmd_args": [],
|
"cmd_args": [
|
||||||
|
"web"
|
||||||
|
],
|
||||||
"envs": []
|
"envs": []
|
||||||
}
|
}
|
|
@ -10,3 +10,4 @@ HOST =
|
||||||
NAME = gogs
|
NAME = gogs
|
||||||
USER = root
|
USER = root
|
||||||
PASSWD =
|
PASSWD =
|
||||||
|
PASSWD_jiahua = root
|
||||||
|
|
21
gogs.go
21
gogs.go
|
@ -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???")
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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})
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue