From 4b92a6c2df28054ad766bc262f308db9f6066596 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 19 Feb 2014 13:04:31 -0500 Subject: [PATCH] Add code of delete user --- bee.json | 4 +++- conf/app.ini | 1 + gogs.go | 21 ++++++--------------- models/models.go | 20 +++++++++++++++----- models/repo.go | 2 +- models/user.go | 12 +++++++++--- 6 files changed, 35 insertions(+), 25 deletions(-) diff --git a/bee.json b/bee.json index ce3967060..40050dd58 100644 --- a/bee.json +++ b/bee.json @@ -14,6 +14,8 @@ "utils" ] }, - "cmd_args": [], + "cmd_args": [ + "web" + ], "envs": [] } \ No newline at end of file diff --git a/conf/app.ini b/conf/app.ini index c8fba31d7..c8953cc5f 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -10,3 +10,4 @@ HOST = NAME = gogs USER = root PASSWD = +PASSWD_jiahua = root diff --git a/gogs.go b/gogs.go index a0ed460d9..63ad3318c 100644 --- a/gogs.go +++ b/gogs.go @@ -1,16 +1,6 @@ -// Copyright 2013-2014 gogs authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"): you may -// 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. +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. // gogs(Go Git Service) is a Go clone of Github. package main @@ -27,7 +17,7 @@ import ( // Test that go1.1 tag above is included in builds. main.go refers to this definition. const go11tag = true -const APP_VER = "0.0.0.0218" +const APP_VER = "0.0.0.0219" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) @@ -35,7 +25,7 @@ func init() { func main() { app := cli.NewApp() - app.Name = "gogs" + app.Name = "Gogs" app.Usage = "Go Git Service" app.Version = APP_VER app.Commands = []cli.Command{ @@ -46,4 +36,5 @@ func main() { cli.BoolFlag{"noterm", "disable color output"}, }...) app.Run(os.Args) + println("wo cao???") } diff --git a/models/models.go b/models/models.go index 55e441c53..8341f9961 100644 --- a/models/models.go +++ b/models/models.go @@ -7,6 +7,7 @@ package models import ( "fmt" "os" + "os/user" _ "github.com/go-sql-driver/mysql" "github.com/lunny/xorm" @@ -47,18 +48,27 @@ func setEngine() { dbUser := utils.Cfg.MustValue("database", "USER") 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 { case "mysql": orm, err = xorm.NewEngine("mysql", fmt.Sprintf("%v:%v@%v/%v?charset=utf8", dbUser, dbPwd, dbHost, dbName)) default: - log.Critical("Unknown database type: %s", dbType) + fmt.Printf("Unknown database type: %s\n", dbType) os.Exit(2) } 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) } @@ -73,7 +83,7 @@ func init() { setEngine() 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) + fmt.Printf("sync database struct error: %s\n", err) + os.Exit(2) } } diff --git a/models/repo.go b/models/repo.go index 1eeeaa63f..d48c9a978 100644 --- a/models/repo.go +++ b/models/repo.go @@ -77,7 +77,7 @@ func CreateRepository(user *User, reposName string) (*Repo, error) { return &repo, nil } -// list one user's repository +// GetRepositories returns the list of repositories of given user. func GetRepositories(user *User) ([]Repo, error) { repos := make([]Repo, 0) err := orm.Find(&repos, &Repo{OwnerId: user.Id}) diff --git a/models/user.go b/models/user.go index 6cf7f6746..2527a1977 100644 --- a/models/user.go +++ b/models/user.go @@ -74,6 +74,7 @@ type Action struct { } var ( + ErrUserOwnRepos = errors.New("User still have ownership of repositories") ErrUserAlreadyExist = errors.New("User already 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.Avatar = utils.EncodeMd5(user.Email) - user.Created = time.Now() user.Updated = time.Now() user.EncodePasswd() _, err = orm.Insert(user) @@ -110,8 +110,14 @@ func UpdateUser(user *User) (err error) { // DeleteUser completely deletes everything of the user. func DeleteUser(user *User) error { - // TODO: check if has ownership of any repository. - _, err := orm.Delete(user) + repos, err := GetRepositories(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. return err }