diff --git a/README.md b/README.md index 2de797afd2..8887081911 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language ![Demo](http://gowalker.org/public/gogs_demo.gif) -##### Current version: 0.4.0 Alpha +##### Current version: 0.4.2 Alpha ### NOTICES diff --git a/README_ZH.md b/README_ZH.md index f3be4418d1..84af15a6a5 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -5,7 +5,7 @@ Gogs(Go Git Service) 是一个由 Go 语言编写的自助 Git 托管服务。 ![Demo](http://gowalker.org/public/gogs_demo.gif) -##### 当前版本:0.4.0 Alpha +##### 当前版本:0.4.2 Alpha ## 开发目的 diff --git a/cmd/web.go b/cmd/web.go index dc4daca085..30db037a2c 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -89,9 +89,11 @@ func runWeb(*cli.Context) { m.Get("/", ignSignIn, routers.Home) m.Get("/install", bindIgnErr(auth.InstallForm{}), routers.Install) m.Post("/install", bindIgnErr(auth.InstallForm{}), routers.InstallPost) - m.Get("/issues", reqSignIn, user.Issues) - m.Get("/pulls", reqSignIn, user.Pulls) - m.Get("/stars", reqSignIn, user.Stars) + m.Group("", func(r martini.Router) { + r.Get("/issues", user.Issues) + r.Get("/pulls", user.Pulls) + r.Get("/stars", user.Stars) + }, reqSignIn) m.Group("/api", func(r martini.Router) { m.Group("/v1", func(r martini.Router) { diff --git a/gogs.go b/gogs.go index cf35af7543..aabcbe82e1 100644 --- a/gogs.go +++ b/gogs.go @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.4.1.0603 Alpha" +const APP_VER = "0.4.2.0605 Alpha" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/login.go b/models/login.go index 3efef2f78f..984a9f8c30 100644 --- a/models/login.go +++ b/models/login.go @@ -150,8 +150,8 @@ func DelLoginSource(source *LoginSource) error { return err } -// login a user -func LoginUser(uname, passwd string) (*User, error) { +// UserSignIn validates user name and password. +func UserSignIn(uname, passwd string) (*User, error) { var u *User if strings.Contains(uname, "@") { u = &User{Email: uname} diff --git a/models/user.go b/models/user.go index f95f303b2b..78ab464249 100644 --- a/models/user.go +++ b/models/user.go @@ -72,7 +72,7 @@ func (user *User) HomeLink() string { return "/user/" + user.Name } -// AvatarLink returns the user gravatar link. +// AvatarLink returns user gravatar link. func (user *User) AvatarLink() string { if setting.DisableGravatar { return "/img/avatar_default.jpg" @@ -268,17 +268,17 @@ func ChangeUserName(user *User, newUserName string) (err error) { } // UpdateUser updates user's information. -func UpdateUser(user *User) (err error) { - user.LowerName = strings.ToLower(user.Name) +func UpdateUser(u *User) (err error) { + u.LowerName = strings.ToLower(u.Name) - if len(user.Location) > 255 { - user.Location = user.Location[:255] + if len(u.Location) > 255 { + u.Location = u.Location[:255] } - if len(user.Website) > 255 { - user.Website = user.Website[:255] + if len(u.Website) > 255 { + u.Website = u.Website[:255] } - _, err = orm.Id(user.Id).AllCols().Update(user) + _, err = orm.Id(u.Id).AllCols().Update(u) return err } @@ -356,17 +356,16 @@ func GetUserByKeyId(keyId int64) (*User, error) { return user, nil } -// GetUserById returns the user object by given id if exists. +// GetUserById returns the user object by given ID if exists. func GetUserById(id int64) (*User, error) { - user := new(User) - has, err := orm.Id(id).Get(user) + u := new(User) + has, err := orm.Id(id).Get(u) if err != nil { return nil, err - } - if !has { + } else if !has { return nil, ErrUserNotExist } - return user, nil + return u, nil } // GetUserByName returns the user object by given name if exists. diff --git a/modules/auth/user.go b/modules/auth/user.go index e672a9c10f..3763c0fc64 100644 --- a/modules/auth/user.go +++ b/modules/auth/user.go @@ -19,54 +19,54 @@ import ( ) // SignedInId returns the id of signed in user. -func SignedInId(session session.SessionStore) int64 { +func SignedInId(sess session.SessionStore) int64 { if !models.HasEngine { return 0 } - userId := session.Get("userId") - if userId == nil { + uid := sess.Get("userId") + if uid == nil { return 0 } - if s, ok := userId.(int64); ok { - if _, err := models.GetUserById(s); err != nil { + if id, ok := uid.(int64); ok { + if _, err := models.GetUserById(id); err != nil { return 0 } - return s + return id } return 0 } // SignedInName returns the name of signed in user. -func SignedInName(session session.SessionStore) string { - userName := session.Get("userName") - if userName == nil { +func SignedInName(sess session.SessionStore) string { + uname := sess.Get("userName") + if uname == nil { return "" } - if s, ok := userName.(string); ok { + if s, ok := uname.(string); ok { return s } return "" } // SignedInUser returns the user object of signed user. -func SignedInUser(session session.SessionStore) *models.User { - id := SignedInId(session) - if id <= 0 { +func SignedInUser(sess session.SessionStore) *models.User { + uid := SignedInId(sess) + if uid <= 0 { return nil } - user, err := models.GetUserById(id) + u, err := models.GetUserById(uid) if err != nil { log.Error("user.SignedInUser: %v", err) return nil } - return user + return u } // IsSignedIn check if any user has signed in. -func IsSignedIn(session session.SessionStore) bool { - return SignedInId(session) > 0 +func IsSignedIn(sess session.SessionStore) bool { + return SignedInId(sess) > 0 } type FeedsForm struct { diff --git a/modules/mailer/mail.go b/modules/mailer/mail.go index 4ebabae818..e212d0066f 100644 --- a/modules/mailer/mail.go +++ b/modules/mailer/mail.go @@ -29,7 +29,7 @@ func NewMailMessage(To []string, subject, body string) Message { return NewMailMessageFrom(To, setting.MailService.From, subject, body) } -func GetMailTmplData(user *models.User) map[interface{}]interface{} { +func GetMailTmplData(u *models.User) map[interface{}]interface{} { data := make(map[interface{}]interface{}, 10) data["AppName"] = setting.AppName data["AppVer"] = setting.AppVer @@ -37,29 +37,29 @@ func GetMailTmplData(user *models.User) map[interface{}]interface{} { data["AppLogo"] = setting.AppLogo data["ActiveCodeLives"] = setting.Service.ActiveCodeLives / 60 data["ResetPwdCodeLives"] = setting.Service.ResetPwdCodeLives / 60 - if user != nil { - data["User"] = user + if u != nil { + data["User"] = u } return data } // create a time limit code for user active -func CreateUserActiveCode(user *models.User, startInf interface{}) string { +func CreateUserActiveCode(u *models.User, startInf interface{}) string { minutes := setting.Service.ActiveCodeLives - data := base.ToStr(user.Id) + user.Email + user.LowerName + user.Passwd + user.Rands + data := base.ToStr(u.Id) + u.Email + u.LowerName + u.Passwd + u.Rands code := base.CreateTimeLimitCode(data, minutes, startInf) // add tail hex username - code += hex.EncodeToString([]byte(user.LowerName)) + code += hex.EncodeToString([]byte(u.LowerName)) return code } // Send user register mail with active code -func SendRegisterMail(r *middleware.Render, user *models.User) { - code := CreateUserActiveCode(user, nil) +func SendRegisterMail(r *middleware.Render, u *models.User) { + code := CreateUserActiveCode(u, nil) subject := "Register success, Welcome" - data := GetMailTmplData(user) + data := GetMailTmplData(u) data["Code"] = code body, err := r.HTMLString("mail/auth/register_success", data) if err != nil { @@ -67,19 +67,19 @@ func SendRegisterMail(r *middleware.Render, user *models.User) { return } - msg := NewMailMessage([]string{user.Email}, subject, body) - msg.Info = fmt.Sprintf("UID: %d, send register mail", user.Id) + msg := NewMailMessage([]string{u.Email}, subject, body) + msg.Info = fmt.Sprintf("UID: %d, send register mail", u.Id) SendAsync(&msg) } // Send email verify active email. -func SendActiveMail(r *middleware.Render, user *models.User) { - code := CreateUserActiveCode(user, nil) +func SendActiveMail(r *middleware.Render, u *models.User) { + code := CreateUserActiveCode(u, nil) subject := "Verify your e-mail address" - data := GetMailTmplData(user) + data := GetMailTmplData(u) data["Code"] = code body, err := r.HTMLString("mail/auth/active_email", data) if err != nil { @@ -87,19 +87,19 @@ func SendActiveMail(r *middleware.Render, user *models.User) { return } - msg := NewMailMessage([]string{user.Email}, subject, body) - msg.Info = fmt.Sprintf("UID: %d, send active mail", user.Id) + msg := NewMailMessage([]string{u.Email}, subject, body) + msg.Info = fmt.Sprintf("UID: %d, send active mail", u.Id) SendAsync(&msg) } // Send reset password email. -func SendResetPasswdMail(r *middleware.Render, user *models.User) { - code := CreateUserActiveCode(user, nil) +func SendResetPasswdMail(r *middleware.Render, u *models.User) { + code := CreateUserActiveCode(u, nil) subject := "Reset your password" - data := GetMailTmplData(user) + data := GetMailTmplData(u) data["Code"] = code body, err := r.HTMLString("mail/auth/reset_passwd", data) if err != nil { @@ -107,14 +107,14 @@ func SendResetPasswdMail(r *middleware.Render, user *models.User) { return } - msg := NewMailMessage([]string{user.Email}, subject, body) - msg.Info = fmt.Sprintf("UID: %d, send reset password email", user.Id) + msg := NewMailMessage([]string{u.Email}, subject, body) + msg.Info = fmt.Sprintf("UID: %d, send reset password email", u.Id) SendAsync(&msg) } // SendIssueNotifyMail sends mail notification of all watchers of repository. -func SendIssueNotifyMail(user, owner *models.User, repo *models.Repository, issue *models.Issue) ([]string, error) { +func SendIssueNotifyMail(u, owner *models.User, repo *models.Repository, issue *models.Issue) ([]string, error) { ws, err := models.GetWatchers(repo.Id) if err != nil { return nil, errors.New("mail.NotifyWatchers(GetWatchers): " + err.Error()) @@ -123,7 +123,7 @@ func SendIssueNotifyMail(user, owner *models.User, repo *models.Repository, issu tos := make([]string, 0, len(ws)) for i := range ws { uid := ws[i].UserId - if user.Id == uid { + if u.Id == uid { continue } u, err := models.GetUserById(uid) @@ -141,14 +141,14 @@ func SendIssueNotifyMail(user, owner *models.User, repo *models.Repository, issu content := fmt.Sprintf("%s
-
View it on Gogs.", base.RenderSpecialLink([]byte(issue.Content), owner.Name+"/"+repo.Name), setting.AppUrl, owner.Name, repo.Name, issue.Index) - msg := NewMailMessageFrom(tos, user.Email, subject, content) + msg := NewMailMessageFrom(tos, u.Email, subject, content) msg.Info = fmt.Sprintf("Subject: %s, send issue notify emails", subject) SendAsync(&msg) return tos, nil } // SendIssueMentionMail sends mail notification for who are mentioned in issue. -func SendIssueMentionMail(r *middleware.Render, user, owner *models.User, +func SendIssueMentionMail(r *middleware.Render, u, owner *models.User, repo *models.Repository, issue *models.Issue, tos []string) error { if len(tos) == 0 { @@ -166,14 +166,14 @@ func SendIssueMentionMail(r *middleware.Render, user, owner *models.User, return fmt.Errorf("mail.SendIssueMentionMail(fail to render): %v", err) } - msg := NewMailMessageFrom(tos, user.Email, subject, body) + msg := NewMailMessageFrom(tos, u.Email, subject, body) msg.Info = fmt.Sprintf("Subject: %s, send issue mention emails", subject) SendAsync(&msg) return nil } // SendCollaboratorMail sends mail notification to new collaborator. -func SendCollaboratorMail(r *middleware.Render, user, owner *models.User, +func SendCollaboratorMail(r *middleware.Render, u, owner *models.User, repo *models.Repository) error { subject := fmt.Sprintf("%s added you to %s", owner.Name, repo.Name) @@ -187,8 +187,8 @@ func SendCollaboratorMail(r *middleware.Render, user, owner *models.User, return fmt.Errorf("mail.SendCollaboratorMail(fail to render): %v", err) } - msg := NewMailMessage([]string{user.Email}, subject, body) - msg.Info = fmt.Sprintf("UID: %d, send register mail", user.Id) + msg := NewMailMessage([]string{u.Email}, subject, body) + msg.Info = fmt.Sprintf("UID: %d, send register mail", u.Id) SendAsync(&msg) return nil diff --git a/routers/user/user.go b/routers/user/user.go index a5b3e79253..8fcbeb6a46 100644 --- a/routers/user/user.go +++ b/routers/user/user.go @@ -32,8 +32,8 @@ func SignIn(ctx *middleware.Context) { } // Check auto-login. - userName := ctx.GetCookie(setting.CookieUserName) - if len(userName) == 0 { + uname := ctx.GetCookie(setting.CookieUserName) + if len(uname) == 0 { ctx.HTML(200, "user/signin") return } @@ -41,14 +41,14 @@ func SignIn(ctx *middleware.Context) { isSucceed := false defer func() { if !isSucceed { - log.Trace("user.SignIn(auto-login cookie cleared): %s", userName) + log.Trace("user.SignIn(auto-login cookie cleared): %s", uname) ctx.SetCookie(setting.CookieUserName, "", -1) ctx.SetCookie(setting.CookieRememberName, "", -1) return } }() - user, err := models.GetUserByName(userName) + user, err := models.GetUserByName(uname) if err != nil { ctx.Handle(500, "user.SignIn(GetUserByName)", err) return @@ -90,7 +90,7 @@ func SignInPost(ctx *middleware.Context, form auth.LogInForm) { return } - user, err := models.LoginUser(form.UserName, form.Password) + user, err := models.UserSignIn(form.UserName, form.Password) if err != nil { if err == models.ErrUserNotExist { log.Trace("%s Log in failed: %s", ctx.Req.RequestURI, form.UserName) @@ -98,7 +98,7 @@ func SignInPost(ctx *middleware.Context, form auth.LogInForm) { return } - ctx.Handle(500, "user.SignIn", err) + ctx.Handle(500, "user.SignInPost(UserSignIn)", err) return } @@ -220,17 +220,18 @@ func SignUpPost(ctx *middleware.Context, form auth.RegisterForm) { if u, err = models.RegisterUser(u); err != nil { switch err { case models.ErrUserAlreadyExist: + ctx.Data["Err_UserName"] = true ctx.RenderWithErr("Username has been already taken", "user/signup", &form) case models.ErrEmailAlreadyUsed: + ctx.Data["Err_Email"] = true ctx.RenderWithErr("E-mail address has been already used", "user/signup", &form) case models.ErrUserNameIllegal: ctx.RenderWithErr(models.ErrRepoNameIllegal.Error(), "user/signup", &form) default: - ctx.Handle(500, "user.SignUp(RegisterUser)", err) + ctx.Handle(500, "user.SignUpPost(RegisterUser)", err) } return } - log.Trace("%s User created: %s", ctx.Req.RequestURI, form.UserName) // Bind social account. @@ -256,6 +257,7 @@ func SignUpPost(ctx *middleware.Context, form auth.RegisterForm) { } return } + ctx.Redirect("/user/login") } diff --git a/templates/VERSION b/templates/VERSION index 7f97ea1c45..7ba2c25f9a 100644 --- a/templates/VERSION +++ b/templates/VERSION @@ -1 +1 @@ -0.4.1.0603 Alpha \ No newline at end of file +0.4.2.0605 Alpha \ No newline at end of file diff --git a/templates/admin/auths/edit.tmpl b/templates/admin/auths/edit.tmpl index deea447c89..a2c2ddc698 100644 --- a/templates/admin/auths/edit.tmpl +++ b/templates/admin/auths/edit.tmpl @@ -71,21 +71,21 @@
- +
- +
- +
{{else if eq $type 3}}