]> source.dussan.org Git - gitea.git/commitdiff
Finish update password and profile
authorUnknown <joe2010xtmf@163.com>
Fri, 14 Mar 2014 05:12:07 +0000 (01:12 -0400)
committerUnknown <joe2010xtmf@163.com>
Fri, 14 Mar 2014 05:12:07 +0000 (01:12 -0400)
gogs.go
models/user.go
modules/auth/user.go
routers/user/setting.go
templates/user/delete.tmpl
templates/user/email_password.tmpl [deleted file]
templates/user/password.tmpl [new file with mode: 0644]
templates/user/profile.tmpl
templates/user/publickey.tmpl
templates/user/setting.tmpl
web.go

diff --git a/gogs.go b/gogs.go
index 96c0f84f2bbc5ef83989fd0d3658c970f4770fdd..b2764902807666bb5f3cc435e9b61e7d15c8ed62 100644 (file)
--- a/gogs.go
+++ b/gogs.go
@@ -20,7 +20,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.7.0313"
+const APP_VER = "0.0.7.0314"
 
 func init() {
        runtime.GOMAXPROCS(runtime.NumCPU())
index 06db7d8ba29d965bb0339c830b31756619a2d2f2..8f7a37cba9c3b3bd8c46ab7d52c3d000d17aa2ed 100644 (file)
@@ -49,6 +49,7 @@ type User struct {
        NumStars      int
        NumRepos      int
        Avatar        string `xorm:"varchar(2048) not null"`
+       AvatarEmail   string `xorm:"not null"`
        Location      string
        Website       string
        Created       time.Time `xorm:"created"`
@@ -106,6 +107,7 @@ func RegisterUser(user *User) (err error) {
 
        user.LowerName = strings.ToLower(user.Name)
        user.Avatar = base.EncodeMd5(user.Email)
+       user.AvatarEmail = user.Email
        if err = user.EncodePasswd(); err != nil {
                return err
        }
index 6bc7130626f80027774134bb3ea28001545f545b..ef595c6000caa723957682f58eac4cc7556bde06 100644 (file)
@@ -96,7 +96,7 @@ type FeedsForm struct {
 
 type UpdateProfileForm struct {
        Email    string `form:"email" binding:"Required;Email;MaxSize(50)"`
-       Website  string `form:"website" binding:"AlphaDash;MaxSize(50)"`
+       Website  string `form:"website" binding:"MaxSize(50)"`
        Location string `form:"location" binding:"MaxSize(50)"`
        Avatar   string `form:"avatar" binding:"Required;Email;MaxSize(50)"`
 }
index cf11095bead5f6f265fe528c24dbf1b29cdd46c2..08879ae4a7e7fd6605e84882a0366c8e9cdd95cb 100644 (file)
@@ -22,8 +22,9 @@ func Setting(form auth.UpdateProfileForm, r render.Render, data base.TmplData, r
        data["PageIsUserSetting"] = true
 
        user := auth.SignedInUser(session)
+       data["Owner"] = user
+
        if req.Method == "GET" {
-               data["Owner"] = user
                r.HTML(200, "user/setting", data)
                return
        }
@@ -37,6 +38,7 @@ func Setting(form auth.UpdateProfileForm, r render.Render, data base.TmplData, r
        user.Website = form.Website
        user.Location = form.Location
        user.Avatar = base.EncodeMd5(form.Avatar)
+       user.AvatarEmail = form.Avatar
        if err := models.UpdateUser(user); err != nil {
                data["ErrorMsg"] = err
                log.Error("setting.Setting: %v", err)
@@ -44,23 +46,21 @@ func Setting(form auth.UpdateProfileForm, r render.Render, data base.TmplData, r
                return
        }
 
+       data["IsSuccess"] = true
        r.HTML(200, "user/setting", data)
 }
 
-func SettingEmailPassword(r render.Render, data base.TmplData, session sessions.Session, req *http.Request) {
-       data["Title"] = "Email & Password"
+func SettingPassword(form auth.UpdatePasswdForm, r render.Render, data base.TmplData, session sessions.Session, req *http.Request) {
+       data["Title"] = "Password"
        data["PageIsUserSetting"] = true
-       data["IsPwdSuccess"] = (req.FormValue("password") == "true")
 
-       r.HTML(200, "user/email_password", data)
-}
-
-func UpdatePasswd(form auth.UpdatePasswdForm, r render.Render, data base.TmplData, req *http.Request, session sessions.Session) {
-       data["Title"] = "Setting"
-       data["PageIsUserSetting"] = true
+       if req.Method == "GET" {
+               r.HTML(200, "user/password", data)
+               return
+       }
 
        user := auth.SignedInUser(session)
-       newUser := &models.User{Passwd: form.OldPasswd}
+       newUser := &models.User{Passwd: form.NewPasswd}
        if err := newUser.EncodePasswd(); err != nil {
                data["ErrorMsg"] = err
                log.Error("setting.UpdatePasswd: %v", err)
@@ -78,14 +78,15 @@ func UpdatePasswd(form auth.UpdatePasswdForm, r render.Render, data base.TmplDat
                user.Passwd = newUser.Passwd
                if err := models.UpdateUser(user); err != nil {
                        data["ErrorMsg"] = err
-                       log.Error("setting.Setting: %v", err)
+                       log.Error("setting.UpdatePasswd: %v", err)
                        r.HTML(200, "base/error", data)
                        return
                }
+               data["IsSuccess"] = true
        }
 
        data["Owner"] = user
-       r.HTML(200, "user/setting", data)
+       r.HTML(200, "user/password", data)
 }
 
 func SettingSSHKeys(form auth.AddSSHKeyForm, r render.Render, data base.TmplData, req *http.Request, session sessions.Session) {
index 37259f61e5761391f0ea845d68e266c71c3af3e6..904201772e10bef445cc72a16aec8de4db21439b 100644 (file)
@@ -5,7 +5,7 @@
         <h4>Account Setting</h4>
         <ul class="list-group">
             <li class="list-group-item"><a href="/user/setting">Account Profile</a></li>
-            <li class="list-group-item"><a href="/user/setting/email_password">Emails and Password</a></li>
+            <li class="list-group-item"><a href="/user/setting/password">Password</a></li>
             <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
             <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li>
             <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
diff --git a/templates/user/email_password.tmpl b/templates/user/email_password.tmpl
deleted file mode 100644 (file)
index 364bcf3..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-{{template "base/head" .}}
-{{template "base/navbar" .}}
-<div id="gogs-body" class="container">
-    <div id="gogs-user-setting-nav" class="col-md-3">
-        <h4>Account Setting</h4>
-        <ul class="list-group">
-            <li class="list-group-item"><a href="/user/setting">Account Profile</a></li>
-            <li class="list-group-item list-group-item-success"><a href="/user/setting/email_password">Emails and Password</a></li>
-            <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
-            <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li>
-            <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
-            <li class="list-group-item"><a href="/user/delete">Delete Account</a></li>
-        </ul>
-    </div>
-    <div id="gogs-user-setting-container" class="col-md-9">
-        <div id="gogs-setting-email">
-            <h4>Email</h4>
-            <p><strong>Your Primary Email</strong> will be used for Account related notifications as well as any web based operations, such as edits and merges made via the web.</p>
-            <p>// TODO</p><br/>
-        </div>
-        <div id="gogs-setting-pwd">
-            <h4>Password</h4>
-            <form class="form-horizontal" id="gogs-password-form" method="post" action="/user/setting/update_passwd">{{if .IsPwdSuccess}}
-                <p class="alert alert-success">Password is changed successfully. You can sign in via new password.</p>{{end}}
-                <div class="form-group">
-                    <label class="col-md-2 control-label">Old Password<strong class="text-danger">*</strong></label>
-                    <div class="col-md-8">
-                        <input type="password" name="oldpasswd" class="form-control" placeholder="Type your current password" required="required">
-                    </div>
-                </div>
-                <div class="form-group">
-                    <label class="col-md-2 control-label">New Password<strong class="text-danger">*</strong></label>
-                    <div class="col-md-8">
-                        <input type="password" name="newpasswd" class="form-control" placeholder="Type your new password" required="required">
-                    </div>
-                </div>
-                <div class="form-group">
-                    <label class="col-md-2 control-label">Re-Type<strong class="text-danger">*</strong></label>
-                    <div class="col-md-8">
-                        <input type="password" name="re-type" class="form-control" placeholder="Re-type your new password" required="required">
-                    </div>
-                </div>
-                <div class="form-group">
-                    <div class="col-md-offset-2 col-md-8">
-                        <button type="submit" class="btn btn-primary">Change Password</button>&nbsp;&nbsp;
-                        <a href="/forget-password/">Forget Password ?</a>
-                    </div>
-                </div>
-            </form>
-        </div>
-    </div>
-</div>
-{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/user/password.tmpl b/templates/user/password.tmpl
new file mode 100644 (file)
index 0000000..a8b1e21
--- /dev/null
@@ -0,0 +1,51 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+<div id="gogs-body" class="container">
+    <div id="gogs-user-setting-nav" class="col-md-3">
+        <h4>Account Setting</h4>
+        <ul class="list-group">
+            <li class="list-group-item"><a href="/user/setting">Account Profile</a></li>
+            <li class="list-group-item list-group-item-success"><a href="/user/setting/password">Password</a></li>
+            <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
+            <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li>
+            <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
+            <li class="list-group-item"><a href="/user/delete">Delete Account</a></li>
+        </ul>
+    </div>
+    <div id="gogs-user-setting-container" class="col-md-9">
+        <div id="gogs-setting-pwd">
+            <h4>Password</h4>
+            <form class="form-horizontal" id="gogs-password-form" method="post" action="/user/setting/password">{{if .IsSuccess}}
+                <p class="alert alert-success">Password is changed successfully. You can now sign in via new password.</p>{{else if .HasError}}<p class="alert alert-danger form-error">{{.ErrorMsg}}</p>{{end}}
+                <div class="form-group">
+                    <label class="col-md-2 control-label">Old Password<strong class="text-danger">*</strong></label>
+                    <div class="col-md-8">
+                        <input type="password" name="oldpasswd" class="form-control" placeholder="Type your current password" required="required">
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-md-2 control-label">New Password<strong class="text-danger">*</strong></label>
+                    <div class="col-md-8">
+                        <input type="password" name="newpasswd" class="form-control" placeholder="Type your new password" required="required">
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-md-2 control-label">Re-Type<strong class="text-danger">*</strong></label>
+                    <div class="col-md-8">
+                        <input type="password" name="retypepasswd" class="form-control" placeholder="Re-type your new password" required="required">
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <div class="col-md-offset-2 col-md-8">
+                        <button type="submit" class="btn btn-primary">Change Password</button>&nbsp;&nbsp;
+                        <a href="/forget-password/">Forgot your password?</a>
+                    </div>
+                </div>
+            </form>
+        </div>
+    </div>
+</div>
+{{template "base/footer" .}}
\ No newline at end of file
index 94ec33b69619eb0d727cfc34d4ca37211e2e49ae..c10bfcb0f3875f62db419bfadc606ca09d615aeb 100644 (file)
@@ -11,8 +11,8 @@
         <div class="profile-info">
             <ul class="list-group">
                 <li class="list-group-item"><i class="fa fa-thumb-tack"></i>{{.Owner.Location}}</li>
-                <li class="list-group-item"><i class="fa fa-envelope"></i><a href="#">{{.Owner.Email}}</a></li>
-                <li class="list-group-item"><i class="fa fa-link"></i><a href="#">{{.Owner.Website}}</a></li>
+                <li class="list-group-item"><i class="fa fa-envelope"></i><a href="mailto:{{.Owner.Email}}">{{.Owner.Email}}</a></li>
+                <li class="list-group-item"><i class="fa fa-link"></i><a target="_blank" href="{{.Owner.Website}}">{{.Owner.Website}}</a></li>
                 <li class="list-group-item"><i class="fa fa-clock-o"></i>{{.Owner.Created}}</li>
             </ul>
         </div>
index 195af75887456b940d0d9c4a7650799b7f5db56d..60d2c2464a65d7c1ed2e90803251e1fcb10087e9 100644 (file)
@@ -5,7 +5,7 @@
         <h4>Account Setting</h4>
         <ul class="list-group">
             <li class="list-group-item"><a href="/user/setting">Account Profile</a></li>
-            <li class="list-group-item"><a href="/user/setting/email_password">Emails and Password</a></li>
+            <li class="list-group-item"><a href="/user/setting/Password">Password</a></li>
             <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
             <li class="list-group-item list-group-item-success"><a href="/user/setting/ssh/">SSH Keys</a></li>
             <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
index 380ac88a62ba438d4d435b57e9ed1b50293e628c..edbeeb22a9e6a52d83c8da358d04d74081c61837 100644 (file)
@@ -5,7 +5,7 @@
         <h4>Account Setting</h4>
         <ul class="list-group">
             <li class="list-group-item list-group-item-success"><a href="/user/setting">Account Profile</a></li>
-            <li class="list-group-item"><a href="/user/setting/email_password">Emails and Password</a></li>
+            <li class="list-group-item"><a href="/user/setting/password">Password</a></li>
             <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
             <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li>
             <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
         </ul>
     </div>
     <div id="gogs-user-setting-container" class="col-md-9">
-        setting container
+        <div id="gogs-setting-pwd">
+            <h4>Account Profile</h4>
+            <form class="form-horizontal" id="gogs-password-form" method="post" action="/user/setting">{{if .IsSuccess}}
+                <p class="alert alert-success">Your profile has been successfully updated.</p>{{else if .HasError}}<p class="alert alert-danger form-error">{{.ErrorMsg}}</p>{{end}}
+                <p>Your Email will be public and used for Account related notifications and any web based operations made via the web.</p>
+                <div class="form-group">
+                    <label class="col-md-2 control-label">Email</label>
+                    <div class="col-md-8">
+                        <input type="text" name="email" class="form-control" placeholder="Type your e-mail address" value="{{.Owner.Email}}">
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-md-2 control-label">Website</label>
+                    <div class="col-md-8">
+                        <input type="text" name="website" class="form-control" placeholder="Type your website URL" value="{{.Owner.Website}}">
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-md-2 control-label">Location</label>
+                    <div class="col-md-8">
+                        <input type="text" name="location" class="form-control" placeholder="Type your current location" value="{{.Owner.Location}}">
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-md-2 control-label">Gravatar Email<strong class="text-danger">*</strong></label>
+                    <div class="col-md-8">
+                        <input type="text" name="avatar" class="form-control" placeholder="Type your Gravatar e-mail address" required="required" value="{{.Owner.AvatarEmail}}">
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <div class="col-md-offset-2 col-md-8">
+                        <button type="submit" class="btn btn-primary">Update Profile</button>
+                    </div>
+                </div>
+            </form>
+        </div>
     </div>
 </div>
 {{template "base/footer" .}}
\ No newline at end of file
diff --git a/web.go b/web.go
index 4712861763d482a3f751cc00cc90c6d93873ceee..1fa19afc171854a0cdf2f6c4928ac6612ee57941 100644 (file)
--- a/web.go
+++ b/web.go
@@ -64,8 +64,7 @@ func runWeb(*cli.Context) {
        m.Get("/user/feeds", binding.Bind(auth.FeedsForm{}), user.Feeds)
 
        m.Any("/user/setting", auth.SignInRequire(true), binding.BindIgnErr(auth.UpdateProfileForm{}), user.Setting)
-       m.Get("/user/setting/email_password",auth.SignInRequire(true),user.SettingEmailPassword)
-       m.Post("/user/setting/update_passwd", auth.SignInRequire(true), binding.BindIgnErr(auth.UpdatePasswdForm{}), user.UpdatePasswd)
+       m.Any("/user/setting/password", auth.SignInRequire(true), binding.BindIgnErr(auth.UpdatePasswdForm{}), user.SettingPassword)
        m.Any("/user/setting/ssh", auth.SignInRequire(true), binding.BindIgnErr(auth.AddSSHKeyForm{}), user.SettingSSHKeys)
 
        m.Get("/user/:username", auth.SignInRequire(false), user.Profile)