diff --git a/gogs.go b/gogs.go index e239737e23..7bbcd803e5 100644 --- a/gogs.go +++ b/gogs.go @@ -19,7 +19,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.1.0307" +const APP_VER = "0.0.2.0307" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/repo.go b/models/repo.go index 6fc590566e..04e8c75c1b 100644 --- a/models/repo.go +++ b/models/repo.go @@ -48,9 +48,7 @@ func IsRepositoryExist(user *User, reposName string) (bool, error) { return s.IsDir(), nil } -// -// create a repository for a user or orgnaziation -// +// CreateRepository creates a repository for given user or orgnaziation. func CreateRepository(user *User, reposName string) (*Repo, error) { f := RepoPath(user.Name, reposName) _, err := git.InitRepository(f, true) diff --git a/models/user.go b/models/user.go index a1ec293a71..36cdfc8a43 100644 --- a/models/user.go +++ b/models/user.go @@ -190,6 +190,23 @@ func GetUserById(id int64) (*User, error) { return user, nil } +func GetUserByName(name string) (*User, error) { + if len(name) == 0 { + return nil, ErrUserNotExist + } + user := &User{ + LowerName: strings.ToLower(name), + } + has, err := orm.Get(user) + if err != nil { + return nil, err + } + if !has { + return nil, ErrUserNotExist + } + return user, nil +} + // LoginUserPlain validates user by raw user name and password. func LoginUserPlain(name, passwd string) (*User, error) { user := User{LowerName: strings.ToLower(name), Passwd: passwd} diff --git a/modules/auth/user.go b/modules/auth/user.go index 3a793f453d..e25593b737 100644 --- a/modules/auth/user.go +++ b/modules/auth/user.go @@ -69,7 +69,7 @@ func SignInRequire(redirect bool) martini.Handler { data["IsSigned"] = true data["SignedUserId"] = SignedInId(session) data["SignedUserName"] = SignedInName(session) - data["Avatar"] = SignedInUser(session).Avatar + data["SignedAvatar"] = SignedInUser(session).Avatar } } diff --git a/routers/repo/repo.go b/routers/repo/repo.go index c34c33d74c..6ff949b90f 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -15,17 +15,14 @@ import ( "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/auth" "github.com/gogits/gogs/modules/base" + "github.com/gogits/gogs/utils/log" ) func Create(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { data["Title"] = "Create repository" if req.Method == "GET" { - r.HTML(200, "repo/create", map[string]interface{}{ - "UserName": auth.SignedInName(session), - "UserId": auth.SignedInId(session), - "IsSigned": auth.IsSignedIn(session), - }) + r.HTML(200, "repo/create", data) return } @@ -42,56 +39,49 @@ func Create(req *http.Request, r render.Render, data base.TmplData, session sess _, err = models.CreateRepository(u, req.FormValue("name")) } if err == nil { - r.HTML(200, "repo/created", map[string]interface{}{ - "RepoName": u.Name + "/" + req.FormValue("name"), - "IsSigned": auth.IsSignedIn(session), - }) + data["RepoName"] = u.Name + "/" + req.FormValue("name") + r.HTML(200, "repo/created", data) return } } if err != nil { - r.HTML(200, "base/error", map[string]interface{}{ - "Error": fmt.Sprintf("%v", err), - "IsSigned": auth.IsSignedIn(session), - }) + data["ErrorMsg"] = err + log.Error("repo.Create: %v", err) + r.HTML(200, "base/error", data) } } -func Delete(req *http.Request, r render.Render, session sessions.Session) { +func Delete(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { + data["Title"] = "Delete repository" + if req.Method == "GET" { - r.HTML(200, "repo/delete", map[string]interface{}{ - "Title": "Delete repository", - "IsSigned": auth.IsSignedIn(session), - }) + r.HTML(200, "repo/delete", data) return } u := &models.User{} err := models.DeleteRepository(u, "") if err != nil { - r.HTML(200, "base/error", map[string]interface{}{ - "Error": fmt.Sprintf("%v", err), - "IsSigned": auth.IsSignedIn(session), - }) + data["ErrorMsg"] = err + log.Error("repo.Delete: %v", err) + r.HTML(200, "base/error", data) } } -func List(req *http.Request, r render.Render, session sessions.Session) { +func List(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { + data["Title"] = "Repositories" + u := auth.SignedInUser(session) repos, err := models.GetRepositories(u) fmt.Println("repos", repos) if err != nil { - r.HTML(200, "base/error", map[string]interface{}{ - "Error": fmt.Sprintf("%v", err), - "IsSigned": auth.IsSignedIn(session), - }) + data["ErrorMsg"] = err + log.Error("repo.List: %v", err) + r.HTML(200, "base/error", data) return } - r.HTML(200, "repo/list", map[string]interface{}{ - "Title": "repositories", - "Repos": repos, - "IsSigned": auth.IsSignedIn(session), - }) + data["Repos"] = repos + r.HTML(200, "repo/list", data) } diff --git a/routers/user/ssh.go b/routers/user/ssh.go index c928407d4a..6589753529 100644 --- a/routers/user/ssh.go +++ b/routers/user/ssh.go @@ -5,7 +5,6 @@ package user import ( - "fmt" "net/http" "github.com/martini-contrib/render" @@ -13,14 +12,15 @@ import ( "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/auth" + "github.com/gogits/gogs/modules/base" + "github.com/gogits/gogs/utils/log" ) -func AddPublicKey(req *http.Request, r render.Render, session sessions.Session) { +func AddPublicKey(req *http.Request, data base.TmplData, r render.Render, session sessions.Session) { + data["Title"] = "Add Public Key" + if req.Method == "GET" { - r.HTML(200, "user/publickey_add", map[string]interface{}{ - "Title": "Add Public Key", - "IsSigned": auth.IsSignedIn(session), - }) + r.HTML(200, "user/publickey_add", data) return } @@ -30,28 +30,25 @@ func AddPublicKey(req *http.Request, r render.Render, session sessions.Session) } err := models.AddPublicKey(k) if err != nil { - r.HTML(403, "status/403", map[string]interface{}{ - "Title": fmt.Sprintf("%v", err), - "IsSigned": auth.IsSignedIn(session), - }) + data["ErrorMsg"] = err + log.Error("ssh.AddPublicKey: %v", err) + r.HTML(200, "base/error", data) } else { - r.HTML(200, "user/publickey_added", map[string]interface{}{}) + r.HTML(200, "user/publickey_added", data) } } -func ListPublicKey(req *http.Request, r render.Render, session sessions.Session) { +func ListPublicKey(req *http.Request, data base.TmplData, r render.Render, session sessions.Session) { + data["Title"] = "Public Keys" + keys, err := models.ListPublicKey(auth.SignedInId(session)) if err != nil { - r.HTML(200, "base/error", map[string]interface{}{ - "Error": fmt.Sprintf("%v", err), - "IsSigned": auth.IsSignedIn(session), - }) + data["ErrorMsg"] = err + log.Error("ssh.ListPublicKey: %v", err) + r.HTML(200, "base/error", data) return } - r.HTML(200, "user/publickey_list", map[string]interface{}{ - "Title": "repositories", - "Keys": keys, - "IsSigned": auth.IsSignedIn(session), - }) + data["Keys"] = keys + r.HTML(200, "user/publickey_list", data) } diff --git a/routers/user/user.go b/routers/user/user.go index fae376dd28..7eac9b7429 100644 --- a/routers/user/user.go +++ b/routers/user/user.go @@ -5,9 +5,9 @@ package user import ( - "fmt" "net/http" + "github.com/codegangsta/martini" "github.com/martini-contrib/render" "github.com/martini-contrib/sessions" @@ -23,12 +23,18 @@ func Dashboard(r render.Render, data base.TmplData, session sessions.Session) { r.HTML(200, "user/dashboard", data) } -func Profile(r render.Render, data base.TmplData, session sessions.Session) { +func Profile(params martini.Params, r render.Render, data base.TmplData, session sessions.Session) { data["Title"] = "Profile" - data["IsSigned"] = auth.IsSignedIn(session) // TODO: Need to check view self or others. - user := auth.SignedInUser(session) + user, err := models.GetUserByName(params["username"]) + if err != nil { + data["ErrorMsg"] = err + log.Error("user.Profile: %v", err) + r.HTML(200, "base/error", data) + return + } + data["Avatar"] = user.Avatar data["Username"] = user.Name r.HTML(200, "user/profile", data) @@ -59,11 +65,10 @@ func SignIn(form auth.LogInForm, data base.TmplData, req *http.Request, r render data["ErrorMsg"] = err log.Error("user.SignIn: %v", data) - r.HTML(500, "base/error", nil) + r.HTML(200, "base/error", nil) return } - // login success session.Set("userId", user.Id) session.Set("userName", user.Name) r.Redirect("/") @@ -119,7 +124,7 @@ func SignUp(form auth.RegisterForm, data base.TmplData, req *http.Request, r ren default: data["ErrorMsg"] = err log.Error("user.SignUp: %v", data) - r.HTML(500, "base/error", nil) + r.HTML(200, "base/error", nil) } return } @@ -127,17 +132,18 @@ func SignUp(form auth.RegisterForm, data base.TmplData, req *http.Request, r ren r.Redirect("/user/login") } -func Delete(req *http.Request, r render.Render) { +// TODO: unfinished +func Delete(data base.TmplData, req *http.Request, r render.Render) { + data["Title"] = "Delete user" + if req.Method == "GET" { - r.HTML(200, "user/delete", map[string]interface{}{ - "Title": "Delete user", - }) + r.HTML(200, "user/delete", data) return } u := &models.User{} err := models.DeleteUser(u) - r.HTML(403, "status/403", map[string]interface{}{ - "Title": fmt.Sprintf("%v", err), - }) + data["ErrorMsg"] = err + log.Error("user.Delete: %v", data) + r.HTML(200, "base/error", nil) } diff --git a/templates/base/error.tmpl b/templates/base/error.tmpl index fbd424bff1..8f64494201 100644 --- a/templates/base/error.tmpl +++ b/templates/base/error.tmpl @@ -1,6 +1,7 @@ {{template "base/head" .}} {{template "base/navbar" .}}
An error is occurred : {{.ErrorMsg}}
+Application Version: {{AppVer}}
{{.UserName}}
- +{{.SignedUserName}}
+