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 | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue