mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	finish delete ssh key and delete account. all with confirm.
This commit is contained in:
		| @@ -175,8 +175,8 @@ func DeleteUser(user *User) error { | |||||||
|  |  | ||||||
| // EncodePasswd encodes password to safe format. | // EncodePasswd encodes password to safe format. | ||||||
| func (user *User) EncodePasswd() error { | func (user *User) EncodePasswd() error { | ||||||
| 	newPasswd, err := scrypt.Key([]byte(user.Passwd), []byte(UserPasswdSalt), 16384, 8, 1, 64) | 	var err error | ||||||
| 	user.Passwd = fmt.Sprintf("%x", newPasswd) | 	user.Passwd, err = EncodePasswd(user.Passwd) | ||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -184,6 +184,14 @@ func UserPath(userName string) string { | |||||||
| 	return filepath.Join(RepoRootPath, userName) | 	return filepath.Join(RepoRootPath, userName) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func EncodePasswd(rawPasswd string) (string, error) { | ||||||
|  | 	newPasswd, err := scrypt.Key([]byte(rawPasswd), []byte(UserPasswdSalt), 16384, 8, 1, 64) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return "", err | ||||||
|  | 	} | ||||||
|  | 	return fmt.Sprintf("%x", newPasswd), nil | ||||||
|  | } | ||||||
|  |  | ||||||
| func GetUserByKeyId(keyId int64) (*User, error) { | func GetUserByKeyId(keyId int64) (*User, error) { | ||||||
| 	user := new(User) | 	user := new(User) | ||||||
| 	has, err := orm.Sql("select a.* from user as a, public_key as b where a.id = b.owner_id and b.id=?", keyId).Get(user) | 	has, err := orm.Sql("select a.* from user as a, public_key as b where a.id = b.owner_id and b.id=?", keyId).Get(user) | ||||||
|   | |||||||
| @@ -302,32 +302,23 @@ html, body { | |||||||
| /* gogits user ssh keys */ | /* gogits user ssh keys */ | ||||||
|  |  | ||||||
| #gogs-ssh-keys .list-group-item { | #gogs-ssh-keys .list-group-item { | ||||||
|     line-height: 48px; |     padding: 15px 0; | ||||||
|     border-bottom: 1px solid #DDD; |     border-bottom: 1px solid #DDD; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #gogs-ssh-keys .list-group-item .delete { | ||||||
|  |     margin: -5px 50px 0; | ||||||
|  | } | ||||||
|  |  | ||||||
| #gogs-ssh-keys .list-group-item:after { | #gogs-ssh-keys .list-group-item:after { | ||||||
|     clear: both; |     clear: both; | ||||||
| } | } | ||||||
|  |  | ||||||
| #gogs-ssh-keys .list-group-item:hover a.delete { |  | ||||||
|     display: block; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #gogs-ssh-keys .name { | #gogs-ssh-keys .name { | ||||||
|     font-size: 14px; |     font-size: 14px; | ||||||
|     font-weight: bold; |     font-weight: bold; | ||||||
| } | } | ||||||
|  |  | ||||||
| #gogs-ssh-keys .list-group-item a.delete { |  | ||||||
|     float: right; |  | ||||||
|     color: white; |  | ||||||
|     cursor: pointer; |  | ||||||
|     margin-top: 10px; |  | ||||||
|     border-radius: 3px; |  | ||||||
|     display: none; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #gogs-ssh-keys .print { | #gogs-ssh-keys .print { | ||||||
|     padding-left: 1em; |     padding-left: 1em; | ||||||
|     color: #888; |     color: #888; | ||||||
|   | |||||||
| @@ -99,15 +99,16 @@ function initRegister() { | |||||||
| } | } | ||||||
|  |  | ||||||
| function initUserSetting(){ | function initUserSetting(){ | ||||||
|     $('#gogs-ssh-keys').on("click",".delete",function(){ |     $('#gogs-ssh-keys .delete').confirmation({ | ||||||
|         var $this = $(this); |         singleton: true, | ||||||
|         Gogits.ajaxDelete("",{"id":$this.data("del")},function(json){ |         onConfirm: function(e, $this){ | ||||||
|             if(json.ok){ |             Gogits.ajaxDelete("",{"id":$this.data("del")},function(json){ | ||||||
|                 window.location.reload(); |                 if(json.ok){ | ||||||
|             }else{ |                     window.location.reload(); | ||||||
|                 alert(json.err); |                 }else{ | ||||||
|             } |                     alert(json.err); | ||||||
|         }); |                 } | ||||||
|         return false; |             }); | ||||||
|  |         } | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
							
								
								
									
										261
									
								
								public/js/bootstrap.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										261
									
								
								public/js/bootstrap.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -157,18 +157,28 @@ func Delete(ctx *middleware.Context) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if err := models.DeleteUser(ctx.User); err != nil { | 	rawPasswd := ctx.Query("password") | ||||||
|  | 	encodedPwd, _ := models.EncodePasswd(rawPasswd) | ||||||
|  | 	if len(encodedPwd) == 0 || encodedPwd != ctx.User.Passwd { | ||||||
| 		ctx.Data["HasError"] = true | 		ctx.Data["HasError"] = true | ||||||
| 		switch err.Error() { | 		ctx.Data["ErrorMsg"] = "Your password error. Make sure you are owner of this account." | ||||||
| 		case models.ErrUserOwnRepos.Error(): | 	} else { | ||||||
| 			ctx.Data["ErrorMsg"] = "Your account still have ownership of repository, you have to delete or transfer them first." | 		if err := models.DeleteUser(ctx.User); err != nil { | ||||||
| 		default: | 			ctx.Data["HasError"] = true | ||||||
| 			ctx.Handle(200, "user.Delete", err) | 			switch err { | ||||||
|  | 			case models.ErrUserOwnRepos: | ||||||
|  | 				ctx.Data["ErrorMsg"] = "Your account still have ownership of repository, you have to delete or transfer them first." | ||||||
|  | 			default: | ||||||
|  | 				ctx.Handle(200, "user.Delete", err) | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 		} else { | ||||||
|  | 			ctx.Render.Redirect("/") | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	ctx.Render.Redirect("/", 302) | 	ctx.Render.HTML(200, "user/delete", ctx.Data) | ||||||
| } | } | ||||||
|  |  | ||||||
| const ( | const ( | ||||||
|   | |||||||
| @@ -13,22 +13,33 @@ | |||||||
|         </ul> |         </ul> | ||||||
|     </div> |     </div> | ||||||
|     <div id="gogs-user-setting-container" class="col-md-9"> |     <div id="gogs-user-setting-container" class="col-md-9"> | ||||||
|         <form action="/user/delete" method="post" class="form-horizontal" id="gogs-user-delete"> |         <h4>Delete Account</h4> | ||||||
|             <h4>Delete Account</h4> |         <p class="alert alert-danger">{{if not .HasError}}The operation will delete your account permanently. Sorry to see you go, but we know you'll back soon.{{else}}{{.ErrorMsg}}{{end}}</p> | ||||||
|             <p class="alert alert-danger">{{if not .HasError}}The operation will delete your account permanently. Sorry to see you go, but we know you'll back soon.{{else}}{{.ErrorMsg}}{{end}}</p> |         <div class="form-group"> | ||||||
|             <div class="form-group"> |             <button type="submit" class="btn btn-danger btn-lg" href="#delete-account-modal" id="gogs-delete-account" data-toggle="modal">Delete Account</button> | ||||||
|                 <div class="col-md-3"> |         </div> | ||||||
|                     <button type="submit" class="btn btn-danger btn-lg">Delete Account</button> |     </div> | ||||||
|  |     <div class="modal fade" id="delete-account-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> | ||||||
|  |         <div class="modal-dialog"> | ||||||
|  |             <form action="/user/delete" method="post" class="modal-content" id="gogs-user-delete"> | ||||||
|  |                 <div class="modal-header"> | ||||||
|  |                     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> | ||||||
|  |                     <h4 class="modal-title" id="myModalLabel">Delete Account</h4> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |  | ||||||
|         </form> |                 <div class="modal-body"> | ||||||
|  |                     <div class="form-group"> | ||||||
|  |                         <label>Make sure your are owner of this account. Please enter your password.<strong class="text-danger">*</strong></label> | ||||||
|  |                         <input name="password" class="form-control" type="password" placeholder="Type your account password" required="required"> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |  | ||||||
|  |                 <div class="modal-footer"> | ||||||
|  |                     <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> | ||||||
|  |                     <button type="submit" class="btn btn-danger">Delete</button> | ||||||
|  |                 </div> | ||||||
|  |             </form> | ||||||
|  |         </div> | ||||||
|     </div> |     </div> | ||||||
| </div> | </div> | ||||||
| <script> |  | ||||||
|     $(function(){ |  | ||||||
|        $('#gogs-user-delete').on('submit',function(){ |  | ||||||
|            return confirm("Are you sure ?"); |  | ||||||
|        }) |  | ||||||
|     }); |  | ||||||
| </script> |  | ||||||
| {{template "base/footer" .}} | {{template "base/footer" .}} | ||||||
| @@ -18,12 +18,14 @@ | |||||||
|             <h4>SSH Keys</h4>{{if .AddSSHKeySuccess}} |             <h4>SSH Keys</h4>{{if .AddSSHKeySuccess}} | ||||||
|             <p class="alert alert-success">New SSH Key has been added !</p>{{else if .HasError}}<p class="alert alert-danger">{{.ErrorMsg}}</p>{{end}} |             <p class="alert alert-success">New SSH Key has been added !</p>{{else if .HasError}}<p class="alert alert-danger">{{.ErrorMsg}}</p>{{end}} | ||||||
|             <ul id="gogs-ssh-keys-list" class="list-group"> |             <ul id="gogs-ssh-keys-list" class="list-group"> | ||||||
|                 <li class="list-group-item"><span class="name">SSH Key's name</span></li>{{range .Keys}} |                 <li class="list-group-item"><span class="name">SSH Key's name</span></li> | ||||||
|  |                 {{range .Keys}} | ||||||
|                 <li class="list-group-item"> |                 <li class="list-group-item"> | ||||||
|                     <span class="name">{{.Name}}</span> |                     <span class="name">{{.Name}}</span> | ||||||
|                     <span class="print">({{.Fingerprint}})</span> |                     <span class="print">({{.Fingerprint}})</span> | ||||||
|                     <a href="#" class="btn btn-link btn-danger right delete" rel="{{.Id}}" data-del="{{.Id}}">Delete</a> |                     <button href="#" class="btn btn-danger delete pull-right" rel="{{.Id}}" data-del="{{.Id}}">Delete</button> | ||||||
|                 </li>{{end}} |                 </li> | ||||||
|  |                 {{end}} | ||||||
|                 <li class="list-group-item"> |                 <li class="list-group-item"> | ||||||
|                     <a class="btn btn-link btn-primary" href="#ssh-add-modal" id="gogs-ssh-add" data-toggle="modal">Add SSH Key</a> |                     <a class="btn btn-link btn-primary" href="#ssh-add-modal" id="gogs-ssh-add" data-toggle="modal">Add SSH Key</a> | ||||||
|                 </li> |                 </li> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user